From 116a0eacd15b08bd6bb83b5e700c288145207fe6 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 13 May 2026 15:50:31 +0200 Subject: [PATCH] radv: destroy the gang CS when a cmdbuf is reset Otherwise, if a cmdbuf is recycled it would assume that a gang CS is always is present even if it's not used. That means, it would emit useless synchronization and use gang submit with a mostly empty gang CS for nothing. It seems better to create the gang CS on-demand only when it's strictly required (for compute fallback with SDMA and task shaders). Even for heavy uses of task shaders, that shouldn't hurt. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 7d466bcb9ee..92d431b8fe1 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -1274,8 +1274,10 @@ radv_reset_cmd_buffer(struct vk_command_buffer *vk_cmd_buffer, UNUSED VkCommandB return; radv_reset_cmd_stream(device, cs); - if (cmd_buffer->gang.cs) - radv_reset_cmd_stream(device, cmd_buffer->gang.cs); + if (cmd_buffer->gang.cs) { + radv_destroy_cmd_stream(device, cmd_buffer->gang.cs); + cmd_buffer->gang.cs = NULL; + } list_for_each_entry_safe (struct radv_cmd_buffer_upload, up, &cmd_buffer->upload.list, list) { radv_rmv_log_command_buffer_bo_destroy(device, up->upload_bo);