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 <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34231>
This commit is contained in:
Samuel Pitoiset 2025-03-27 17:48:33 +01:00 committed by Marge Bot
parent be481e6615
commit 086f529bbe

View file

@ -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);