From 824c39c38a9fd178b984cb3a95125425bdebf67b Mon Sep 17 00:00:00 2001 From: DrChat Date: Thu, 22 Feb 2018 22:58:29 -0600 Subject: [PATCH] [Vulkan] Get debug markers working again --- src/xenia/ui/vulkan/vulkan_device.cc | 29 ++++++++++------------------ src/xenia/ui/vulkan/vulkan_device.h | 4 +--- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/src/xenia/ui/vulkan/vulkan_device.cc b/src/xenia/ui/vulkan/vulkan_device.cc index 91978b535..0898f660d 100644 --- a/src/xenia/ui/vulkan/vulkan_device.cc +++ b/src/xenia/ui/vulkan/vulkan_device.cc @@ -210,6 +210,9 @@ bool VulkanDevice::Initialize(DeviceInfo device_info) { for (auto& ext : enabled_extensions_) { if (!std::strcmp(ext, VK_EXT_DEBUG_MARKER_EXTENSION_NAME)) { debug_marker_ena_ = true; + pfn_vkDebugMarkerSetObjectNameEXT_ = + (PFN_vkDebugMarkerSetObjectNameEXT)vkGetDeviceProcAddr( + *this, "vkDebugMarkerSetObjectNameEXT"); } } @@ -263,24 +266,6 @@ void VulkanDevice::ReleaseQueue(VkQueue queue, uint32_t queue_family_index) { free_queues_[queue_family_index].push_back(queue); } -void VulkanDevice::DbgSetObjectName(VkDevice device, uint64_t object, - VkDebugReportObjectTypeEXT object_type, - std::string name) { - // Check to see if the extension is even loaded - if (vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT") == nullptr) { - return; - } - - // TODO(DrChat): fix linkage errors - VkDebugMarkerObjectNameInfoEXT info; - info.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT; - info.pNext = nullptr; - info.objectType = object_type; - info.object = object; - info.pObjectName = name.c_str(); - // vkDebugMarkerSetObjectNameEXT(device, &info); -} - void VulkanDevice::DbgSetObjectName(uint64_t object, VkDebugReportObjectTypeEXT object_type, std::string name) { @@ -289,7 +274,13 @@ void VulkanDevice::DbgSetObjectName(uint64_t object, return; } - DbgSetObjectName(*this, object, object_type, name); + VkDebugMarkerObjectNameInfoEXT info; + info.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT; + info.pNext = nullptr; + info.objectType = object_type; + info.object = object; + info.pObjectName = name.c_str(); + pfn_vkDebugMarkerSetObjectNameEXT_(*this, &info); } bool VulkanDevice::is_renderdoc_attached() const { diff --git a/src/xenia/ui/vulkan/vulkan_device.h b/src/xenia/ui/vulkan/vulkan_device.h index ee7d1ec97..f3448dc9a 100644 --- a/src/xenia/ui/vulkan/vulkan_device.h +++ b/src/xenia/ui/vulkan/vulkan_device.h @@ -75,9 +75,6 @@ class VulkanDevice { // This method is thread safe. void ReleaseQueue(VkQueue queue, uint32_t queue_family_index); - static void DbgSetObjectName(VkDevice device, uint64_t object, - VkDebugReportObjectTypeEXT object_type, - std::string name); void DbgSetObjectName(uint64_t object, VkDebugReportObjectTypeEXT object_type, std::string name); @@ -103,6 +100,7 @@ class VulkanDevice { std::vector enabled_extensions_; bool debug_marker_ena_ = false; + PFN_vkDebugMarkerSetObjectNameEXT pfn_vkDebugMarkerSetObjectNameEXT_; DeviceInfo device_info_; uint32_t queue_family_index_ = 0;