From 023b489c3017892615cbf7183322b654fbc5a39a Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Fri, 21 Apr 2023 12:47:46 +0200 Subject: [PATCH] Vulkan: Attach debug utils to GPU_debug_group. --- source/blender/gpu/vulkan/vk_common.hh | 22 +++++----- source/blender/gpu/vulkan/vk_debug.cc | 57 +++++++++++++++----------- 2 files changed, 43 insertions(+), 36 deletions(-) diff --git a/source/blender/gpu/vulkan/vk_common.hh b/source/blender/gpu/vulkan/vk_common.hh index a09270908f7..5ad14cdc1a2 100644 --- a/source/blender/gpu/vulkan/vk_common.hh +++ b/source/blender/gpu/vulkan/vk_common.hh @@ -27,14 +27,14 @@ VkComponentMapping to_vk_component_mapping(const eGPUTextureFormat format); VkImageViewType to_vk_image_view_type(const eGPUTextureType type); VkImageType to_vk_image_type(const eGPUTextureType type); VkClearColorValue to_vk_clear_color_value(const eGPUDataFormat format, const void *data); -#ifdef __cplusplus + template VkObjectType to_vk_object_type(T /*vk_obj*/) { const std::type_info &tid = typeid(T); -# define VK_EQ_TYPEID(name, name2) \ - if (tid == typeid(name)) { \ - return VK_OBJECT_TYPE_##name2; \ - } +#define VK_EQ_TYPEID(name, name2) \ + if (tid == typeid(name)) { \ + return VK_OBJECT_TYPE_##name2; \ + } VK_EQ_TYPEID(VkInstance, INSTANCE); VK_EQ_TYPEID(VkPhysicalDevice, PHYSICAL_DEVICE); @@ -68,12 +68,12 @@ template VkObjectType to_vk_object_type(T /*vk_obj*/) VK_EQ_TYPEID(VkDisplayKHR, DISPLAY_KHR); VK_EQ_TYPEID(VkDisplayModeKHR, DISPLAY_MODE_KHR); VK_EQ_TYPEID(VkDebugReportCallbackEXT, DEBUG_REPORT_CALLBACK_EXT); -# ifdef VK_ENABLE_BETA_EXTENSIONS +#ifdef VK_ENABLE_BETA_EXTENSIONS VK_EQ_TYPEID(VkVideoSessionKHR, VIDEO_SESSION_KHR); -# endif -# ifdef VK_ENABLE_BETA_EXTENSIONS +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS VK_EQ_TYPEID(VkVideoSessionParametersKHR, VIDEO_SESSION_PARAMETERS_KHR); -# endif +#endif VK_EQ_TYPEID(VkCuModuleNVX, CU_MODULE_NVX); VK_EQ_TYPEID(VkCuFunctionNVX, CU_FUNCTION_NVX); VK_EQ_TYPEID(VkDebugUtilsMessengerEXT, DEBUG_UTILS_MESSENGER_EXT); @@ -86,8 +86,8 @@ template VkObjectType to_vk_object_type(T /*vk_obj*/) VK_EQ_TYPEID(VkPrivateDataSlotEXT, PRIVATE_DATA_SLOT_EXT); BLI_assert_unreachable(); -# undef VK_EQ_TYPEID +#undef VK_EQ_TYPEID return VK_OBJECT_TYPE_UNKNOWN; } -#endif + } // namespace blender::gpu diff --git a/source/blender/gpu/vulkan/vk_debug.cc b/source/blender/gpu/vulkan/vk_debug.cc index 32fc70e37bf..9af2cdccb00 100644 --- a/source/blender/gpu/vulkan/vk_debug.cc +++ b/source/blender/gpu/vulkan/vk_debug.cc @@ -12,9 +12,15 @@ #include "vk_debug.hh" namespace blender::gpu { -void VKContext::debug_group_begin(const char *, int) {} +void VKContext::debug_group_begin(const char *name, int) +{ + debug::push_marker(this, vk_queue_, name); +} -void VKContext::debug_group_end() {} +void VKContext::debug_group_end() +{ + debug::pop_marker(this, vk_queue_); +} bool VKContext::debug_capture_begin() { @@ -60,7 +66,8 @@ void VKContext::debug_capture_scope_end(void * /*scope*/) {} namespace blender::gpu::debug { -static void load_dynamic_functions(VKContext *context, PFN_vkGetInstanceProcAddr instance_proc_addr) +static void load_dynamic_functions(VKContext *context, + PFN_vkGetInstanceProcAddr instance_proc_addr) { VKDebuggingTools &debugging_tools = context->debugging_tools_get(); VkInstance vk_instance = context->instance_get(); @@ -68,28 +75,28 @@ static void load_dynamic_functions(VKContext *context, PFN_vkGetInstanceProcAddr if (instance_proc_addr) { debugging_tools.enabled = false; - debugging_tools.vkCmdBeginDebugUtilsLabelEXT_r = (PFN_vkCmdBeginDebugUtilsLabelEXT)instance_proc_addr( - vk_instance, "vkCmdBeginDebugUtilsLabelEXT"); - debugging_tools.vkCmdEndDebugUtilsLabelEXT_r = (PFN_vkCmdEndDebugUtilsLabelEXT)instance_proc_addr( - vk_instance, "vkCmdEndDebugUtilsLabelEXT"); - debugging_tools.vkCmdInsertDebugUtilsLabelEXT_r = (PFN_vkCmdInsertDebugUtilsLabelEXT)instance_proc_addr( - vk_instance, "vkCmdInsertDebugUtilsLabelEXT"); - debugging_tools.vkCreateDebugUtilsMessengerEXT_r = (PFN_vkCreateDebugUtilsMessengerEXT)instance_proc_addr( - vk_instance, "vkCreateDebugUtilsMessengerEXT"); - debugging_tools.vkDestroyDebugUtilsMessengerEXT_r = (PFN_vkDestroyDebugUtilsMessengerEXT)instance_proc_addr( - vk_instance, "vkDestroyDebugUtilsMessengerEXT"); - debugging_tools.vkQueueBeginDebugUtilsLabelEXT_r = (PFN_vkQueueBeginDebugUtilsLabelEXT)instance_proc_addr( - vk_instance, "vkQueueBeginDebugUtilsLabelEXT"); - debugging_tools.vkQueueEndDebugUtilsLabelEXT_r = (PFN_vkQueueEndDebugUtilsLabelEXT)instance_proc_addr( - vk_instance, "vkQueueEndDebugUtilsLabelEXT"); - debugging_tools.vkQueueInsertDebugUtilsLabelEXT_r = (PFN_vkQueueInsertDebugUtilsLabelEXT)instance_proc_addr( - vk_instance, "vkQueueInsertDebugUtilsLabelEXT"); - debugging_tools.vkSetDebugUtilsObjectNameEXT_r = (PFN_vkSetDebugUtilsObjectNameEXT)instance_proc_addr( - vk_instance, "vkSetDebugUtilsObjectNameEXT"); - debugging_tools.vkSetDebugUtilsObjectTagEXT_r = (PFN_vkSetDebugUtilsObjectTagEXT)instance_proc_addr( - vk_instance, "vkSetDebugUtilsObjectTagEXT"); - debugging_tools.vkSubmitDebugUtilsMessageEXT_r = (PFN_vkSubmitDebugUtilsMessageEXT)instance_proc_addr( - vk_instance, "vkSubmitDebugUtilsMessageEXT"); + debugging_tools.vkCmdBeginDebugUtilsLabelEXT_r = (PFN_vkCmdBeginDebugUtilsLabelEXT) + instance_proc_addr(vk_instance, "vkCmdBeginDebugUtilsLabelEXT"); + debugging_tools.vkCmdEndDebugUtilsLabelEXT_r = (PFN_vkCmdEndDebugUtilsLabelEXT) + instance_proc_addr(vk_instance, "vkCmdEndDebugUtilsLabelEXT"); + debugging_tools.vkCmdInsertDebugUtilsLabelEXT_r = (PFN_vkCmdInsertDebugUtilsLabelEXT) + instance_proc_addr(vk_instance, "vkCmdInsertDebugUtilsLabelEXT"); + debugging_tools.vkCreateDebugUtilsMessengerEXT_r = (PFN_vkCreateDebugUtilsMessengerEXT) + instance_proc_addr(vk_instance, "vkCreateDebugUtilsMessengerEXT"); + debugging_tools.vkDestroyDebugUtilsMessengerEXT_r = (PFN_vkDestroyDebugUtilsMessengerEXT) + instance_proc_addr(vk_instance, "vkDestroyDebugUtilsMessengerEXT"); + debugging_tools.vkQueueBeginDebugUtilsLabelEXT_r = (PFN_vkQueueBeginDebugUtilsLabelEXT) + instance_proc_addr(vk_instance, "vkQueueBeginDebugUtilsLabelEXT"); + debugging_tools.vkQueueEndDebugUtilsLabelEXT_r = (PFN_vkQueueEndDebugUtilsLabelEXT) + instance_proc_addr(vk_instance, "vkQueueEndDebugUtilsLabelEXT"); + debugging_tools.vkQueueInsertDebugUtilsLabelEXT_r = (PFN_vkQueueInsertDebugUtilsLabelEXT) + instance_proc_addr(vk_instance, "vkQueueInsertDebugUtilsLabelEXT"); + debugging_tools.vkSetDebugUtilsObjectNameEXT_r = (PFN_vkSetDebugUtilsObjectNameEXT) + instance_proc_addr(vk_instance, "vkSetDebugUtilsObjectNameEXT"); + debugging_tools.vkSetDebugUtilsObjectTagEXT_r = (PFN_vkSetDebugUtilsObjectTagEXT) + instance_proc_addr(vk_instance, "vkSetDebugUtilsObjectTagEXT"); + debugging_tools.vkSubmitDebugUtilsMessageEXT_r = (PFN_vkSubmitDebugUtilsMessageEXT) + instance_proc_addr(vk_instance, "vkSubmitDebugUtilsMessageEXT"); if (debugging_tools.vkCmdBeginDebugUtilsLabelEXT_r) { debugging_tools.enabled = true; } -- 2.30.2