23#ifdef ENABLE_VULKAN_VALIDATION_LAYERS
27bool Chronos::Engine::checkValidationLayerSupport()
30 vkEnumerateInstanceLayerProperties(&layerCount,
nullptr);
32 std::vector<VkLayerProperties> availableLayers(layerCount);
33 vkEnumerateInstanceLayerProperties(&layerCount, availableLayers.data());
35 for (
const char* layerName : validationLayers) {
36 bool layerFound =
false;
38 for (
const auto& layerProperties : availableLayers) {
39 if (strcmp(layerName, layerProperties.layerName) == 0) {
51#pragma GCC diagnostic push
52#pragma GCC diagnostic ignored "-Wunused-variable"
54VKAPI_ATTR VkBool32 VKAPI_CALL Chronos::Engine::debugCallback(
55 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
56 VkDebugUtilsMessageTypeFlagsEXT messageType,
57 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
void* pUserData)
91 std::cerr <<
"validation layer: " << pCallbackData->pMessage << std::endl;
95#pragma GCC diagnostic pop
99VkResult Chronos::Engine::CreateDebugUtilsMessengerEXT(VkInstance instance,
100 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
101 const VkAllocationCallbacks* pAllocator,
102 VkDebugUtilsMessengerEXT* pDebugMessenger)
104 auto func = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(
105 instance,
"vkCreateDebugUtilsMessengerEXT");
107 return func(instance, pCreateInfo, pAllocator, pDebugMessenger);
109 return VK_ERROR_EXTENSION_NOT_PRESENT;
113void Chronos::Engine::DestroyDebugUtilsMessengerEXT(VkInstance instance,
114 VkDebugUtilsMessengerEXT debugMessenger,
115 const VkAllocationCallbacks* pAllocator)
117 auto func = (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(
118 instance,
"vkDestroyDebugUtilsMessengerEXT");
120 func(instance, debugMessenger, pAllocator);
123void Chronos::Engine::populateDebugMessengerCreateInfo(
124 VkDebugUtilsMessengerCreateInfoEXT& createInfo)
127 createInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
130 createInfo.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT
131 | VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT
132 | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT
133 | VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT;
136 createInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT
137 | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT
138 | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
141 createInfo.pfnUserCallback = debugCallback;
Contains the functions needed for initalization of vulkan validation layers.