[Mesa-dev] [PATCH v03 16/38] i965: Get real per-gen atom lists
Pohjolainen, Topi
topi.pohjolainen at gmail.com
Wed May 3 17:47:57 UTC 2017
On Mon, May 01, 2017 at 06:43:04PM -0700, Rafael Antognolli wrote:
> From: Kenneth Graunke <kenneth at whitecape.org>
>
> Make atoms initalization compile conditionally based on the target
> platform.
> ---
> src/mesa/drivers/dri/i965/brw_state.h | 12 +-
> src/mesa/drivers/dri/i965/brw_state_upload.c | 385 +-------------------
> src/mesa/drivers/dri/i965/genX_state_upload.c | 340 +++++++++++++++++-
> 3 files changed, 369 insertions(+), 368 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_state.h b/src/mesa/drivers/dri/i965/brw_state.h
> index ec79a4e..008326a 100644
> --- a/src/mesa/drivers/dri/i965/brw_state.h
> +++ b/src/mesa/drivers/dri/i965/brw_state.h
> @@ -441,6 +441,18 @@ void brw_calculate_guardband_size(const struct gen_device_info *devinfo,
> float *xmin, float *xmax,
> float *ymin, float *ymax);
>
> +void brw_copy_pipeline_atoms(struct brw_context *brw,
> + enum brw_pipeline pipeline,
> + const struct brw_tracked_state **atoms,
> + int num_atoms);
> +void gen4_init_atoms(struct brw_context *brw);
> +void gen5_init_atoms(struct brw_context *brw);
> +void gen6_init_atoms(struct brw_context *brw);
> +void gen7_init_atoms(struct brw_context *brw);
> +void gen75_init_atoms(struct brw_context *brw);
> +void gen8_init_atoms(struct brw_context *brw);
> +void gen9_init_atoms(struct brw_context *brw);
> +
> #ifdef __cplusplus
> }
> #endif
> diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c
> index 9c0b82c..6c9c748 100644
> --- a/src/mesa/drivers/dri/i965/brw_state_upload.c
> +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c
> @@ -45,341 +45,6 @@
> #include "brw_cs.h"
> #include "main/framebuffer.h"
>
> -static const struct brw_tracked_state *gen4_atoms[] =
> -{
> - /* Once all the programs are done, we know how large urb entry
> - * sizes need to be and can decide if we need to change the urb
> - * layout.
> - */
> - &brw_curbe_offsets,
> - &brw_recalculate_urb_fence,
> -
> - &brw_cc_vp,
> - &brw_cc_unit,
> -
> - /* Surface state setup. Must come before the VS/WM unit. The binding
> - * table upload must be last.
> - */
> - &brw_vs_pull_constants,
> - &brw_wm_pull_constants,
> - &brw_renderbuffer_surfaces,
> - &brw_renderbuffer_read_surfaces,
> - &brw_texture_surfaces,
> - &brw_vs_binding_table,
> - &brw_wm_binding_table,
> -
> - &brw_fs_samplers,
> - &brw_vs_samplers,
> -
> - /* These set up state for brw_psp_urb_cbs */
> - &brw_wm_unit,
> - &brw_sf_vp,
> - &brw_sf_unit,
> - &brw_vs_unit, /* always required, enabled or not */
> - &brw_clip_unit,
> - &brw_gs_unit,
> -
> - /* Command packets:
> - */
> - &brw_invariant_state,
> -
> - &brw_binding_table_pointers,
> - &brw_blend_constant_color,
> -
> - &brw_depthbuffer,
> -
> - &brw_polygon_stipple,
> - &brw_polygon_stipple_offset,
> -
> - &brw_line_stipple,
> -
> - &brw_psp_urb_cbs,
> -
> - &brw_drawing_rect,
> - &brw_indices, /* must come before brw_vertices */
> - &brw_index_buffer,
> - &brw_vertices,
> -
> - &brw_constant_buffer
> -};
> -
> -static const struct brw_tracked_state *gen6_atoms[] =
> -{
> - &gen6_sf_and_clip_viewports,
> -
> - /* Command packets: */
> -
> - &brw_cc_vp,
> - &gen6_viewport_state, /* must do after *_vp stages */
> -
> - &gen6_urb,
> - &gen6_blend_state, /* must do before cc unit */
> - &gen6_color_calc_state, /* must do before cc unit */
> - &gen6_depth_stencil_state, /* must do before cc unit */
> -
> - &gen6_vs_push_constants, /* Before vs_state */
> - &gen6_gs_push_constants, /* Before gs_state */
> - &gen6_wm_push_constants, /* Before wm_state */
> -
> - /* Surface state setup. Must come before the VS/WM unit. The binding
> - * table upload must be last.
> - */
> - &brw_vs_pull_constants,
> - &brw_vs_ubo_surfaces,
> - &brw_gs_pull_constants,
> - &brw_gs_ubo_surfaces,
> - &brw_wm_pull_constants,
> - &brw_wm_ubo_surfaces,
> - &gen6_renderbuffer_surfaces,
> - &brw_renderbuffer_read_surfaces,
> - &brw_texture_surfaces,
> - &gen6_sol_surface,
> - &brw_vs_binding_table,
> - &gen6_gs_binding_table,
> - &brw_wm_binding_table,
> -
> - &brw_fs_samplers,
> - &brw_vs_samplers,
> - &brw_gs_samplers,
> - &gen6_sampler_state,
> - &gen6_multisample_state,
> -
> - &gen6_vs_state,
> - &gen6_gs_state,
> - &gen6_clip_state,
> - &gen6_sf_state,
> - &gen6_wm_state,
> -
> - &gen6_scissor_state,
> -
> - &gen6_binding_table_pointers,
> -
> - &brw_depthbuffer,
> -
> - &brw_polygon_stipple,
> - &brw_polygon_stipple_offset,
> -
> - &brw_line_stipple,
> -
> - &brw_drawing_rect,
> -
> - &brw_indices, /* must come before brw_vertices */
> - &brw_index_buffer,
> - &brw_vertices,
> -};
> -
> -static const struct brw_tracked_state *gen7_render_atoms[] =
> -{
> - /* Command packets: */
> -
> - &brw_cc_vp,
> - &gen7_sf_clip_viewport,
> -
> - &gen7_l3_state,
> - &gen7_push_constant_space,
> - &gen7_urb,
> - &gen6_blend_state, /* must do before cc unit */
> - &gen6_color_calc_state, /* must do before cc unit */
> - &gen6_depth_stencil_state, /* must do before cc unit */
> -
> - &brw_vs_image_surfaces, /* Before vs push/pull constants and binding table */
> - &brw_tcs_image_surfaces, /* Before tcs push/pull constants and binding table */
> - &brw_tes_image_surfaces, /* Before tes push/pull constants and binding table */
> - &brw_gs_image_surfaces, /* Before gs push/pull constants and binding table */
> - &brw_wm_image_surfaces, /* Before wm push/pull constants and binding table */
> -
> - &gen6_vs_push_constants, /* Before vs_state */
> - &gen7_tcs_push_constants,
> - &gen7_tes_push_constants,
> - &gen6_gs_push_constants, /* Before gs_state */
> - &gen6_wm_push_constants, /* Before wm_surfaces and constant_buffer */
> -
> - /* Surface state setup. Must come before the VS/WM unit. The binding
> - * table upload must be last.
> - */
> - &brw_vs_pull_constants,
> - &brw_vs_ubo_surfaces,
> - &brw_vs_abo_surfaces,
> - &brw_tcs_pull_constants,
> - &brw_tcs_ubo_surfaces,
> - &brw_tcs_abo_surfaces,
> - &brw_tes_pull_constants,
> - &brw_tes_ubo_surfaces,
> - &brw_tes_abo_surfaces,
> - &brw_gs_pull_constants,
> - &brw_gs_ubo_surfaces,
> - &brw_gs_abo_surfaces,
> - &brw_wm_pull_constants,
> - &brw_wm_ubo_surfaces,
> - &brw_wm_abo_surfaces,
> - &gen6_renderbuffer_surfaces,
> - &brw_renderbuffer_read_surfaces,
> - &brw_texture_surfaces,
> - &brw_vs_binding_table,
> - &brw_tcs_binding_table,
> - &brw_tes_binding_table,
> - &brw_gs_binding_table,
> - &brw_wm_binding_table,
> -
> - &brw_fs_samplers,
> - &brw_vs_samplers,
> - &brw_tcs_samplers,
> - &brw_tes_samplers,
> - &brw_gs_samplers,
> - &gen6_multisample_state,
> -
> - &gen7_vs_state,
> - &gen7_hs_state,
> - &gen7_te_state,
> - &gen7_ds_state,
> - &gen7_gs_state,
> - &gen7_sol_state,
> - &gen6_clip_state,
> - &gen7_sbe_state,
> - &gen7_sf_state,
> - &gen7_wm_state,
> - &gen7_ps_state,
> -
> - &gen6_scissor_state,
> -
> - &gen7_depthbuffer,
> -
> - &brw_polygon_stipple,
> - &brw_polygon_stipple_offset,
> -
> - &brw_line_stipple,
> -
> - &brw_drawing_rect,
> -
> - &brw_indices, /* must come before brw_vertices */
> - &brw_index_buffer,
> - &brw_vertices,
> -
> - &haswell_cut_index,
> -};
> -
> -static const struct brw_tracked_state *gen7_compute_atoms[] =
> -{
> - &gen7_l3_state,
> - &brw_cs_image_surfaces,
> - &gen7_cs_push_constants,
> - &brw_cs_pull_constants,
> - &brw_cs_ubo_surfaces,
> - &brw_cs_abo_surfaces,
> - &brw_cs_texture_surfaces,
> - &brw_cs_work_groups_surface,
> - &brw_cs_samplers,
> - &brw_cs_state,
> -};
> -
> -static const struct brw_tracked_state *gen8_render_atoms[] =
> -{
> - &brw_cc_vp,
> - &gen8_sf_clip_viewport,
> -
> - &gen7_l3_state,
> - &gen7_push_constant_space,
> - &gen7_urb,
> - &gen8_blend_state,
> - &gen6_color_calc_state,
> -
> - &brw_vs_image_surfaces, /* Before vs push/pull constants and binding table */
> - &brw_tcs_image_surfaces, /* Before tcs push/pull constants and binding table */
> - &brw_tes_image_surfaces, /* Before tes push/pull constants and binding table */
> - &brw_gs_image_surfaces, /* Before gs push/pull constants and binding table */
> - &brw_wm_image_surfaces, /* Before wm push/pull constants and binding table */
> -
> - &gen6_vs_push_constants, /* Before vs_state */
> - &gen7_tcs_push_constants,
> - &gen7_tes_push_constants,
> - &gen6_gs_push_constants, /* Before gs_state */
> - &gen6_wm_push_constants, /* Before wm_surfaces and constant_buffer */
> -
> - /* Surface state setup. Must come before the VS/WM unit. The binding
> - * table upload must be last.
> - */
> - &brw_vs_pull_constants,
> - &brw_vs_ubo_surfaces,
> - &brw_vs_abo_surfaces,
> - &brw_tcs_pull_constants,
> - &brw_tcs_ubo_surfaces,
> - &brw_tcs_abo_surfaces,
> - &brw_tes_pull_constants,
> - &brw_tes_ubo_surfaces,
> - &brw_tes_abo_surfaces,
> - &brw_gs_pull_constants,
> - &brw_gs_ubo_surfaces,
> - &brw_gs_abo_surfaces,
> - &brw_wm_pull_constants,
> - &brw_wm_ubo_surfaces,
> - &brw_wm_abo_surfaces,
> - &gen6_renderbuffer_surfaces,
> - &brw_renderbuffer_read_surfaces,
> - &brw_texture_surfaces,
> - &brw_vs_binding_table,
> - &brw_tcs_binding_table,
> - &brw_tes_binding_table,
> - &brw_gs_binding_table,
> - &brw_wm_binding_table,
> -
> - &brw_fs_samplers,
> - &brw_vs_samplers,
> - &brw_tcs_samplers,
> - &brw_tes_samplers,
> - &brw_gs_samplers,
> - &gen8_multisample_state,
> -
> - &gen8_vs_state,
> - &gen8_hs_state,
> - &gen7_te_state,
> - &gen8_ds_state,
> - &gen8_gs_state,
> - &gen7_sol_state,
> - &gen6_clip_state,
> - &gen8_raster_state,
> - &gen8_sbe_state,
> - &gen8_sf_state,
> - &gen8_ps_blend,
> - &gen8_ps_extra,
> - &gen8_ps_state,
> - &gen8_wm_depth_stencil,
> - &gen8_wm_state,
> -
> - &gen6_scissor_state,
> -
> - &gen7_depthbuffer,
> -
> - &brw_polygon_stipple,
> - &brw_polygon_stipple_offset,
> -
> - &brw_line_stipple,
> -
> - &brw_drawing_rect,
> -
> - &gen8_vf_topology,
> -
> - &brw_indices,
> - &gen8_index_buffer,
> - &gen8_vertices,
> -
> - &haswell_cut_index,
> - &gen8_pma_fix,
> -};
> -
> -static const struct brw_tracked_state *gen8_compute_atoms[] =
> -{
> - &gen7_l3_state,
> - &brw_cs_image_surfaces,
> - &gen7_cs_push_constants,
> - &brw_cs_pull_constants,
> - &brw_cs_ubo_surfaces,
> - &brw_cs_abo_surfaces,
> - &brw_cs_texture_surfaces,
> - &brw_cs_work_groups_surface,
> - &brw_cs_samplers,
> - &brw_cs_state,
> -};
> -
> static void
> brw_upload_initial_gpu_state(struct brw_context *brw)
> {
> @@ -439,7 +104,7 @@ brw_get_pipeline_atoms(struct brw_context *brw,
> }
> }
>
> -static void
> +void
> brw_copy_pipeline_atoms(struct brw_context *brw,
> enum brw_pipeline pipeline,
> const struct brw_tracked_state **atoms,
> @@ -467,40 +132,24 @@ void brw_init_state( struct brw_context *brw )
> /* Force the first brw_select_pipeline to emit pipeline select */
> brw->last_pipeline = BRW_NUM_PIPELINES;
>
> - STATIC_ASSERT(ARRAY_SIZE(gen4_atoms) <= ARRAY_SIZE(brw->render_atoms));
> - STATIC_ASSERT(ARRAY_SIZE(gen6_atoms) <= ARRAY_SIZE(brw->render_atoms));
> - STATIC_ASSERT(ARRAY_SIZE(gen7_render_atoms) <=
> - ARRAY_SIZE(brw->render_atoms));
> - STATIC_ASSERT(ARRAY_SIZE(gen8_render_atoms) <=
> - ARRAY_SIZE(brw->render_atoms));
> - STATIC_ASSERT(ARRAY_SIZE(gen7_compute_atoms) <=
> - ARRAY_SIZE(brw->compute_atoms));
> - STATIC_ASSERT(ARRAY_SIZE(gen8_compute_atoms) <=
> - ARRAY_SIZE(brw->compute_atoms));
> -
> brw_init_caches(brw);
>
> - if (brw->gen >= 8) {
> - brw_copy_pipeline_atoms(brw, BRW_RENDER_PIPELINE,
> - gen8_render_atoms,
> - ARRAY_SIZE(gen8_render_atoms));
> - brw_copy_pipeline_atoms(brw, BRW_COMPUTE_PIPELINE,
> - gen8_compute_atoms,
> - ARRAY_SIZE(gen8_compute_atoms));
> - } else if (brw->gen == 7) {
> - brw_copy_pipeline_atoms(brw, BRW_RENDER_PIPELINE,
> - gen7_render_atoms,
> - ARRAY_SIZE(gen7_render_atoms));
> - brw_copy_pipeline_atoms(brw, BRW_COMPUTE_PIPELINE,
> - gen7_compute_atoms,
> - ARRAY_SIZE(gen7_compute_atoms));
> - } else if (brw->gen == 6) {
> - brw_copy_pipeline_atoms(brw, BRW_RENDER_PIPELINE,
> - gen6_atoms, ARRAY_SIZE(gen6_atoms));
> - } else {
> - brw_copy_pipeline_atoms(brw, BRW_RENDER_PIPELINE,
> - gen4_atoms, ARRAY_SIZE(gen4_atoms));
> - }
> + if (brw->gen >= 9)
> + gen9_init_atoms(brw);
> + else if (brw->gen >= 8)
> + gen8_init_atoms(brw);
> + else if (brw->is_haswell)
> + gen75_init_atoms(brw);
> + else if (brw->gen >= 7)
> + gen7_init_atoms(brw);
> + else if (brw->gen >= 6)
> + gen6_init_atoms(brw);
> + else if (brw->gen >= 5)
> + gen5_init_atoms(brw);
> + else if (brw->is_g4x)
> + gen45_init_atoms(brw);
> + else
> + gen4_init_atoms(brw);
>
> brw_upload_initial_gpu_state(brw);
>
> diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c
> index ec571d5..b0487f9 100644
> --- a/src/mesa/drivers/dri/i965/genX_state_upload.c
> +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c
> @@ -107,3 +107,343 @@ __gen_combine_address(struct brw_context *brw, void *location,
> _dst = NULL)
>
> /* ---------------------------------------------------------------------- */
> +
> +
> +/* ---------------------------------------------------------------------- */
> +
> +void
> +genX(init_atoms)(struct brw_context *brw)
> +{
> +#if GEN_GEN < 6
> + static const struct brw_tracked_state *render_atoms[] =
> + {
Given that the assert and the dispatch of copy in the end is common code and
expects all the if-else blocks to agree on the name "render_atoms", we could
have that outside the if-else ladder as well. Just a thought, either way:
Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
> + /* Once all the programs are done, we know how large urb entry
> + * sizes need to be and can decide if we need to change the urb
> + * layout.
> + */
> + &brw_curbe_offsets,
> + &brw_recalculate_urb_fence,
> +
> + &brw_cc_vp,
> + &brw_cc_unit,
> +
> + /* Surface state setup. Must come before the VS/WM unit. The binding
> + * table upload must be last.
> + */
> + &brw_vs_pull_constants,
> + &brw_wm_pull_constants,
> + &brw_renderbuffer_surfaces,
> + &brw_renderbuffer_read_surfaces,
> + &brw_texture_surfaces,
> + &brw_vs_binding_table,
> + &brw_wm_binding_table,
> +
> + &brw_fs_samplers,
> + &brw_vs_samplers,
> +
> + /* These set up state for brw_psp_urb_cbs */
> + &brw_wm_unit,
> + &brw_sf_vp,
> + &brw_sf_unit,
> + &brw_vs_unit, /* always required, enabled or not */
> + &brw_clip_unit,
> + &brw_gs_unit,
> +
> + /* Command packets:
> + */
> + &brw_invariant_state,
> +
> + &brw_binding_table_pointers,
> + &brw_blend_constant_color,
> +
> + &brw_depthbuffer,
> +
> + &brw_polygon_stipple,
> + &brw_polygon_stipple_offset,
> +
> + &brw_line_stipple,
> +
> + &brw_psp_urb_cbs,
> +
> + &brw_drawing_rect,
> + &brw_indices, /* must come before brw_vertices */
> + &brw_index_buffer,
> + &brw_vertices,
> +
> + &brw_constant_buffer
> + };
> +#elif GEN_GEN == 6
> + static const struct brw_tracked_state *render_atoms[] =
> + {
> + &gen6_sf_and_clip_viewports,
> +
> + /* Command packets: */
> +
> + &brw_cc_vp,
> + &gen6_viewport_state, /* must do after *_vp stages */
> +
> + &gen6_urb,
> + &gen6_blend_state, /* must do before cc unit */
> + &gen6_color_calc_state, /* must do before cc unit */
> + &gen6_depth_stencil_state, /* must do before cc unit */
> +
> + &gen6_vs_push_constants, /* Before vs_state */
> + &gen6_gs_push_constants, /* Before gs_state */
> + &gen6_wm_push_constants, /* Before wm_state */
> +
> + /* Surface state setup. Must come before the VS/WM unit. The binding
> + * table upload must be last.
> + */
> + &brw_vs_pull_constants,
> + &brw_vs_ubo_surfaces,
> + &brw_gs_pull_constants,
> + &brw_gs_ubo_surfaces,
> + &brw_wm_pull_constants,
> + &brw_wm_ubo_surfaces,
> + &gen6_renderbuffer_surfaces,
> + &brw_renderbuffer_read_surfaces,
> + &brw_texture_surfaces,
> + &gen6_sol_surface,
> + &brw_vs_binding_table,
> + &gen6_gs_binding_table,
> + &brw_wm_binding_table,
> +
> + &brw_fs_samplers,
> + &brw_vs_samplers,
> + &brw_gs_samplers,
> + &gen6_sampler_state,
> + &gen6_multisample_state,
> +
> + &gen6_vs_state,
> + &gen6_gs_state,
> + &gen6_clip_state,
> + &gen6_sf_state,
> + &gen6_wm_state,
> +
> + &gen6_scissor_state,
> +
> + &gen6_binding_table_pointers,
> +
> + &brw_depthbuffer,
> +
> + &brw_polygon_stipple,
> + &brw_polygon_stipple_offset,
> +
> + &brw_line_stipple,
> +
> + &brw_drawing_rect,
> +
> + &brw_indices, /* must come before brw_vertices */
> + &brw_index_buffer,
> + &brw_vertices,
> + };
> +#elif GEN_GEN == 7
> + static const struct brw_tracked_state *render_atoms[] =
> + {
> + /* Command packets: */
> +
> + &brw_cc_vp,
> + &gen7_sf_clip_viewport,
> +
> + &gen7_l3_state,
> + &gen7_push_constant_space,
> + &gen7_urb,
> + &gen6_blend_state, /* must do before cc unit */
> + &gen6_color_calc_state, /* must do before cc unit */
> + &gen6_depth_stencil_state, /* must do before cc unit */
> +
> + &brw_vs_image_surfaces, /* Before vs push/pull constants and binding table */
> + &brw_tcs_image_surfaces, /* Before tcs push/pull constants and binding table */
> + &brw_tes_image_surfaces, /* Before tes push/pull constants and binding table */
> + &brw_gs_image_surfaces, /* Before gs push/pull constants and binding table */
> + &brw_wm_image_surfaces, /* Before wm push/pull constants and binding table */
> +
> + &gen6_vs_push_constants, /* Before vs_state */
> + &gen7_tcs_push_constants,
> + &gen7_tes_push_constants,
> + &gen6_gs_push_constants, /* Before gs_state */
> + &gen6_wm_push_constants, /* Before wm_surfaces and constant_buffer */
> +
> + /* Surface state setup. Must come before the VS/WM unit. The binding
> + * table upload must be last.
> + */
> + &brw_vs_pull_constants,
> + &brw_vs_ubo_surfaces,
> + &brw_vs_abo_surfaces,
> + &brw_tcs_pull_constants,
> + &brw_tcs_ubo_surfaces,
> + &brw_tcs_abo_surfaces,
> + &brw_tes_pull_constants,
> + &brw_tes_ubo_surfaces,
> + &brw_tes_abo_surfaces,
> + &brw_gs_pull_constants,
> + &brw_gs_ubo_surfaces,
> + &brw_gs_abo_surfaces,
> + &brw_wm_pull_constants,
> + &brw_wm_ubo_surfaces,
> + &brw_wm_abo_surfaces,
> + &gen6_renderbuffer_surfaces,
> + &brw_renderbuffer_read_surfaces,
> + &brw_texture_surfaces,
> + &brw_vs_binding_table,
> + &brw_tcs_binding_table,
> + &brw_tes_binding_table,
> + &brw_gs_binding_table,
> + &brw_wm_binding_table,
> +
> + &brw_fs_samplers,
> + &brw_vs_samplers,
> + &brw_tcs_samplers,
> + &brw_tes_samplers,
> + &brw_gs_samplers,
> + &gen6_multisample_state,
> +
> + &gen7_vs_state,
> + &gen7_hs_state,
> + &gen7_te_state,
> + &gen7_ds_state,
> + &gen7_gs_state,
> + &gen7_sol_state,
> + &gen6_clip_state,
> + &gen7_sbe_state,
> + &gen7_sf_state,
> + &gen7_wm_state,
> + &gen7_ps_state,
> +
> + &gen6_scissor_state,
> +
> + &gen7_depthbuffer,
> +
> + &brw_polygon_stipple,
> + &brw_polygon_stipple_offset,
> +
> + &brw_line_stipple,
> +
> + &brw_drawing_rect,
> +
> + &brw_indices, /* must come before brw_vertices */
> + &brw_index_buffer,
> + &brw_vertices,
> +
> + &haswell_cut_index,
> + };
> +#elif GEN_GEN >= 8
> + static const struct brw_tracked_state *render_atoms[] =
> + {
> + &brw_cc_vp,
> + &gen8_sf_clip_viewport,
> +
> + &gen7_l3_state,
> + &gen7_push_constant_space,
> + &gen7_urb,
> + &gen8_blend_state,
> + &gen6_color_calc_state,
> +
> + &brw_vs_image_surfaces, /* Before vs push/pull constants and binding table */
> + &brw_tcs_image_surfaces, /* Before tcs push/pull constants and binding table */
> + &brw_tes_image_surfaces, /* Before tes push/pull constants and binding table */
> + &brw_gs_image_surfaces, /* Before gs push/pull constants and binding table */
> + &brw_wm_image_surfaces, /* Before wm push/pull constants and binding table */
> +
> + &gen6_vs_push_constants, /* Before vs_state */
> + &gen7_tcs_push_constants,
> + &gen7_tes_push_constants,
> + &gen6_gs_push_constants, /* Before gs_state */
> + &gen6_wm_push_constants, /* Before wm_surfaces and constant_buffer */
> +
> + /* Surface state setup. Must come before the VS/WM unit. The binding
> + * table upload must be last.
> + */
> + &brw_vs_pull_constants,
> + &brw_vs_ubo_surfaces,
> + &brw_vs_abo_surfaces,
> + &brw_tcs_pull_constants,
> + &brw_tcs_ubo_surfaces,
> + &brw_tcs_abo_surfaces,
> + &brw_tes_pull_constants,
> + &brw_tes_ubo_surfaces,
> + &brw_tes_abo_surfaces,
> + &brw_gs_pull_constants,
> + &brw_gs_ubo_surfaces,
> + &brw_gs_abo_surfaces,
> + &brw_wm_pull_constants,
> + &brw_wm_ubo_surfaces,
> + &brw_wm_abo_surfaces,
> + &gen6_renderbuffer_surfaces,
> + &brw_renderbuffer_read_surfaces,
> + &brw_texture_surfaces,
> + &brw_vs_binding_table,
> + &brw_tcs_binding_table,
> + &brw_tes_binding_table,
> + &brw_gs_binding_table,
> + &brw_wm_binding_table,
> +
> + &brw_fs_samplers,
> + &brw_vs_samplers,
> + &brw_tcs_samplers,
> + &brw_tes_samplers,
> + &brw_gs_samplers,
> + &gen8_multisample_state,
> +
> + &gen8_vs_state,
> + &gen8_hs_state,
> + &gen7_te_state,
> + &gen8_ds_state,
> + &gen8_gs_state,
> + &gen7_sol_state,
> + &gen6_clip_state,
> + &gen8_raster_state,
> + &gen8_sbe_state,
> + &gen8_sf_state,
> + &gen8_ps_blend,
> + &gen8_ps_extra,
> + &gen8_ps_state,
> + &gen8_wm_depth_stencil,
> + &gen8_wm_state,
> +
> + &gen6_scissor_state,
> +
> + &gen7_depthbuffer,
> +
> + &brw_polygon_stipple,
> + &brw_polygon_stipple_offset,
> +
> + &brw_line_stipple,
> +
> + &brw_drawing_rect,
> +
> + &gen8_vf_topology,
> +
> + &brw_indices,
> + &gen8_index_buffer,
> + &gen8_vertices,
> +
> + &haswell_cut_index,
> + &gen8_pma_fix,
> + };
> +#endif
> +
> + STATIC_ASSERT(ARRAY_SIZE(render_atoms) <= ARRAY_SIZE(brw->render_atoms));
> + brw_copy_pipeline_atoms(brw, BRW_RENDER_PIPELINE,
> + render_atoms, ARRAY_SIZE(render_atoms));
> +
> +#if GEN_GEN >= 7
> + static const struct brw_tracked_state *compute_atoms[] =
> + {
> + &gen7_l3_state,
> + &brw_cs_image_surfaces,
> + &gen7_cs_push_constants,
> + &brw_cs_pull_constants,
> + &brw_cs_ubo_surfaces,
> + &brw_cs_abo_surfaces,
> + &brw_cs_texture_surfaces,
> + &brw_cs_work_groups_surface,
> + &brw_cs_samplers,
> + &brw_cs_state,
> + };
> +
> + STATIC_ASSERT(ARRAY_SIZE(compute_atoms) <= ARRAY_SIZE(brw->compute_atoms));
> + brw_copy_pipeline_atoms(brw, BRW_COMPUTE_PIPELINE,
> + compute_atoms, ARRAY_SIZE(compute_atoms));
> +#endif
> +}
> --
> git-series 0.9.1
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list