2323#include " impeller/renderer/backend/vulkan/surface_producer_vk.h"
2424#include " impeller/renderer/backend/vulkan/swapchain_details_vk.h"
2525#include " impeller/renderer/backend/vulkan/vk.h"
26- #include " vulkan/vulkan.hpp"
2726
2827VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE
2928
29+ namespace {
30+
31+ VKAPI_ATTR VkBool32 VKAPI_CALL DebugUtilsMessengerCallback (
32+ VkDebugUtilsMessageSeverityFlagBitsEXT severity,
33+ VkDebugUtilsMessageTypeFlagsEXT type,
34+ const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
35+ void * pUserData) {
36+ const auto prefix = impeller::vk::to_string (
37+ impeller::vk::DebugUtilsMessageSeverityFlagBitsEXT{severity});
38+
39+ FML_DCHECK (false ) << prefix << " [" << pCallbackData->messageIdNumber << " ]["
40+ << pCallbackData->pMessageIdName
41+ << " ] : " << pCallbackData->pMessage ;
42+
43+ // The return value of this callback controls whether the Vulkan call that
44+ // caused the validation message will be aborted or not We return VK_TRUE as
45+ // we DO want Vulkan calls that cause a validation message to abort
46+ return VK_TRUE;
47+ }
48+
49+ } // namespace
50+
3051namespace impeller {
3152
3253static std::set<std::string> kRequiredDeviceExtensions = {
@@ -335,7 +356,6 @@ ContextVK::ContextVK(
335356
336357 if (has_debug_utils) {
337358 vk::DebugUtilsMessengerCreateInfoEXT debug_messenger_info;
338-
339359 debug_messenger_info.messageSeverity =
340360 vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning |
341361 vk::DebugUtilsMessageSeverityFlagBitsEXT::eError;
@@ -344,23 +364,7 @@ ContextVK::ContextVK(
344364 vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance |
345365 vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation;
346366 debug_messenger_info.pUserData = nullptr ;
347- debug_messenger_info.pfnUserCallback =
348- [](VkDebugUtilsMessageSeverityFlagBitsEXT severity,
349- VkDebugUtilsMessageTypeFlagsEXT type,
350- const VkDebugUtilsMessengerCallbackDataEXT* data,
351- void * user_data) -> VkBool32 {
352- if (type == VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT) {
353- // do not terminate on performance warnings.
354- FML_LOG (ERROR)
355- << vk::to_string (vk::DebugUtilsMessageSeverityFlagBitsEXT{severity})
356- << " : " << data->pMessage ;
357- } else {
358- FML_DCHECK (false )
359- << vk::to_string (vk::DebugUtilsMessageSeverityFlagBitsEXT{severity})
360- << " : " << data->pMessage ;
361- }
362- return true ;
363- };
367+ debug_messenger_info.pfnUserCallback = DebugUtilsMessengerCallback;
364368
365369 auto debug_messenger_result =
366370 instance.value ->createDebugUtilsMessengerEXTUnique (
0 commit comments