From 62c92a0516f73ce9a2d9a7d366c9ec64daba7ca9 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 29 Aug 2025 13:53:27 +0200 Subject: [PATCH] radv: rework the optimal packet order for task/mesh draws Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 98b400b602d..0b11e3ad675 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -12462,17 +12462,6 @@ radv_before_taskmesh_draw(struct radv_cmd_buffer *cmd_buffer, const struct radv_ radv_emit_all_graphics_states(cmd_buffer, info); - if (cmd_buffer->state.flush_bits) - radv_emit_cache_flush(cmd_buffer); - - if (task_shader) { - radv_gang_cache_flush(cmd_buffer); - - if (need_task_semaphore) { - radv_wait_gang_leader(cmd_buffer); - } - } - struct radv_descriptor_state *descriptors_state = radv_get_descriptors_state(cmd_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS); @@ -12492,6 +12481,17 @@ radv_before_taskmesh_draw(struct radv_cmd_buffer *cmd_buffer, const struct radv_ radv_gfx12_emit_buffered_regs(device, cmd_buffer->gang.cs); } + if (cmd_buffer->state.flush_bits) + radv_emit_cache_flush(cmd_buffer); + + if (task_shader) { + radv_gang_cache_flush(cmd_buffer); + + if (need_task_semaphore) { + radv_wait_gang_leader(cmd_buffer); + } + } + if (device->sqtt.bo && !dgc) radv_describe_draw(cmd_buffer, info); if (likely(!info->indirect_va)) {