nvk: implement VK_AMD_buffer_marker

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35507>
This commit is contained in:
Thomas H.P. Andersen 2025-06-13 08:17:38 +02:00 committed by Marge Bot
parent 3a6b85aa2b
commit 93eafbf04f
4 changed files with 27 additions and 1 deletions

View file

@ -682,7 +682,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_NV_compute_shader_derivatives DONE (anv, hasvk, nvk, radv, vn)
VK_EXT_acquire_drm_display DONE (anv, hk, nvk, radv, tu, v3dv, vn)
VK_VALVE_mutable_descriptor_type DONE (anv, hasvk, hk, nvk, radv, tu, vn)
VK_AMD_buffer_marker DONE (anv, radv, tu)
VK_AMD_buffer_marker DONE (anv, nvk, radv, tu)
VK_AMD_device_coherent_memory DONE (radv)
VK_AMD_draw_indirect_count DONE (radv)
VK_AMD_gcn_shader DONE (radv)

View file

@ -18,3 +18,4 @@ GL_NV_shader_atomic_int64 on radeonsi and Panfrost V9+
VK_KHR_maintenance7 on panvk/v10+
VK_KHR_maintenance8 on panvk/v10+
VK_KHR_maintenance9 on panvk
VK_AMD_buffer_marker on NVK

View file

@ -10,6 +10,7 @@
#include "nvk_device.h"
#include "nvk_device_memory.h"
#include "nvk_entrypoints.h"
#include "nvk_event.h"
#include "nvk_mme.h"
#include "nvk_physical_device.h"
#include "nvk_shader.h"
@ -21,6 +22,7 @@
#include "clb097.h"
#include "clcb97.h"
#include "nv_push_cl906f.h"
#include "nv_push_cl9097.h"
#include "nv_push_cl90b5.h"
#include "nv_push_cla097.h"
#include "nv_push_cla0c0.h"
@ -1257,3 +1259,25 @@ 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,
});
}

View file

@ -280,6 +280,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance,
.EXT_ycbcr_2plane_444_formats = true,
.EXT_ycbcr_image_arrays = true,
.EXT_zero_initialize_device_memory = true,
.AMD_buffer_marker = true,
#if DETECT_OS_ANDROID
.ANDROID_native_buffer = vk_android_get_ugralloc() != NULL,
#endif