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 <phomes@gmail.com> Reviewed-by: Mary Guillemard <mary@mary.zone> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36617>
This commit is contained in:
@@ -1275,25 +1275,3 @@ nvk_CmdPushDescriptorSetWithTemplate2KHR(
|
|||||||
VK_SHADER_STAGE_COMPUTE_BIT,
|
VK_SHADER_STAGE_COMPUTE_BIT,
|
||||||
set, set + 1);
|
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,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "nvk_event.h"
|
#include "nvk_event.h"
|
||||||
|
|
||||||
|
#include "nvk_buffer.h"
|
||||||
#include "nvk_cmd_buffer.h"
|
#include "nvk_cmd_buffer.h"
|
||||||
#include "nvk_device.h"
|
#include "nvk_device.h"
|
||||||
#include "nvk_entrypoints.h"
|
#include "nvk_entrypoints.h"
|
||||||
@@ -258,3 +259,17 @@ nvk_CmdWaitEvents2(VkCommandBuffer commandBuffer,
|
|||||||
|
|
||||||
nvk_cmd_invalidate_deps(cmd, eventCount, pDependencyInfos);
|
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);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user