radv: don't emit cp dma packets on video rings.
authorDave Airlie <airlied@redhat.com>
Fri, 27 Oct 2023 04:17:56 +0000 (14:17 +1000)
committerEric Engestrom <eric@engestrom.ch>
Wed, 10 Jan 2024 09:27:11 +0000 (09:27 +0000)
Only emit this on the gfx/ace rings.

Fixes hangs with CTS on video decode with navi3x.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26945>
(cherry picked from commit 71bd479a7f43ad80955e2c5043a1229e3fe35e2d)

.pick_status.json
src/amd/vulkan/radv_cmd_buffer.c

index 064a9c8..72cbe62 100644 (file)
@@ -74,7 +74,7 @@
         "description": "radv: don't emit cp dma packets on video rings.",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": null,
         "notes": null
index a29bd03..c433634 100644 (file)
@@ -10610,7 +10610,10 @@ radv_barrier(struct radv_cmd_buffer *cmd_buffer, const VkDependencyInfo *dep_inf
    }
 
    radv_gang_barrier(cmd_buffer, 0, dst_stage_mask);
-   radv_cp_dma_wait_for_stages(cmd_buffer, src_stage_mask);
+
+   const bool is_gfx_or_ace = cmd_buffer->qf == RADV_QUEUE_GENERAL || cmd_buffer->qf == RADV_QUEUE_COMPUTE;
+   if (is_gfx_or_ace)
+      radv_cp_dma_wait_for_stages(cmd_buffer, src_stage_mask);
 
    cmd_buffer->state.flush_bits |= dst_flush_bits;