From a2026bf5f959af1c8181f363b7d8325462b1514f Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Fri, 30 Dec 2022 14:12:29 +0200 Subject: [PATCH] anv: rename generated draws for Gfx11 We'll need different shaders for Gfx9 Signed-off-by: Lionel Landwerlin Reviewed-by: Ivan Briano Part-of: --- src/intel/vulkan/anv_generated_indirect_draws.c | 10 +++++----- src/intel/vulkan/anv_generated_indirect_draws.h | 6 +++--- src/intel/vulkan/genX_cmd_buffer.c | 2 +- .../vulkan/genX_cmd_draw_generated_indirect.h | 16 ++++++++-------- src/intel/vulkan/meson.build | 4 ++-- ...ted_draws.glsl => gfx11_generated_draws.glsl} | 2 +- src/intel/vulkan/shaders/meson.build | 10 +++++----- 7 files changed, 25 insertions(+), 25 deletions(-) rename src/intel/vulkan/shaders/{generated_draws.glsl => gfx11_generated_draws.glsl} (98%) diff --git a/src/intel/vulkan/anv_generated_indirect_draws.c b/src/intel/vulkan/anv_generated_indirect_draws.c index 75db7491438..98f495612aa 100644 --- a/src/intel/vulkan/anv_generated_indirect_draws.c +++ b/src/intel/vulkan/anv_generated_indirect_draws.c @@ -31,7 +31,7 @@ #include "anv_generated_indirect_draws.h" -#include "shaders/generated_draws_spv.h" +#include "shaders/gfx11_generated_draws_spv.h" /* This pass takes vulkan descriptor bindings 0 & 1 and turns them into global * 64bit addresses. Binding 2 is left UBO that would normally be accessed @@ -66,7 +66,7 @@ lower_vulkan_descriptors_instr(nir_builder *b, nir_instr *instr, void *cb_data) nir_load_ubo(b, 1, 64, nir_imm_int(b, 2), nir_imm_int(b, - offsetof(struct anv_generate_indirect_params, + offsetof(struct anv_generated_indirect_params, indirect_data_addr)), .align_mul = 8, .align_offset = 0, @@ -86,7 +86,7 @@ lower_vulkan_descriptors_instr(nir_builder *b, nir_instr *instr, void *cb_data) nir_load_ubo(b, 1, 64, nir_imm_int(b, 2), nir_imm_int(b, - offsetof(struct anv_generate_indirect_params, + offsetof(struct anv_generated_indirect_params, generated_cmds_addr)), .align_mul = 8, .align_offset = 0, @@ -298,8 +298,8 @@ anv_device_init_generated_indirect_draws(struct anv_device *device) compile_upload_spirv(device, &indirect_draws_key, sizeof(indirect_draws_key), - generated_draws_spv_source, - ARRAY_SIZE(generated_draws_spv_source), + gfx11_generated_draws_spv_source, + ARRAY_SIZE(gfx11_generated_draws_spv_source), 11 /* * 2 * (2 indirect data loads + 3 3DPRIMITVE stores) + * 1 store (MI_BATCH_BUFFER_START) diff --git a/src/intel/vulkan/anv_generated_indirect_draws.h b/src/intel/vulkan/anv_generated_indirect_draws.h index b0e149b775c..e653c05c297 100644 --- a/src/intel/vulkan/anv_generated_indirect_draws.h +++ b/src/intel/vulkan/anv_generated_indirect_draws.h @@ -29,7 +29,7 @@ #define ANV_GENERATED_FLAG_INDEXED BITFIELD_BIT(0) #define ANV_GENERATED_FLAG_PREDICATED BITFIELD_BIT(1) -/* This needs to match generated_draws.glsl : +/* This needs to match gfx11_generated_draws.glsl : * * layout(set = 0, binding = 2) uniform block */ @@ -45,7 +45,7 @@ struct anv_generated_indirect_draw_params { uint32_t end_addr_udw; }; -struct anv_generate_indirect_params { +struct anv_generated_indirect_params { struct anv_generated_indirect_draw_params draw; /* Global address of binding 0 */ @@ -58,7 +58,7 @@ struct anv_generate_indirect_params { * split into smaller chunks, see while loop in * genX(cmd_buffer_emit_indirect_generated_draws) */ - struct anv_generate_indirect_params *prev; + struct anv_generated_indirect_params *prev; }; #endif /* ANV_GENERATED_INDIRECT_DRAWS_H */ diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index bf2d6fc54f5..530bccb7178 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -3551,7 +3551,7 @@ genX(cmd_buffer_flush_gfx_state)(struct anv_cmd_buffer *cmd_buffer) } #define GFX_HAS_GENERATED_CMDS GFX_VER >= 11 -#if GFX_VER >= 11 +#if GFX_HAS_GENERATED_CMDS #include "genX_cmd_draw_generated_indirect.h" #endif diff --git a/src/intel/vulkan/genX_cmd_draw_generated_indirect.h b/src/intel/vulkan/genX_cmd_draw_generated_indirect.h index 55c4edd4f97..e23060e0f72 100644 --- a/src/intel/vulkan/genX_cmd_draw_generated_indirect.h +++ b/src/intel/vulkan/genX_cmd_draw_generated_indirect.h @@ -334,7 +334,7 @@ genX(cmd_buffer_emit_generated_push_data)(struct anv_cmd_buffer *cmd_buffer, #endif } -static struct anv_generate_indirect_params * +static struct anv_generated_indirect_params * genX(cmd_buffer_emit_generate_draws)(struct anv_cmd_buffer *cmd_buffer, struct anv_address generated_cmds_addr, uint32_t draw_cmd_stride, @@ -352,13 +352,13 @@ genX(cmd_buffer_emit_generate_draws)(struct anv_cmd_buffer *cmd_buffer, struct anv_state push_data_state = anv_cmd_buffer_alloc_dynamic_state(cmd_buffer, - sizeof(struct anv_generate_indirect_params), + sizeof(struct anv_generated_indirect_params), ANV_UBO_ALIGNMENT); struct anv_graphics_pipeline *pipeline = cmd_buffer->state.gfx.pipeline; - struct anv_generate_indirect_params *push_data = push_data_state.map; - *push_data = (struct anv_generate_indirect_params) { + struct anv_generated_indirect_params *push_data = push_data_state.map; + *push_data = (struct anv_generated_indirect_params) { .draw = { .flags = (indexed ? ANV_GENERATED_FLAG_INDEXED : 0) | (cmd_buffer->state.conditional_render_enabled ? @@ -389,7 +389,7 @@ genX(cmd_buffer_emit_generate_draws)(struct anv_cmd_buffer *cmd_buffer, .bo = cmd_buffer->device->dynamic_state_pool.block_pool.bo, .offset = push_data_state.offset, }, - offsetof(struct anv_generate_indirect_params, draw.draw_count)), + offsetof(struct anv_generated_indirect_params, draw.draw_count)), count_addr, 4); /* Make sure the memcpy landed for the generating draw call to pick up @@ -442,7 +442,7 @@ genX(cmd_buffer_emit_indirect_generated_draws_init)(struct anv_cmd_buffer *cmd_b static void genX(cmd_buffer_rewrite_forward_end_addr)(struct anv_cmd_buffer *cmd_buffer, - struct anv_generate_indirect_params *params) + struct anv_generated_indirect_params *params) { /* We don't know the end_addr until we have emitted all the generation * draws. Go and edit the address of all the push parameters. @@ -494,7 +494,7 @@ genX(cmd_buffer_emit_indirect_generated_draws)(struct anv_cmd_buffer *cmd_buffer const uint32_t draw_cmd_stride = 4 * GENX(3DPRIMITIVE_EXTENDED_length); - struct anv_generate_indirect_params *last_params = NULL; + struct anv_generated_indirect_params *last_params = NULL; uint32_t item_base = 0; while (item_base < max_draw_count) { const uint32_t item_count = MIN2(max_draw_count - item_base, @@ -513,7 +513,7 @@ genX(cmd_buffer_emit_indirect_generated_draws)(struct anv_cmd_buffer *cmd_buffer if (result != VK_SUCCESS) return; - struct anv_generate_indirect_params *params = + struct anv_generated_indirect_params *params = genX(cmd_buffer_emit_generate_draws)( cmd_buffer, anv_batch_current_address(&cmd_buffer->batch), diff --git a/src/intel/vulkan/meson.build b/src/intel/vulkan/meson.build index 752e70c3b61..e103086f4d0 100644 --- a/src/intel/vulkan/meson.build +++ b/src/intel/vulkan/meson.build @@ -114,7 +114,7 @@ foreach g : [['90', ['gfx8_cmd_buffer.c']], _gfx_ver = g[0] libanv_per_hw_ver_libs += static_library( 'anv_per_hw_ver@0@'.format(_gfx_ver), - [anv_per_hw_ver_files, g[1], anv_entrypoints[0], generated_draws_spv_h, ], + [anv_per_hw_ver_files, g[1], anv_entrypoints[0], gfx11_generated_draws_spv_h, ], include_directories : [ inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_compiler, inc_intel, ], @@ -205,7 +205,7 @@ libanv_common = static_library( [ libanv_files, anv_entrypoints, sha1_h, gen_xml_pack, float64_spv_h, - generated_draws_spv_h, + gfx11_generated_draws_spv_h, ], include_directories : [ inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel, inc_compiler, diff --git a/src/intel/vulkan/shaders/generated_draws.glsl b/src/intel/vulkan/shaders/gfx11_generated_draws.glsl similarity index 98% rename from src/intel/vulkan/shaders/generated_draws.glsl rename to src/intel/vulkan/shaders/gfx11_generated_draws.glsl index 4bd8fb9845e..8039d09ef66 100644 --- a/src/intel/vulkan/shaders/generated_draws.glsl +++ b/src/intel/vulkan/shaders/gfx11_generated_draws.glsl @@ -56,7 +56,7 @@ void main() bool is_predicated = (flags & ANV_GENERATED_FLAG_PREDICATED) != 0; uint item_idx = uint(gl_FragCoord.y) * 8192 + uint(gl_FragCoord.x); uint indirect_data_offset = item_idx * indirect_data_stride / 4; - uint _3dprim_dw_size = 10; + uint _3dprim_dw_size = 10; /* 3DPRIMITIVE with extended parameters */ uint cmd_idx = item_idx * _3dprim_dw_size; uint draw_id = draw_base + item_idx; diff --git a/src/intel/vulkan/shaders/meson.build b/src/intel/vulkan/shaders/meson.build index dae265e7278..bbd02504583 100644 --- a/src/intel/vulkan/shaders/meson.build +++ b/src/intel/vulkan/shaders/meson.build @@ -32,14 +32,14 @@ float64_spv_h = custom_target( ] ) -generated_draws_spv_h = custom_target( - 'generated_draws_spv.h', - input : [glsl2spirv, 'generated_draws.glsl'], - output : 'generated_draws_spv.h', +gfx11_generated_draws_spv_h = custom_target( + 'gfx11_generated_draws_spv.h', + input : [glsl2spirv, 'gfx11_generated_draws.glsl'], + output : 'gfx11_generated_draws_spv.h', command : [ prog_python, '@INPUT@', '@OUTPUT@', prog_glslang, - '--vn', 'generated_draws_spv_source', + '--vn', 'gfx11_generated_draws_spv_source', '--glsl-version', '450', '--stage', 'frag', ]