X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Filo%2Filo_gpe_gen7.c;h=6d3397f2d62df5b52f8c428b81a63fccf254ef2b;hb=d2a3de19c6aa5881228734c73df706483a4aecf9;hp=fea600a1c3f2a48fc8f4a5c7eed9a12c84482374;hpb=e55e1610e5022811af28781fb8b556c6c1883942;p=mesa.git diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen7.c b/src/gallium/drivers/ilo/ilo_gpe_gen7.c index fea600a1c3f..6d3397f2d62 100644 --- a/src/gallium/drivers/ilo/ilo_gpe_gen7.c +++ b/src/gallium/drivers/ilo/ilo_gpe_gen7.c @@ -670,146 +670,3 @@ ilo_gpe_init_view_surface_for_texture_gen7(const struct ilo_dev_info *dev, /* do not increment reference count */ surf->bo = tex->bo; } - -int -ilo_gpe_gen7_estimate_command_size(const struct ilo_dev_info *dev, - enum ilo_gpe_gen7_command cmd, - int arg) -{ - static const struct { - int header; - int body; - } gen7_command_size_table[ILO_GPE_GEN7_COMMAND_COUNT] = { - [ILO_GPE_GEN7_MI_STORE_DATA_IMM] = { 0, 5 }, - [ILO_GPE_GEN7_MI_LOAD_REGISTER_IMM] = { 0, 3 }, - [ILO_GPE_GEN7_MI_STORE_REGISTER_MEM] = { 0, 3 }, - [ILO_GPE_GEN7_MI_REPORT_PERF_COUNT] = { 0, 3 }, - [ILO_GPE_GEN7_STATE_BASE_ADDRESS] = { 0, 10 }, - [ILO_GPE_GEN7_STATE_SIP] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_VF_STATISTICS] = { 0, 1 }, - [ILO_GPE_GEN7_PIPELINE_SELECT] = { 0, 1 }, - [ILO_GPE_GEN7_MEDIA_VFE_STATE] = { 0, 8 }, - [ILO_GPE_GEN7_MEDIA_CURBE_LOAD] = { 0, 4 }, - [ILO_GPE_GEN7_MEDIA_INTERFACE_DESCRIPTOR_LOAD] = { 0, 4 }, - [ILO_GPE_GEN7_MEDIA_STATE_FLUSH] = { 0, 2 }, - [ILO_GPE_GEN7_GPGPU_WALKER] = { 0, 11 }, - [ILO_GPE_GEN7_3DSTATE_CLEAR_PARAMS] = { 0, 3 }, - [ILO_GPE_GEN7_3DSTATE_DEPTH_BUFFER] = { 0, 7 }, - [ILO_GPE_GEN7_3DSTATE_STENCIL_BUFFER] = { 0, 3 }, - [ILO_GPE_GEN7_3DSTATE_HIER_DEPTH_BUFFER] = { 0, 3 }, - [ILO_GPE_GEN7_3DSTATE_VERTEX_BUFFERS] = { 1, 4 }, - [ILO_GPE_GEN7_3DSTATE_VERTEX_ELEMENTS] = { 1, 2 }, - [ILO_GPE_GEN7_3DSTATE_INDEX_BUFFER] = { 0, 3 }, - [ILO_GPE_GEN7_3DSTATE_VF] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_CC_STATE_POINTERS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_SCISSOR_STATE_POINTERS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_VS] = { 0, 6 }, - [ILO_GPE_GEN7_3DSTATE_GS] = { 0, 7 }, - [ILO_GPE_GEN7_3DSTATE_CLIP] = { 0, 4 }, - [ILO_GPE_GEN7_3DSTATE_SF] = { 0, 7 }, - [ILO_GPE_GEN7_3DSTATE_WM] = { 0, 3 }, - [ILO_GPE_GEN7_3DSTATE_CONSTANT_VS] = { 0, 7 }, - [ILO_GPE_GEN7_3DSTATE_CONSTANT_GS] = { 0, 7 }, - [ILO_GPE_GEN7_3DSTATE_CONSTANT_PS] = { 0, 7 }, - [ILO_GPE_GEN7_3DSTATE_SAMPLE_MASK] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_CONSTANT_HS] = { 0, 7 }, - [ILO_GPE_GEN7_3DSTATE_CONSTANT_DS] = { 0, 7 }, - [ILO_GPE_GEN7_3DSTATE_HS] = { 0, 7 }, - [ILO_GPE_GEN7_3DSTATE_TE] = { 0, 4 }, - [ILO_GPE_GEN7_3DSTATE_DS] = { 0, 6 }, - [ILO_GPE_GEN7_3DSTATE_STREAMOUT] = { 0, 3 }, - [ILO_GPE_GEN7_3DSTATE_SBE] = { 0, 14 }, - [ILO_GPE_GEN7_3DSTATE_PS] = { 0, 8 }, - [ILO_GPE_GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_BLEND_STATE_POINTERS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_SAMPLER_STATE_POINTERS_HS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_SAMPLER_STATE_POINTERS_DS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_URB_VS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_URB_HS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_URB_DS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_URB_GS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_DRAWING_RECTANGLE] = { 0, 4 }, - [ILO_GPE_GEN7_3DSTATE_POLY_STIPPLE_OFFSET] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_POLY_STIPPLE_PATTERN] = { 0, 33, }, - [ILO_GPE_GEN7_3DSTATE_LINE_STIPPLE] = { 0, 3 }, - [ILO_GPE_GEN7_3DSTATE_AA_LINE_PARAMETERS] = { 0, 3 }, - [ILO_GPE_GEN7_3DSTATE_MULTISAMPLE] = { 0, 4 }, - [ILO_GPE_GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_HS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_DS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_GS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS] = { 0, 2 }, - [ILO_GPE_GEN7_3DSTATE_SO_DECL_LIST] = { 3, 2 }, - [ILO_GPE_GEN7_3DSTATE_SO_BUFFER] = { 0, 4 }, - [ILO_GPE_GEN7_PIPE_CONTROL] = { 0, 5 }, - [ILO_GPE_GEN7_3DPRIMITIVE] = { 0, 7 }, - }; - const int header = gen7_command_size_table[cmd].header; - const int body = gen7_command_size_table[cmd].body; - const int count = arg; - - ILO_GPE_VALID_GEN(dev, 7, 7.5); - assert(cmd < ILO_GPE_GEN7_COMMAND_COUNT); - - return (likely(count)) ? header + body * count : 0; -} - -int -ilo_gpe_gen7_estimate_state_size(const struct ilo_dev_info *dev, - enum ilo_gpe_gen7_state state, - int arg) -{ - static const struct { - int alignment; - int body; - bool is_array; - } gen7_state_size_table[ILO_GPE_GEN7_STATE_COUNT] = { - [ILO_GPE_GEN7_INTERFACE_DESCRIPTOR_DATA] = { 8, 8, true }, - [ILO_GPE_GEN7_SF_CLIP_VIEWPORT] = { 16, 16, true }, - [ILO_GPE_GEN7_CC_VIEWPORT] = { 8, 2, true }, - [ILO_GPE_GEN7_COLOR_CALC_STATE] = { 16, 6, false }, - [ILO_GPE_GEN7_BLEND_STATE] = { 16, 2, true }, - [ILO_GPE_GEN7_DEPTH_STENCIL_STATE] = { 16, 3, false }, - [ILO_GPE_GEN7_SCISSOR_RECT] = { 8, 2, true }, - [ILO_GPE_GEN7_BINDING_TABLE_STATE] = { 8, 1, true }, - [ILO_GPE_GEN7_SURFACE_STATE] = { 8, 8, false }, - [ILO_GPE_GEN7_SAMPLER_STATE] = { 8, 4, true }, - [ILO_GPE_GEN7_SAMPLER_BORDER_COLOR_STATE] = { 8, 4, false }, - [ILO_GPE_GEN7_PUSH_CONSTANT_BUFFER] = { 8, 1, true }, - }; - const int alignment = gen7_state_size_table[state].alignment; - const int body = gen7_state_size_table[state].body; - const bool is_array = gen7_state_size_table[state].is_array; - const int count = arg; - int estimate; - - ILO_GPE_VALID_GEN(dev, 7, 7.5); - assert(state < ILO_GPE_GEN7_STATE_COUNT); - - if (likely(count)) { - if (is_array) { - estimate = (alignment - 1) + body * count; - } - else { - estimate = (alignment - 1) + body; - /* all states are aligned */ - if (count > 1) - estimate += util_align_npot(body, alignment) * (count - 1); - } - } - else { - estimate = 0; - } - - return estimate; -}