From 086f529bbe8654bc5cf16dff46a6b4d6dbc196d7 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 27 Mar 2025 17:48:33 +0100 Subject: [PATCH] radv: do not trigger FCE or FMASK decompress on compute queue A pipeline barrier which contains an image layout transition like COLOR_ATTACHMENT_OPTIMAL -> TRANSFER_DST_OPTIMAL on compute queue would just hang. Such a barrier is useless in practice but it's legal. Prevent GPU hangs by skipping FCE or FMASK_DECOMPRESS when it's not on the graphics queue. Fixes dEQP-VK.synchronization2.layout_transition.compute_transition*. Cc: mesa-stable Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/meta/radv_meta_fast_clear.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/amd/vulkan/meta/radv_meta_fast_clear.c b/src/amd/vulkan/meta/radv_meta_fast_clear.c index 76519a3c101..3200f652e5d 100644 --- a/src/amd/vulkan/meta/radv_meta_fast_clear.c +++ b/src/amd/vulkan/meta/radv_meta_fast_clear.c @@ -419,6 +419,9 @@ radv_fast_clear_eliminate(struct radv_cmd_buffer *cmd_buffer, struct radv_image { struct radv_barrier_data barrier = {0}; + if (cmd_buffer->qf != RADV_QUEUE_GENERAL) + return; + barrier.layout_transitions.fast_clear_eliminate = 1; radv_describe_layout_transition(cmd_buffer, &barrier); @@ -431,6 +434,9 @@ radv_fmask_decompress(struct radv_cmd_buffer *cmd_buffer, struct radv_image *ima { struct radv_barrier_data barrier = {0}; + if (cmd_buffer->qf != RADV_QUEUE_GENERAL) + return; + barrier.layout_transitions.fmask_decompress = 1; radv_describe_layout_transition(cmd_buffer, &barrier);