[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