From a431e8dfe6d7162fdbffb314efd3a54fb7b24bff Mon Sep 17 00:00:00 2001 From: Mel Henning Date: Tue, 16 Dec 2025 14:09:01 -0500 Subject: [PATCH] nvk: Use semaphore helper for BufferMarker2AMD By calling into nvk_event_report_semaphore we get better support for queues other than graphics. Reviewed-by: Thomas H.P. Andersen Reviewed-by: Mary Guillemard Part-of: --- src/nouveau/vulkan/nvk_cmd_buffer.c | 22 ---------------------- src/nouveau/vulkan/nvk_event.c | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/nouveau/vulkan/nvk_cmd_buffer.c b/src/nouveau/vulkan/nvk_cmd_buffer.c index 23cf3bc6015..af72611d5fb 100644 --- a/src/nouveau/vulkan/nvk_cmd_buffer.c +++ b/src/nouveau/vulkan/nvk_cmd_buffer.c @@ -1275,25 +1275,3 @@ nvk_CmdPushDescriptorSetWithTemplate2KHR( VK_SHADER_STAGE_COMPUTE_BIT, set, set + 1); } - -VKAPI_ATTR void VKAPI_CALL -nvk_CmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer, - VkPipelineStageFlags2 stage, - VkBuffer _buffer, - VkDeviceSize offset, - uint32_t marker) -{ - VK_FROM_HANDLE(nvk_cmd_buffer, cmd, commandBuffer); - VK_FROM_HANDLE(nvk_buffer, buffer, _buffer); - const uint64_t marker_addr = vk_buffer_address(&buffer->vk, offset); - struct nv_push *p = nvk_cmd_buffer_push(cmd, 5); - - P_MTHD(p, NV9097, SET_REPORT_SEMAPHORE_A); - P_NV9097_SET_REPORT_SEMAPHORE_A(p, marker_addr >> 32); - P_NV9097_SET_REPORT_SEMAPHORE_B(p, marker_addr); - P_NV9097_SET_REPORT_SEMAPHORE_C(p, marker); - P_NV9097_SET_REPORT_SEMAPHORE_D(p, { - .pipeline_location = vk_stage_flags_to_nv9097_pipeline_location(stage), - .structure_size = STRUCTURE_SIZE_ONE_WORD, - }); -} diff --git a/src/nouveau/vulkan/nvk_event.c b/src/nouveau/vulkan/nvk_event.c index 599614cf133..2a671c4be45 100644 --- a/src/nouveau/vulkan/nvk_event.c +++ b/src/nouveau/vulkan/nvk_event.c @@ -4,6 +4,7 @@ */ #include "nvk_event.h" +#include "nvk_buffer.h" #include "nvk_cmd_buffer.h" #include "nvk_device.h" #include "nvk_entrypoints.h" @@ -258,3 +259,17 @@ nvk_CmdWaitEvents2(VkCommandBuffer commandBuffer, nvk_cmd_invalidate_deps(cmd, eventCount, pDependencyInfos); } + +VKAPI_ATTR void VKAPI_CALL +nvk_CmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkBuffer _buffer, + VkDeviceSize offset, + uint32_t marker) +{ + VK_FROM_HANDLE(nvk_cmd_buffer, cmd, commandBuffer); + VK_FROM_HANDLE(nvk_buffer, buffer, _buffer); + const uint64_t marker_addr = vk_buffer_address(&buffer->vk, offset); + + nvk_event_report_semaphore(cmd, stage, marker_addr, marker); +}