diff --git a/base/VulkanDebug.cpp b/base/VulkanDebug.cpp index e7b9c5bad..f03dff373 100644 --- a/base/VulkanDebug.cpp +++ b/base/VulkanDebug.cpp @@ -17,7 +17,7 @@ namespace vks PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT; VkDebugUtilsMessengerEXT debugUtilsMessenger; - VKAPI_ATTR VkBool32 VKAPI_CALL debugUtilsMessengerCallback( + VKAPI_ATTR VkBool32 VKAPI_CALL messageCallback( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, @@ -88,7 +88,7 @@ namespace vks debugUtilsMessengerCI.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; debugUtilsMessengerCI.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT; debugUtilsMessengerCI.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT; - debugUtilsMessengerCI.pfnUserCallback = debugUtilsMessengerCallback; + debugUtilsMessengerCI.pfnUserCallback = messageCallback; VkResult result = vkCreateDebugUtilsMessengerEXT(instance, &debugUtilsMessengerCI, nullptr, &debugUtilsMessenger); assert(result == VK_SUCCESS); } diff --git a/base/VulkanDebug.h b/base/VulkanDebug.h index e45a5128f..f6623fc27 100644 --- a/base/VulkanDebug.h +++ b/base/VulkanDebug.h @@ -35,14 +35,10 @@ namespace vks namespace debug { // Default debug callback - VKAPI_ATTR VkBool32 VKAPI_CALL messageCallback( - VkDebugReportFlagsEXT flags, - VkDebugReportObjectTypeEXT objType, - uint64_t srcObject, - size_t location, - int32_t msgCode, - const char* pLayerPrefix, - const char* pMsg, + VKAPI_ATTR VkBool32 VKAPI_CALL debugUtilsMessageCallback( + VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageType, + const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData); // Load debug function pointers and set debug callback diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp index 5d7434ba0..b9e9a8c0e 100644 --- a/base/vulkanexamplebase.cpp +++ b/base/vulkanexamplebase.cpp @@ -98,6 +98,22 @@ VkResult VulkanExampleBase::createInstance(bool enableValidation) instanceCreateInfo.pNext = NULL; instanceCreateInfo.pApplicationInfo = &appInfo; + + + VkDebugUtilsMessengerCreateInfoEXT debugUtilsMessengerCI{}; + if (settings.validation) { + PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT; + PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT; + vkCreateDebugUtilsMessengerEXT = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT")); + vkDestroyDebugUtilsMessengerEXT = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT")); + debugUtilsMessengerCI.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; + debugUtilsMessengerCI.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT| VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT; + debugUtilsMessengerCI.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT; + debugUtilsMessengerCI.pfnUserCallback = vks::debug::messageCallback; + instanceCreateInfo.pNext = &debugUtilsMessengerCI; + } + + #if (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK)) && defined(VK_KHR_portability_enumeration) // SRS - When running on iOS/macOS with MoltenVK and VK_KHR_portability_enumeration is defined and supported by the instance, enable the extension and the flag if (std::find(supportedInstanceExtensions.begin(), supportedInstanceExtensions.end(), VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME) != supportedInstanceExtensions.end())