From 0684dc5fa89287504cb086450a55df3ca946dba5 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 5 May 2025 09:09:27 +0200 Subject: [PATCH] radv: fix GPU hangs with image copies for ASTC/ETC2 formats on transfer queue Emitting compute dispatches on SDMA just hangs. It might be needed to switch to gang submit for these to work but fixing the GPU hang is more important for now. Cc: mesa-stable Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/meta/radv_meta_copy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/meta/radv_meta_copy.c b/src/amd/vulkan/meta/radv_meta_copy.c index d30679dacc7..a763814c709 100644 --- a/src/amd/vulkan/meta/radv_meta_copy.c +++ b/src/amd/vulkan/meta/radv_meta_copy.c @@ -237,7 +237,7 @@ radv_CmdCopyBufferToImage2(VkCommandBuffer commandBuffer, const VkCopyBufferToIm pCopyBufferToImageInfo->dstImageLayout, region); } - if (radv_is_format_emulated(pdev, dst_image->vk.format)) { + if (radv_is_format_emulated(pdev, dst_image->vk.format) && cmd_buffer->qf != RADV_QUEUE_TRANSFER) { cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_CS_PARTIAL_FLUSH | RADV_CMD_FLAG_PS_PARTIAL_FLUSH | radv_src_access_flush(cmd_buffer, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, VK_ACCESS_TRANSFER_WRITE_BIT, 0, dst_image, NULL) | @@ -671,7 +671,7 @@ radv_CmdCopyImage2(VkCommandBuffer commandBuffer, const VkCopyImageInfo2 *pCopyI region); } - if (radv_is_format_emulated(pdev, dst_image->vk.format)) { + if (radv_is_format_emulated(pdev, dst_image->vk.format) && cmd_buffer->qf != RADV_QUEUE_TRANSFER) { cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_CS_PARTIAL_FLUSH | RADV_CMD_FLAG_PS_PARTIAL_FLUSH | radv_src_access_flush(cmd_buffer, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, VK_ACCESS_TRANSFER_WRITE_BIT, 0, dst_image, NULL) |