From 89f376b5068e78f911f8591c21063c2a46b517f8 Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Fri, 21 Jan 2022 11:20:31 +0900 Subject: [PATCH] radv/sqtt: Add and enable basic EXT_debug_utils support. Only CommandBuffer markers for now. Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/layers/radv_sqtt_layer.c | 30 +++++++++++++++++++++++++ src/amd/vulkan/radv_device.c | 6 ++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c b/src/amd/vulkan/layers/radv_sqtt_layer.c index fb048d92f5c..249bbe8c7ef 100644 --- a/src/amd/vulkan/layers/radv_sqtt_layer.c +++ b/src/amd/vulkan/layers/radv_sqtt_layer.c @@ -21,6 +21,7 @@ * IN THE SOFTWARE. */ +#include "vk_common_entrypoints.h" #include "radv_private.h" #include "radv_shader.h" @@ -807,6 +808,35 @@ sqtt_DebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInf return VK_SUCCESS; } +VKAPI_ATTR void VKAPI_CALL +sqtt_CmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, + const VkDebugUtilsLabelEXT *pLabelInfo) +{ + RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); + radv_write_user_event_marker(cmd_buffer, UserEventPush, pLabelInfo->pLabelName); + + vk_common_CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo); +} + +VKAPI_ATTR void VKAPI_CALL +sqtt_CmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer) +{ + RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); + radv_write_user_event_marker(cmd_buffer, UserEventPop, NULL); + + vk_common_CmdEndDebugUtilsLabelEXT(commandBuffer); +} + +VKAPI_ATTR void VKAPI_CALL +sqtt_CmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, + const VkDebugUtilsLabelEXT *pLabelInfo) +{ + RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); + radv_write_user_event_marker(cmd_buffer, UserEventTrigger, pLabelInfo->pLabelName); + + vk_common_CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo); +} + /* Pipelines */ static enum rgp_hardware_stages radv_mesa_to_rgp_shader_stage(struct radv_pipeline *pipeline, gl_shader_stage stage) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 36b45a3f1ea..e3c21b98c51 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -355,6 +355,7 @@ static const struct vk_instance_extension_table radv_instance_extensions_support .KHR_external_semaphore_capabilities = true, .KHR_get_physical_device_properties2 = true, .EXT_debug_report = true, + /* EXT_debug_utils is exposed only if thread trace is enabled. See radv_CreateInstance */ #ifdef RADV_USE_WSI_PLATFORM .KHR_get_surface_capabilities2 = true, @@ -992,7 +993,10 @@ radv_CreateInstance(const VkInstanceCreateInfo *pCreateInfo, struct vk_instance_dispatch_table dispatch_table; vk_instance_dispatch_table_from_entrypoints(&dispatch_table, &radv_instance_entrypoints, true); vk_instance_dispatch_table_from_entrypoints(&dispatch_table, &wsi_instance_entrypoints, false); - result = vk_instance_init(&instance->vk, &radv_instance_extensions_supported, &dispatch_table, + struct vk_instance_extension_table extensions_supported = radv_instance_extensions_supported; + if (radv_thread_trace_enabled()) + extensions_supported.EXT_debug_utils = true; + result = vk_instance_init(&instance->vk, &extensions_supported, &dispatch_table, pCreateInfo, pAllocator); if (result != VK_SUCCESS) { vk_free(pAllocator, instance);