Module: Mesa
Branch: main
Commit: 71bd479a7f43ad80955e2c5043a1229e3fe35e2d
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=71bd479a7f43ad80955e2c5043a1229e3fe35e2d

Author: Dave Airlie <airl...@redhat.com>
Date:   Fri Oct 27 14:17:56 2023 +1000

radv: don't emit cp dma packets on video rings.

Only emit this on the gfx/ace rings.

Fixes hangs with CTS on video decode with navi3x.

Reviewed-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26945>

---

 src/amd/vulkan/radv_cmd_buffer.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index b8d7fbfa7f3..5eb75d324f6 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -10594,7 +10594,9 @@ radv_barrier(struct radv_cmd_buffer *cmd_buffer, const 
VkDependencyInfo *dep_inf
       radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, 1);
       radeon_emit(cmd_buffer->cs, SDMA_PACKET(SDMA_OPCODE_NOP, 0, 0));
    } else {
-      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;

Reply via email to