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

Author: Timur Kristóf <[email protected]>
Date:   Fri Oct  6 22:29:55 2023 +0200

radv: Implement vkCmdWriteBufferMarker2AMD on transfer queues.

Signed-off-by: Timur Kristóf <[email protected]>
Reviewed-by: Samuel Pitoiset <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26580>

---

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

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 85697c80ebb..1c845a3dab7 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -11115,7 +11115,16 @@ radv_CmdWriteBufferMarker2AMD(VkCommandBuffer 
commandBuffer, VkPipelineStageFlag
    RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
    RADV_FROM_HANDLE(radv_buffer, buffer, dstBuffer);
    struct radeon_cmdbuf *cs = cmd_buffer->cs;
-   uint64_t va = radv_buffer_get_va(buffer->bo) + buffer->offset + dstOffset;
+   const uint64_t va = radv_buffer_get_va(buffer->bo) + buffer->offset + 
dstOffset;
+
+   if (cmd_buffer->qf == RADV_QUEUE_TRANSFER) {
+      radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, 4);
+      radeon_emit(cmd_buffer->cs, SDMA_PACKET(SDMA_OPCODE_FENCE, 0, 
SDMA_FENCE_MTYPE_UC));
+      radeon_emit(cs, va);
+      radeon_emit(cs, va >> 32);
+      radeon_emit(cs, marker);
+      return;
+   }
 
    si_emit_cache_flush(cmd_buffer);
 

Reply via email to