Refactor dispatcher code
This commit is contained in:
@@ -72,24 +72,23 @@ namespace OpenVulkano::Vulkan
|
||||
return false;
|
||||
}
|
||||
|
||||
static std::once_flag dispatcherInitFlag;
|
||||
vk::DispatchLoaderDynamic dispatcher;
|
||||
vk::DebugReportCallbackEXT msgCallback;
|
||||
namespace
|
||||
{
|
||||
vk::DebugReportCallbackEXT msgCallback;
|
||||
}
|
||||
|
||||
void Debug::SetupValidationLayers(const vk::Instance& instance, const vk::DebugReportFlagsEXT& flags)
|
||||
void Debug::SetupValidationLayers(const vk::Instance& instance, const vk::DebugReportFlagsEXT& flags, vk::DispatchLoaderDynamic& dispatchLoaderDynamic)
|
||||
{
|
||||
Logger::RENDER->info("Setting up Vulkan Validation Layer");
|
||||
std::call_once(dispatcherInitFlag, [&] { dispatcher.init(instance, &vkGetInstanceProcAddr); });
|
||||
vk::DebugReportCallbackCreateInfoEXT dbgCreateInfo = {};
|
||||
dbgCreateInfo.pfnCallback = (PFN_vkDebugReportCallbackEXT)ValidationLayerCallback;
|
||||
dbgCreateInfo.flags = flags;
|
||||
msgCallback = instance.createDebugReportCallbackEXT(dbgCreateInfo, nullptr, dispatcher);
|
||||
msgCallback = instance.createDebugReportCallbackEXT(dbgCreateInfo, nullptr, dispatchLoaderDynamic);
|
||||
Logger::RENDER->info("Vulkan Validation Layer setup");
|
||||
}
|
||||
|
||||
void Debug::CloseValidationLayers(const vk::Instance& instance)
|
||||
void Debug::CloseValidationLayers(const vk::Instance& instance, vk::DispatchLoaderDynamic& dispatchLoaderDynamic)
|
||||
{
|
||||
std::call_once(dispatcherInitFlag, [&] { dispatcher.init(instance, &vkGetInstanceProcAddr); });
|
||||
instance.destroyDebugReportCallbackEXT(msgCallback, nullptr, dispatcher);
|
||||
instance.destroyDebugReportCallbackEXT(msgCallback, nullptr, dispatchLoaderDynamic);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user