diff --git a/.pick_status.json b/.pick_status.json index a06a59b1f33..f957168cf29 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -3834,7 +3834,7 @@ "description": "anv: Use appropriate argument format for indirect draw", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "6d4f43f0d6f58edb5bf236ddf1ce6f798afa851b", "notes": null diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 5026adbaf62..c96e32a4477 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -5265,7 +5265,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); @@ -5314,7 +5315,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;