diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 2ad9d7b17..6296fcd2b 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -3340,8 +3340,8 @@ VkBool32 VKAPI_PTR WrappedVulkan::DebugUtilsCallbackStatic( while(c > pMessageId && *c >= '0' && *c <= '9') { - mult *= 10; messageCode += mult * int(*c - '0'); + mult *= 10; c--; } } diff --git a/util/test/demos/vk/vk_helpers.h b/util/test/demos/vk/vk_helpers.h index 2759d45a1..161407d42 100644 --- a/util/test/demos/vk/vk_helpers.h +++ b/util/test/demos/vk/vk_helpers.h @@ -213,6 +213,27 @@ struct DebugReportCallbackCreateInfoEXT : public VkDebugReportCallbackCreateInfo operator const VkDebugReportCallbackCreateInfoEXT *() const { return this; } }; +struct DebugUtilsMessengerCreateInfoEXT : public VkDebugUtilsMessengerCreateInfoEXT +{ + DebugUtilsMessengerCreateInfoEXT( + PFN_vkDebugUtilsMessengerCallbackEXT callback, void *userData = NULL, + VkDebugUtilsMessageSeverityFlagsEXT severity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT, + VkDebugUtilsMessageTypeFlagsEXT type = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT, + VkDebugUtilsMessengerCreateFlagsEXT flags = 0) + { + sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; + pNext = NULL; + this->flags = flags; + this->messageSeverity = severity; + this->messageType = type; + this->pfnUserCallback = callback; + this->pUserData = userData; + } + + operator const VkDebugUtilsMessengerCreateInfoEXT *() const { return this; } +}; + struct DeviceQueueCreateInfo : public VkDeviceQueueCreateInfo { DeviceQueueCreateInfo(uint32_t queueFamilyIndex, uint32_t queueCount, diff --git a/util/test/demos/vk/vk_test.cpp b/util/test/demos/vk/vk_test.cpp index a5805fb04..e6f7dd9ab 100644 --- a/util/test/demos/vk/vk_test.cpp +++ b/util/test/demos/vk/vk_test.cpp @@ -44,13 +44,12 @@ #include "../linux/linux_window.h" #endif -static VkBool32 VKAPI_PTR vulkanCallback(VkDebugReportFlagsEXT flags, - VkDebugReportObjectTypeEXT objectType, uint64_t object, - size_t location, int32_t messageCode, - const char *pLayerPrefix, const char *pMessage, +static VkBool32 VKAPI_PTR vulkanCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, + const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData, void *pUserData) { - TEST_WARN("Vulkan message: [%s] %s", pLayerPrefix, pMessage); + TEST_WARN("Vulkan message: [%s] %s", pCallbackData->pMessageIdName, pCallbackData->pMessage); return false; } @@ -88,9 +87,9 @@ bool VulkanGraphicsTest::Init(int argc, char **argv) #endif if(debugDevice) - instExts.push_back(VK_EXT_DEBUG_REPORT_EXTENSION_NAME); - - optInstExts.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); + instExts.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); + else + optInstExts.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); std::vector layers; @@ -157,11 +156,11 @@ bool VulkanGraphicsTest::Init(int argc, char **argv) if(debugDevice) { - CHECK_VKR(vkCreateDebugReportCallbackEXT( - instance, - vkh::DebugReportCallbackCreateInfoEXT( - VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT, &vulkanCallback), - NULL, &debugReportCallback)); + CHECK_VKR(vkCreateDebugUtilsMessengerEXT( + instance, vkh::DebugUtilsMessengerCreateInfoEXT( + &vulkanCallback, NULL, VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT), + NULL, &debugUtilsMessenger)); } std::vector physDevices; @@ -463,8 +462,8 @@ VulkanGraphicsTest::~VulkanGraphicsTest() vkDestroyDevice(device, NULL); } - if(debugReportCallback) - vkDestroyDebugReportCallbackEXT(instance, debugReportCallback, NULL); + if(debugUtilsMessenger) + vkDestroyDebugUtilsMessengerEXT(instance, debugUtilsMessenger, NULL); if(surface) vkDestroySurfaceKHR(instance, surface, NULL); diff --git a/util/test/demos/vk/vk_test.h b/util/test/demos/vk/vk_test.h index 30e7989d1..307dc07d2 100644 --- a/util/test/demos/vk/vk_test.h +++ b/util/test/demos/vk/vk_test.h @@ -216,7 +216,7 @@ struct VulkanGraphicsTest : public GraphicsTest std::vector swapFramebuffers; // utilities - VkDebugReportCallbackEXT debugReportCallback; + VkDebugUtilsMessengerEXT debugUtilsMessenger; VkCommandPool cmdPool; // tracking object lifetimes