Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com> --- src/mesa/drivers/dri/i965/brw_atoms.h | 265 +++++++++++++ src/mesa/drivers/dri/i965/brw_state_upload.c | 556 ++++++++++++++------------- 2 files changed, 556 insertions(+), 265 deletions(-) create mode 100644 src/mesa/drivers/dri/i965/brw_atoms.h
diff --git a/src/mesa/drivers/dri/i965/brw_atoms.h b/src/mesa/drivers/dri/i965/brw_atoms.h new file mode 100644 index 0000000..82145f1 --- /dev/null +++ b/src/mesa/drivers/dri/i965/brw_atoms.h @@ -0,0 +1,265 @@ +/* + * Copyright © 2016 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#ifndef BRW_ATOMS_H +#define BRW_ATOMS_H + +enum gen4_render_atom { + GEN4_ATOM_INTERPOLATION_MAP, + GEN4_ATOM_CLIP_PROG, + GEN4_ATOM_SF_PROG, + GEN4_ATOM_CURBE_OFFSETS, + GEN4_ATOM_RECALCULATE_URB_FENCE, + GEN4_ATOM_CC_VP, + GEN4_ATOM_CC_UNIT, + GEN4_ATOM_VS_PULL_CONSTANTS, + GEN4_ATOM_WM_PULL_CONSTANTS, + GEN4_ATOM_RENDERBUFFER_SURFACES, + GEN4_ATOM_TEXTURE_SURFACES, + GEN4_ATOM_VS_BINDING_TABLE, + GEN4_ATOM_WM_BINDING_TABLE, + GEN4_ATOM_FS_SAMPLERS, + GEN4_ATOM_VS_SAMPLERS, + GEN4_ATOM_WM_UNIT, + GEN4_ATOM_SF_VP, + GEN4_ATOM_SF_UNIT, + GEN4_ATOM_VS_UNIT, + GEN4_ATOM_CLIP_UNIT, + GEN4_ATOM_GS_UNIT, + GEN4_ATOM_INVARIANT_STATE, + GEN4_ATOM_STATE_BASE_ADDRESS, + GEN4_ATOM_BINDING_TABLE_POINTERS, + GEN4_ATOM_BLEND_CONSTANT_COLOR, + GEN4_ATOM_DEPTHBUFFER, + GEN4_ATOM_POLYGON_STIPPLE, + GEN4_ATOM_POLYGON_STIPPLE_OFFSET, + GEN4_ATOM_LINE_STIPPLE, + GEN4_ATOM_AA_LINE_PARAMETERS, + GEN4_ATOM_PSP_URB_CBS, + GEN4_ATOM_DRAWING_RECT, + GEN4_ATOM_INDICES, + GEN4_ATOM_INDEX_BUFFER, + GEN4_ATOM_VERTICES, + GEN4_ATOM_CONSTANT_BUFFER, +}; + +enum gen6_render_atom { + GEN6_ATOM_CLIP_VP, + GEN6_ATOM_SF_VP, + GEN6_ATOM_STATE_BASE_ADDRESS, + GEN6_ATOM_CC_VP, + GEN6_ATOM_VIEWPORT_STATE, + GEN6_ATOM_URB, + GEN6_ATOM_BLEND_STATE, + GEN6_ATOM_COLOR_CALC_STATE, + GEN6_ATOM_DEPTH_STENCIL_STATE, + GEN6_ATOM_VS_PUSH_CONSTANTS, + GEN6_ATOM_GS_PUSH_CONSTANTS, + GEN6_ATOM_WM_PUSH_CONSTANTS, + GEN6_ATOM_VS_PULL_CONSTANTS, + GEN6_ATOM_VS_UBO_SURFACES, + GEN6_ATOM_GS_PULL_CONSTANTS, + GEN6_ATOM_GS_UBO_SURFACES, + GEN6_ATOM_WM_PULL_CONSTANTS, + GEN6_ATOM_WM_UBO_SURFACES, + GEN6_ATOM_RENDERBUFFER_SURFACES, + GEN6_ATOM_TEXTURE_SURFACES, + GEN6_ATOM_SOL_SURFACE, + GEN6_ATOM_VS_BINDING_TABLE, + GEN6_ATOM_GS_BINDING_TABLE, + GEN6_ATOM_WM_BINDING_TABLE, + GEN6_ATOM_FS_SAMPLERS, + GEN6_ATOM_VS_SAMPLERS, + GEN6_ATOM_GS_SAMPLERS, + GEN6_ATOM_SAMPLER_STATE, + GEN6_ATOM_MULTISAMPLE_STATE, + GEN6_ATOM_VS_STATE, + GEN6_ATOM_GS_STATE, + GEN6_ATOM_CLIP_STATE, + GEN6_ATOM_SF_STATE, + GEN6_ATOM_WM_STATE, + GEN6_ATOM_SCISSOR_STATE, + GEN6_ATOM_BINDING_TABLE_POINTERS, + GEN6_ATOM_DEPTHBUFFER, + GEN6_ATOM_POLYGON_STIPPLE, + GEN6_ATOM_POLYGON_STIPPLE_OFFSET, + GEN6_ATOM_LINE_STIPPLE, + GEN6_ATOM_AA_LINE_PARAMETERS, + GEN6_ATOM_DRAWING_RECT, + GEN6_ATOM_INDICES, + GEN6_ATOM_INDEX_BUFFER, + GEN6_ATOM_VERTICES, +}; + +enum gen7_render_atom { + GEN7_ATOM_STATE_BASE_ADDRESS, + GEN7_ATOM_CC_VP, + GEN7_ATOM_SF_CLIP_VIEWPORT, + GEN7_ATOM_L3_STATE, + GEN7_ATOM_PUSH_CONSTANT_SPACE, + GEN7_ATOM_URB, + GEN7_ATOM_BLEND_STATE, + GEN7_ATOM_COLOR_CALC_STATE, + GEN7_ATOM_DEPTH_STENCIL_STATE, + GEN7_ATOM_HW_BINDING_TABLES, + GEN7_ATOM_VS_IMAGE_SURFACES, + GEN7_ATOM_TCS_IMAGE_SURFACES, + GEN7_ATOM_TES_IMAGE_SURFACES, + GEN7_ATOM_GS_IMAGE_SURFACES, + GEN7_ATOM_WM_IMAGE_SURFACES, + GEN7_ATOM_VS_PUSH_CONSTANTS, + GEN7_ATOM_TCS_PUSH_CONSTANTS, + GEN7_ATOM_TES_PUSH_CONSTANTS, + GEN7_ATOM_GS_PUSH_CONSTANTS, + GEN7_ATOM_WM_PUSH_CONSTANTS, + GEN7_ATOM_VS_PULL_CONSTANTS, + GEN7_ATOM_VS_UBO_SURFACES, + GEN7_ATOM_VS_ABO_SURFACES, + GEN7_ATOM_TCS_PULL_CONSTANTS, + GEN7_ATOM_TCS_UBO_SURFACES, + GEN7_ATOM_TCS_ABO_SURFACES, + GEN7_ATOM_TES_PULL_CONSTANTS, + GEN7_ATOM_TES_UBO_SURFACES, + GEN7_ATOM_TES_ABO_SURFACES, + GEN7_ATOM_GS_PULL_CONSTANTS, + GEN7_ATOM_GS_UBO_SURFACES, + GEN7_ATOM_GS_ABO_SURFACES, + GEN7_ATOM_WM_PULL_CONSTANTS, + GEN7_ATOM_WM_UBO_SURFACES, + GEN7_ATOM_WM_ABO_SURFACES, + GEN7_ATOM_RENDERBUFFER_SURFACES, + GEN7_ATOM_TEXTURE_SURFACES, + GEN7_ATOM_VS_BINDING_TABLE, + GEN7_ATOM_TCS_BINDING_TABLE, + GEN7_ATOM_TES_BINDING_TABLE, + GEN7_ATOM_GS_BINDING_TABLE, + GEN7_ATOM_WM_BINDING_TABLE, + GEN7_ATOM_FS_SAMPLERS, + GEN7_ATOM_VS_SAMPLERS, + GEN7_ATOM_TCS_SAMPLERS, + GEN7_ATOM_TES_SAMPLERS, + GEN7_ATOM_GS_SAMPLERS, + GEN7_ATOM_MULTISAMPLE_STATE, + GEN7_ATOM_VS_STATE, + GEN7_ATOM_HS_STATE, + GEN7_ATOM_TE_STATE, + GEN7_ATOM_DS_STATE, + GEN7_ATOM_GS_STATE, + GEN7_ATOM_SOL_STATE, + GEN7_ATOM_CLIP_STATE, + GEN7_ATOM_SBE_STATE, + GEN7_ATOM_SF_STATE, + GEN7_ATOM_WM_STATE, + GEN7_ATOM_PS_STATE, + GEN7_ATOM_SCISSOR_STATE, + GEN7_ATOM_DEPTHBUFFER, + GEN7_ATOM_POLYGON_STIPPLE, + GEN7_ATOM_POLYGON_STIPPLE_OFFSET, + GEN7_ATOM_LINE_STIPPLE, + GEN7_ATOM_AA_LINE_PARAMETERS, + GEN7_ATOM_DRAWING_RECT, + GEN7_ATOM_INDICES, + GEN7_ATOM_INDEX_BUFFER, + GEN7_ATOM_VERTICES, + GEN7_ATOM_HASWELL_CUT_INDEX, +}; + +enum gen8_render_atom { + GEN8_ATOM_STATE_BASE_ADDRESS, + GEN8_ATOM_CC_VP, + GEN8_ATOM_SF_CLIP_VIEWPORT, + GEN8_ATOM_L3_STATE, + GEN8_ATOM_PUSH_CONSTANT_SPACE, + GEN8_ATOM_URB, + GEN8_ATOM_BLEND_STATE, + GEN8_ATOM_COLOR_CALC_STATE, + GEN8_ATOM_HW_BINDING_TABLES, + GEN8_ATOM_VS_IMAGE_SURFACES, + GEN8_ATOM_TCS_IMAGE_SURFACES, + GEN8_ATOM_TES_IMAGE_SURFACES, + GEN8_ATOM_GS_IMAGE_SURFACES, + GEN8_ATOM_WM_IMAGE_SURFACES, + GEN8_ATOM_VS_PUSH_CONSTANTS, + GEN8_ATOM_TCS_PUSH_CONSTANTS, + GEN8_ATOM_TES_PUSH_CONSTANTS, + GEN8_ATOM_GS_PUSH_CONSTANTS, + GEN8_ATOM_WM_PUSH_CONSTANTS, + GEN8_ATOM_VS_PULL_CONSTANTS, + GEN8_ATOM_VS_UBO_SURFACES, + GEN8_ATOM_VS_ABO_SURFACES, + GEN8_ATOM_TCS_PULL_CONSTANTS, + GEN8_ATOM_TCS_UBO_SURFACES, + GEN8_ATOM_TCS_ABO_SURFACES, + GEN8_ATOM_TES_PULL_CONSTANTS, + GEN8_ATOM_TES_UBO_SURFACES, + GEN8_ATOM_TES_ABO_SURFACES, + GEN8_ATOM_GS_PULL_CONSTANTS, + GEN8_ATOM_GS_UBO_SURFACES, + GEN8_ATOM_GS_ABO_SURFACES, + GEN8_ATOM_WM_PULL_CONSTANTS, + GEN8_ATOM_WM_UBO_SURFACES, + GEN8_ATOM_WM_ABO_SURFACES, + GEN8_ATOM_RENDERBUFFER_SURFACES, + GEN8_ATOM_TEXTURE_SURFACES, + GEN8_ATOM_VS_BINDING_TABLE, + GEN8_ATOM_TCS_BINDING_TABLE, + GEN8_ATOM_TES_BINDING_TABLE, + GEN8_ATOM_GS_BINDING_TABLE, + GEN8_ATOM_WM_BINDING_TABLE, + GEN8_ATOM_FS_SAMPLERS, + GEN8_ATOM_VS_SAMPLERS, + GEN8_ATOM_TCS_SAMPLERS, + GEN8_ATOM_TES_SAMPLERS, + GEN8_ATOM_GS_SAMPLERS, + GEN8_ATOM_MULTISAMPLE_STATE, + GEN8_ATOM_DISABLE_STAGES, + GEN8_ATOM_VS_STATE, + GEN8_ATOM_HS_STATE, + GEN8_ATOM_TE_STATE, + GEN8_ATOM_DS_STATE, + GEN8_ATOM_GS_STATE, + GEN8_ATOM_SOL_STATE, + GEN8_ATOM_CLIP_STATE, + GEN8_ATOM_RASTER_STATE, + GEN8_ATOM_SBE_STATE, + GEN8_ATOM_SF_STATE, + GEN8_ATOM_PS_BLEND, + GEN8_ATOM_PS_EXTRA, + GEN8_ATOM_PS_STATE, + GEN8_ATOM_WM_DEPTH_STENCIL, + GEN8_ATOM_WM_STATE, + GEN8_ATOM_SCISSOR_STATE, + GEN8_ATOM_DEPTHBUFFER, + GEN8_ATOM_POLYGON_STIPPLE, + GEN8_ATOM_POLYGON_STIPPLE_OFFSET, + GEN8_ATOM_LINE_STIPPLE, + GEN8_ATOM_AA_LINE_PARAMETERS, + GEN8_ATOM_DRAWING_RECT, + GEN8_ATOM_VF_TOPOLOGY, + GEN8_ATOM_INDICES, + GEN8_ATOM_INDEX_BUFFER, + GEN8_ATOM_VERTICES, + GEN8_ATOM_HASWELL_CUT_INDEX, + GEN8_ATOM_PMA_FIX, +}; + +#endif diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c index 152f1a4..546c6c5 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -41,139 +41,145 @@ #include "brw_gs.h" #include "brw_wm.h" #include "brw_cs.h" +#include "brw_atoms.h" #include "main/framebuffer.h" static const struct brw_tracked_state *gen4_atoms[] = { - &brw_interpolation_map, + [GEN4_ATOM_INTERPOLATION_MAP] = &brw_interpolation_map, - &brw_clip_prog, /* must do before state base address */ - &brw_sf_prog, /* must do before state base address */ + /* must do before state base address */ + [GEN4_ATOM_CLIP_PROG] = &brw_clip_prog, + [GEN4_ATOM_SF_PROG] = &brw_sf_prog, /* 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, + [GEN4_ATOM_CURBE_OFFSETS] = &brw_curbe_offsets, + [GEN4_ATOM_RECALCULATE_URB_FENCE] = &brw_recalculate_urb_fence, - &brw_cc_vp, - &brw_cc_unit, + [GEN4_ATOM_CC_VP] = &brw_cc_vp, + [GEN4_ATOM_CC_UNIT] = &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_texture_surfaces, - &brw_vs_binding_table, - &brw_wm_binding_table, + [GEN4_ATOM_VS_PULL_CONSTANTS] = &brw_vs_pull_constants, + [GEN4_ATOM_WM_PULL_CONSTANTS] = &brw_wm_pull_constants, + [GEN4_ATOM_RENDERBUFFER_SURFACES] = &brw_renderbuffer_surfaces, + [GEN4_ATOM_TEXTURE_SURFACES] = &brw_texture_surfaces, + [GEN4_ATOM_VS_BINDING_TABLE] = &brw_vs_binding_table, + [GEN4_ATOM_WM_BINDING_TABLE] = &brw_wm_binding_table, - &brw_fs_samplers, - &brw_vs_samplers, + [GEN4_ATOM_FS_SAMPLERS] = &brw_fs_samplers, + [GEN4_ATOM_VS_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, + [GEN4_ATOM_WM_UNIT] = &brw_wm_unit, + [GEN4_ATOM_SF_VP] = &brw_sf_vp, + [GEN4_ATOM_SF_UNIT] = &brw_sf_unit, + [GEN4_ATOM_VS_UNIT] = &brw_vs_unit, /* always required enabled or not */ + [GEN4_ATOM_CLIP_UNIT] = &brw_clip_unit, + [GEN4_ATOM_GS_UNIT] = &brw_gs_unit, /* Command packets: */ - &brw_invariant_state, - &brw_state_base_address, + [GEN4_ATOM_INVARIANT_STATE] = &brw_invariant_state, + [GEN4_ATOM_STATE_BASE_ADDRESS] = &brw_state_base_address, - &brw_binding_table_pointers, - &brw_blend_constant_color, + [GEN4_ATOM_BINDING_TABLE_POINTERS] = &brw_binding_table_pointers, + [GEN4_ATOM_BLEND_CONSTANT_COLOR] = &brw_blend_constant_color, - &brw_depthbuffer, + [GEN4_ATOM_DEPTHBUFFER] = &brw_depthbuffer, - &brw_polygon_stipple, - &brw_polygon_stipple_offset, + [GEN4_ATOM_POLYGON_STIPPLE] = &brw_polygon_stipple, + [GEN4_ATOM_POLYGON_STIPPLE_OFFSET] = &brw_polygon_stipple_offset, - &brw_line_stipple, - &brw_aa_line_parameters, + [GEN4_ATOM_LINE_STIPPLE] = &brw_line_stipple, + [GEN4_ATOM_AA_LINE_PARAMETERS] = &brw_aa_line_parameters, - &brw_psp_urb_cbs, + [GEN4_ATOM_PSP_URB_CBS] = &brw_psp_urb_cbs, - &brw_drawing_rect, - &brw_indices, /* must come before brw_vertices */ - &brw_index_buffer, - &brw_vertices, + [GEN4_ATOM_DRAWING_RECT] = &brw_drawing_rect, + [GEN4_ATOM_INDICES] = &brw_indices, /* must come before brw_vertices */ + [GEN4_ATOM_INDEX_BUFFER] = &brw_index_buffer, + [GEN4_ATOM_VERTICES] = &brw_vertices, - &brw_constant_buffer + [GEN4_ATOM_CONSTANT_BUFFER] = &brw_constant_buffer, }; static const struct brw_tracked_state *gen6_atoms[] = { - &gen6_clip_vp, - &gen6_sf_vp, + [GEN6_ATOM_CLIP_VP] = &gen6_clip_vp, + [GEN6_ATOM_SF_VP] = &gen6_sf_vp, /* Command packets: */ /* must do before binding table pointers, cc state ptrs */ - &brw_state_base_address, + [GEN6_ATOM_STATE_BASE_ADDRESS] = &brw_state_base_address, - &brw_cc_vp, - &gen6_viewport_state, /* must do after *_vp stages */ + [GEN6_ATOM_CC_VP] = &brw_cc_vp, + /* must do after *_vp stages */ + [GEN6_ATOM_VIEWPORT_STATE] = &gen6_viewport_state, - &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_ATOM_URB] = &gen6_urb, - &gen6_vs_push_constants, /* Before vs_state */ - &gen6_gs_push_constants, /* Before gs_state */ - &gen6_wm_push_constants, /* Before wm_state */ + /* must do before cc unit */ + [GEN6_ATOM_BLEND_STATE] = &gen6_blend_state, + [GEN6_ATOM_COLOR_CALC_STATE] = &gen6_color_calc_state, + [GEN6_ATOM_DEPTH_STENCIL_STATE] = &gen6_depth_stencil_state, + + /* Before vs_state */ + [GEN6_ATOM_VS_PUSH_CONSTANTS] = &gen6_vs_push_constants, + [GEN6_ATOM_GS_PUSH_CONSTANTS] = &gen6_gs_push_constants, + [GEN6_ATOM_WM_PUSH_CONSTANTS] = &gen6_wm_push_constants, /* 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_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_aa_line_parameters, - - &brw_drawing_rect, - - &brw_indices, /* must come before brw_vertices */ - &brw_index_buffer, - &brw_vertices, + [GEN6_ATOM_VS_PULL_CONSTANTS] = &brw_vs_pull_constants, + [GEN6_ATOM_VS_UBO_SURFACES] = &brw_vs_ubo_surfaces, + [GEN6_ATOM_GS_PULL_CONSTANTS] = &brw_gs_pull_constants, + [GEN6_ATOM_GS_UBO_SURFACES] = &brw_gs_ubo_surfaces, + [GEN6_ATOM_WM_PULL_CONSTANTS] = &brw_wm_pull_constants, + [GEN6_ATOM_WM_UBO_SURFACES] = &brw_wm_ubo_surfaces, + [GEN6_ATOM_RENDERBUFFER_SURFACES] = &gen6_renderbuffer_surfaces, + [GEN6_ATOM_TEXTURE_SURFACES] = &brw_texture_surfaces, + [GEN6_ATOM_SOL_SURFACE] = &gen6_sol_surface, + [GEN6_ATOM_VS_BINDING_TABLE] = &brw_vs_binding_table, + [GEN6_ATOM_GS_BINDING_TABLE] = &gen6_gs_binding_table, + [GEN6_ATOM_WM_BINDING_TABLE] = &brw_wm_binding_table, + + [GEN6_ATOM_FS_SAMPLERS] = &brw_fs_samplers, + [GEN6_ATOM_VS_SAMPLERS] = &brw_vs_samplers, + [GEN6_ATOM_GS_SAMPLERS] = &brw_gs_samplers, + [GEN6_ATOM_SAMPLER_STATE] = &gen6_sampler_state, + [GEN6_ATOM_MULTISAMPLE_STATE] = &gen6_multisample_state, + + [GEN6_ATOM_VS_STATE] = &gen6_vs_state, + [GEN6_ATOM_GS_STATE] = &gen6_gs_state, + [GEN6_ATOM_CLIP_STATE] = &gen6_clip_state, + [GEN6_ATOM_SF_STATE] = &gen6_sf_state, + [GEN6_ATOM_WM_STATE] = &gen6_wm_state, + + [GEN6_ATOM_SCISSOR_STATE] = &gen6_scissor_state, + + [GEN6_ATOM_BINDING_TABLE_POINTERS] = &gen6_binding_table_pointers, + + [GEN6_ATOM_DEPTHBUFFER] = &brw_depthbuffer, + + [GEN6_ATOM_POLYGON_STIPPLE] = &brw_polygon_stipple, + [GEN6_ATOM_POLYGON_STIPPLE_OFFSET] = &brw_polygon_stipple_offset, + + [GEN6_ATOM_LINE_STIPPLE] = &brw_line_stipple, + [GEN6_ATOM_AA_LINE_PARAMETERS] = &brw_aa_line_parameters, + + [GEN6_ATOM_DRAWING_RECT] = &brw_drawing_rect, + + [GEN6_ATOM_INDICES] = &brw_indices, /* must come before brw_vertices */ + [GEN6_ATOM_INDEX_BUFFER] = &brw_index_buffer, + [GEN6_ATOM_VERTICES] = &brw_vertices, }; static const struct brw_tracked_state *gen7_render_atoms[] = @@ -181,94 +187,105 @@ static const struct brw_tracked_state *gen7_render_atoms[] = /* Command packets: */ /* must do before binding table pointers, cc state ptrs */ - &brw_state_base_address, - - &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 */ - - &gen7_hw_binding_tables, /* Enable hw-generated binding tables for Haswell */ - - &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 */ + [GEN7_ATOM_STATE_BASE_ADDRESS] = &brw_state_base_address, + + [GEN7_ATOM_CC_VP] = &brw_cc_vp, + [GEN7_ATOM_SF_CLIP_VIEWPORT] = &gen7_sf_clip_viewport, + + [GEN7_ATOM_L3_STATE] = &gen7_l3_state, + [GEN7_ATOM_PUSH_CONSTANT_SPACE] = &gen7_push_constant_space, + [GEN7_ATOM_URB] = &gen7_urb, + + /* must do before cc unit */ + [GEN7_ATOM_BLEND_STATE] = &gen6_blend_state, + [GEN7_ATOM_COLOR_CALC_STATE] = &gen6_color_calc_state, + [GEN7_ATOM_DEPTH_STENCIL_STATE] = &gen6_depth_stencil_state, + + /* Enable hw-generated binding tables for Haswell */ + [GEN7_ATOM_HW_BINDING_TABLES] = &gen7_hw_binding_tables, + + /* Before vs push/pull constants and binding table */ + [GEN7_ATOM_VS_IMAGE_SURFACES] = &brw_vs_image_surfaces, + /* Before tcs push/pull constants and binding table */ + [GEN7_ATOM_TCS_IMAGE_SURFACES] = &brw_tcs_image_surfaces, + /* Before tes push/pull constants and binding table */ + [GEN7_ATOM_TES_IMAGE_SURFACES] = &brw_tes_image_surfaces, + /* Before gs push/pull constants and binding table */ + [GEN7_ATOM_GS_IMAGE_SURFACES] = &brw_gs_image_surfaces, + /* Before wm push/pull constants and binding table */ + [GEN7_ATOM_WM_IMAGE_SURFACES] = &brw_wm_image_surfaces, + + /* Before vs_state */ + [GEN7_ATOM_VS_PUSH_CONSTANTS] = &gen6_vs_push_constants, + [GEN7_ATOM_TCS_PUSH_CONSTANTS] = &gen7_tcs_push_constants, + [GEN7_ATOM_TES_PUSH_CONSTANTS] = &gen7_tes_push_constants, + /* Before gs_state */ + [GEN7_ATOM_GS_PUSH_CONSTANTS] = &gen6_gs_push_constants, + /* Before wm_surfaces and constant_buffer */ + [GEN7_ATOM_WM_PUSH_CONSTANTS] = &gen6_wm_push_constants, /* 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_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, - &gen7_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_aa_line_parameters, - - &brw_drawing_rect, - - &brw_indices, /* must come before brw_vertices */ - &brw_index_buffer, - &brw_vertices, - - &haswell_cut_index, + [GEN7_ATOM_VS_PULL_CONSTANTS] = &brw_vs_pull_constants, + [GEN7_ATOM_VS_UBO_SURFACES] = &brw_vs_ubo_surfaces, + [GEN7_ATOM_VS_ABO_SURFACES] = &brw_vs_abo_surfaces, + [GEN7_ATOM_TCS_PULL_CONSTANTS] = &brw_tcs_pull_constants, + [GEN7_ATOM_TCS_UBO_SURFACES] = &brw_tcs_ubo_surfaces, + [GEN7_ATOM_TCS_ABO_SURFACES] = &brw_tcs_abo_surfaces, + [GEN7_ATOM_TES_PULL_CONSTANTS] = &brw_tes_pull_constants, + [GEN7_ATOM_TES_UBO_SURFACES] = &brw_tes_ubo_surfaces, + [GEN7_ATOM_TES_ABO_SURFACES] = &brw_tes_abo_surfaces, + [GEN7_ATOM_GS_PULL_CONSTANTS] = &brw_gs_pull_constants, + [GEN7_ATOM_GS_UBO_SURFACES] = &brw_gs_ubo_surfaces, + [GEN7_ATOM_GS_ABO_SURFACES] = &brw_gs_abo_surfaces, + [GEN7_ATOM_WM_PULL_CONSTANTS] = &brw_wm_pull_constants, + [GEN7_ATOM_WM_UBO_SURFACES] = &brw_wm_ubo_surfaces, + [GEN7_ATOM_WM_ABO_SURFACES] = &brw_wm_abo_surfaces, + [GEN7_ATOM_RENDERBUFFER_SURFACES] = &gen6_renderbuffer_surfaces, + [GEN7_ATOM_TEXTURE_SURFACES] = &brw_texture_surfaces, + [GEN7_ATOM_VS_BINDING_TABLE] = &brw_vs_binding_table, + [GEN7_ATOM_TCS_BINDING_TABLE] = &brw_tcs_binding_table, + [GEN7_ATOM_TES_BINDING_TABLE] = &brw_tes_binding_table, + [GEN7_ATOM_GS_BINDING_TABLE] = &brw_gs_binding_table, + [GEN7_ATOM_WM_BINDING_TABLE] = &brw_wm_binding_table, + + [GEN7_ATOM_FS_SAMPLERS] = &brw_fs_samplers, + [GEN7_ATOM_VS_SAMPLERS] = &brw_vs_samplers, + [GEN7_ATOM_TCS_SAMPLERS] = &brw_tcs_samplers, + [GEN7_ATOM_TES_SAMPLERS] = &brw_tes_samplers, + [GEN7_ATOM_GS_SAMPLERS] = &brw_gs_samplers, + [GEN7_ATOM_MULTISAMPLE_STATE] = &gen6_multisample_state, + + [GEN7_ATOM_VS_STATE] = &gen7_vs_state, + [GEN7_ATOM_HS_STATE] = &gen7_hs_state, + [GEN7_ATOM_TE_STATE] = &gen7_te_state, + [GEN7_ATOM_DS_STATE] = &gen7_ds_state, + [GEN7_ATOM_GS_STATE] = &gen7_gs_state, + [GEN7_ATOM_SOL_STATE] = &gen7_sol_state, + [GEN7_ATOM_CLIP_STATE] = &gen7_clip_state, + [GEN7_ATOM_SBE_STATE] = &gen7_sbe_state, + [GEN7_ATOM_SF_STATE] = &gen7_sf_state, + [GEN7_ATOM_WM_STATE] = &gen7_wm_state, + [GEN7_ATOM_PS_STATE] = &gen7_ps_state, + + [GEN7_ATOM_SCISSOR_STATE] = &gen6_scissor_state, + + [GEN7_ATOM_DEPTHBUFFER] = &gen7_depthbuffer, + + [GEN7_ATOM_POLYGON_STIPPLE] = &brw_polygon_stipple, + [GEN7_ATOM_POLYGON_STIPPLE_OFFSET] = &brw_polygon_stipple_offset, + + [GEN7_ATOM_LINE_STIPPLE] = &brw_line_stipple, + [GEN7_ATOM_AA_LINE_PARAMETERS] = &brw_aa_line_parameters, + + [GEN7_ATOM_DRAWING_RECT] = &brw_drawing_rect, + + [GEN7_ATOM_INDICES] = &brw_indices, /* must come before brw_vertices */ + [GEN7_ATOM_INDEX_BUFFER] = &brw_index_buffer, + [GEN7_ATOM_VERTICES] = &brw_vertices, + + [GEN7_ATOM_HASWELL_CUT_INDEX] = &haswell_cut_index, }; static const struct brw_tracked_state *gen7_compute_atoms[] = @@ -289,101 +306,110 @@ static const struct brw_tracked_state *gen7_compute_atoms[] = static const struct brw_tracked_state *gen8_render_atoms[] = { /* Command packets: */ - &gen8_state_base_address, - - &brw_cc_vp, - &gen8_sf_clip_viewport, - - &gen7_l3_state, - &gen7_push_constant_space, - &gen7_urb, - &gen8_blend_state, - &gen6_color_calc_state, - - &gen7_hw_binding_tables, /* Enable hw-generated binding tables for Broadwell */ - - &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 */ + [GEN8_ATOM_STATE_BASE_ADDRESS] = &gen8_state_base_address, + + [GEN8_ATOM_CC_VP] = &brw_cc_vp, + [GEN8_ATOM_SF_CLIP_VIEWPORT] = &gen8_sf_clip_viewport, + + [GEN8_ATOM_L3_STATE] = &gen7_l3_state, + [GEN8_ATOM_PUSH_CONSTANT_SPACE] = &gen7_push_constant_space, + [GEN8_ATOM_URB] = &gen7_urb, + [GEN8_ATOM_BLEND_STATE] = &gen8_blend_state, + [GEN8_ATOM_COLOR_CALC_STATE] = &gen6_color_calc_state, + + /* Enable hw-generated binding tables for Broadwell */ + [GEN8_ATOM_HW_BINDING_TABLES] = &gen7_hw_binding_tables, + + /* Before vs push/pull constants and binding table */ + [GEN8_ATOM_VS_IMAGE_SURFACES] = &brw_vs_image_surfaces, + /* Before tcs push/pull constants and binding table */ + [GEN8_ATOM_TCS_IMAGE_SURFACES] = &brw_tcs_image_surfaces, + /* Before tes push/pull constants and binding table */ + [GEN8_ATOM_TES_IMAGE_SURFACES] = &brw_tes_image_surfaces, + /* Before gs push/pull constants and binding table */ + [GEN8_ATOM_GS_IMAGE_SURFACES] = &brw_gs_image_surfaces, + /* Before wm push/pull constants and binding table */ + [GEN8_ATOM_WM_IMAGE_SURFACES] = &brw_wm_image_surfaces, + + /* Before vs_state */ + [GEN8_ATOM_VS_PUSH_CONSTANTS] = &gen6_vs_push_constants, + [GEN8_ATOM_TCS_PUSH_CONSTANTS] = &gen7_tcs_push_constants, + [GEN8_ATOM_TES_PUSH_CONSTANTS] = &gen7_tes_push_constants, + /* Before gs_state */ + [GEN8_ATOM_GS_PUSH_CONSTANTS] = &gen6_gs_push_constants, + /* Before wm_surfaces and constant_buffer */ + [GEN8_ATOM_WM_PUSH_CONSTANTS] = &gen6_wm_push_constants, /* 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_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_disable_stages, - &gen8_vs_state, - &gen8_hs_state, - &gen7_te_state, - &gen8_ds_state, - &gen8_gs_state, - &gen8_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_aa_line_parameters, - - &brw_drawing_rect, - - &gen8_vf_topology, - - &brw_indices, - &gen8_index_buffer, - &gen8_vertices, - - &haswell_cut_index, - &gen8_pma_fix, + [GEN8_ATOM_VS_PULL_CONSTANTS] = &brw_vs_pull_constants, + [GEN8_ATOM_VS_UBO_SURFACES] = &brw_vs_ubo_surfaces, + [GEN8_ATOM_VS_ABO_SURFACES] = &brw_vs_abo_surfaces, + [GEN8_ATOM_TCS_PULL_CONSTANTS] = &brw_tcs_pull_constants, + [GEN8_ATOM_TCS_UBO_SURFACES] = &brw_tcs_ubo_surfaces, + [GEN8_ATOM_TCS_ABO_SURFACES] = &brw_tcs_abo_surfaces, + [GEN8_ATOM_TES_PULL_CONSTANTS] = &brw_tes_pull_constants, + [GEN8_ATOM_TES_UBO_SURFACES] = &brw_tes_ubo_surfaces, + [GEN8_ATOM_TES_ABO_SURFACES] = &brw_tes_abo_surfaces, + [GEN8_ATOM_GS_PULL_CONSTANTS] = &brw_gs_pull_constants, + [GEN8_ATOM_GS_UBO_SURFACES] = &brw_gs_ubo_surfaces, + [GEN8_ATOM_GS_ABO_SURFACES] = &brw_gs_abo_surfaces, + [GEN8_ATOM_WM_PULL_CONSTANTS] = &brw_wm_pull_constants, + [GEN8_ATOM_WM_UBO_SURFACES] = &brw_wm_ubo_surfaces, + [GEN8_ATOM_WM_ABO_SURFACES] = &brw_wm_abo_surfaces, + [GEN8_ATOM_RENDERBUFFER_SURFACES] = &gen6_renderbuffer_surfaces, + [GEN8_ATOM_TEXTURE_SURFACES] = &brw_texture_surfaces, + [GEN8_ATOM_VS_BINDING_TABLE] = &brw_vs_binding_table, + [GEN8_ATOM_TCS_BINDING_TABLE] = &brw_tcs_binding_table, + [GEN8_ATOM_TES_BINDING_TABLE] = &brw_tes_binding_table, + [GEN8_ATOM_GS_BINDING_TABLE] = &brw_gs_binding_table, + [GEN8_ATOM_WM_BINDING_TABLE] = &brw_wm_binding_table, + + [GEN8_ATOM_FS_SAMPLERS] = &brw_fs_samplers, + [GEN8_ATOM_VS_SAMPLERS] = &brw_vs_samplers, + [GEN8_ATOM_TCS_SAMPLERS] = &brw_tcs_samplers, + [GEN8_ATOM_TES_SAMPLERS] = &brw_tes_samplers, + [GEN8_ATOM_GS_SAMPLERS] = &brw_gs_samplers, + [GEN8_ATOM_MULTISAMPLE_STATE] = &gen8_multisample_state, + + [GEN8_ATOM_DISABLE_STAGES] = &gen8_disable_stages, + [GEN8_ATOM_VS_STATE] = &gen8_vs_state, + [GEN8_ATOM_HS_STATE] = &gen8_hs_state, + [GEN8_ATOM_TE_STATE] = &gen7_te_state, + [GEN8_ATOM_DS_STATE] = &gen8_ds_state, + [GEN8_ATOM_GS_STATE] = &gen8_gs_state, + [GEN8_ATOM_SOL_STATE] = &gen8_sol_state, + [GEN8_ATOM_CLIP_STATE] = &gen6_clip_state, + [GEN8_ATOM_RASTER_STATE] = &gen8_raster_state, + [GEN8_ATOM_SBE_STATE] = &gen8_sbe_state, + [GEN8_ATOM_SF_STATE] = &gen8_sf_state, + [GEN8_ATOM_PS_BLEND] = &gen8_ps_blend, + [GEN8_ATOM_PS_EXTRA] = &gen8_ps_extra, + [GEN8_ATOM_PS_STATE] = &gen8_ps_state, + [GEN8_ATOM_WM_DEPTH_STENCIL] = &gen8_wm_depth_stencil, + [GEN8_ATOM_WM_STATE] = &gen8_wm_state, + + [GEN8_ATOM_SCISSOR_STATE] = &gen6_scissor_state, + + [GEN8_ATOM_DEPTHBUFFER] = &gen7_depthbuffer, + + [GEN8_ATOM_POLYGON_STIPPLE] = &brw_polygon_stipple, + [GEN8_ATOM_POLYGON_STIPPLE_OFFSET] = &brw_polygon_stipple_offset, + + [GEN8_ATOM_LINE_STIPPLE] = &brw_line_stipple, + [GEN8_ATOM_AA_LINE_PARAMETERS] = &brw_aa_line_parameters, + + [GEN8_ATOM_DRAWING_RECT] = &brw_drawing_rect, + + [GEN8_ATOM_VF_TOPOLOGY] = &gen8_vf_topology, + + [GEN8_ATOM_INDICES] = &brw_indices, + [GEN8_ATOM_INDEX_BUFFER] = &gen8_index_buffer, + [GEN8_ATOM_VERTICES] = &gen8_vertices, + + [GEN8_ATOM_HASWELL_CUT_INDEX] = &haswell_cut_index, + [GEN8_ATOM_PMA_FIX] = &gen8_pma_fix, }; static const struct brw_tracked_state *gen8_compute_atoms[] = -- 2.5.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev