From 0aa632b519b0ad774520e6f83869f2a7bb9fabed Mon Sep 17 00:00:00 2001 From: Sagar Ghuge Date: Mon, 8 Apr 2024 19:11:34 -0700 Subject: [PATCH] anv: Use appropriate argument format for indirect draw If index is specified we can use the DRAWINDEXED otherwise we can simply use DRAW argument format. v2: (Rohan & Lionel) - Fix the aligned_stride check Fixes: 6d4f43f0d6 ("anv: Emit EXECUTE_INDIRECT_DRAW when available") Signed-off-by: Sagar Ghuge Reviewed-by: Lionel Landwerlin Reviewed-by: Rohan Garg Part-of: --- src/intel/vulkan/genX_cmd_draw.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/intel/vulkan/genX_cmd_draw.c b/src/intel/vulkan/genX_cmd_draw.c index 2f73c4fdfc4..937ff0fc986 100644 --- a/src/intel/vulkan/genX_cmd_draw.c +++ b/src/intel/vulkan/genX_cmd_draw.c @@ -1603,7 +1603,8 @@ emit_indirect_draws(struct anv_cmd_buffer *cmd_buffer, UNUSED const struct intel_device_info *devinfo = cmd_buffer->device->info; UNUSED const bool aligned_stride = (indirect_data_stride == 0 || - indirect_data_stride == sizeof(VkDrawIndirectCommand)); + (!indexed && indirect_data_stride == sizeof(VkDrawIndirectCommand)) || + (indexed && indirect_data_stride == sizeof(VkDrawIndexedIndirectCommand))); UNUSED const bool execute_indirect_supported = execute_indirect_draw_supported(cmd_buffer); @@ -1652,7 +1653,7 @@ emit_indirect_draws(struct anv_cmd_buffer *cmd_buffer, #if GFX_VERx10 >= 125 genX(emit_breakpoint)(&cmd_buffer->batch, cmd_buffer->device, true); anv_batch_emit(&cmd_buffer->batch, GENX(EXECUTE_INDIRECT_DRAW), ind) { - ind.ArgumentFormat = DRAW; + ind.ArgumentFormat = indexed ? DRAWINDEXED : DRAW; ind.TBIMREnabled = cmd_buffer->state.gfx.dyn_state.use_tbimr; ind.PredicateEnable = cmd_buffer->state.conditional_render_enabled;