40 const std::vector<const char*>& required_extensions)
49 vk::ApplicationInfo app_info {};
50 app_info.pApplicationName =
"MayaFlux";
51 app_info.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
52 app_info.pEngineName =
"MayaFlux Engine";
53 app_info.engineVersion = VK_MAKE_VERSION(1, 0, 0);
54 app_info.apiVersion = VK_API_VERSION_1_3;
56 vk::InstanceCreateInfo create_info {};
57 create_info.pApplicationInfo = &app_info;
59 std::vector<const char*> extensions = required_extensions;
61#ifdef MAYAFLUX_PLATFORM_MACOS
62 extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
63 create_info.flags = vk::InstanceCreateFlagBits::eEnumeratePortabilityKHR;
67 extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
69 create_info.enabledExtensionCount =
static_cast<uint32_t
>(extensions.size());
70 create_info.ppEnabledExtensionNames = extensions.data();
72 vk::DebugUtilsMessengerCreateInfoEXT debug_create_info {};
78 debug_create_info.messageSeverity = vk::DebugUtilsMessageSeverityFlagBitsEXT::eVerbose
79 | vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning | vk::DebugUtilsMessageSeverityFlagBitsEXT::eError;
81 debug_create_info.messageType = vk::DebugUtilsMessageTypeFlagBitsEXT::eGeneral
82 | vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation
83 | vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance;
86 create_info.pNext = &debug_create_info;
89 create_info.enabledLayerCount = 0;
90 create_info.pNext =
nullptr;
97 }
catch (
const std::exception& e) {
99 std::source_location::current(),
100 "Failed to create Vulkan instance: {}", e.what());
151 vk::DebugUtilsMessengerCreateInfoEXT create_info {};
153 create_info.messageSeverity = vk::DebugUtilsMessageSeverityFlagBitsEXT::eVerbose
154 | vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning | vk::DebugUtilsMessageSeverityFlagBitsEXT::eError;
156 create_info.messageType = vk::DebugUtilsMessageTypeFlagBitsEXT::eGeneral
157 | vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation
158 | vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance;
161 create_info.pUserData =
nullptr;
165 }
catch (
const std::exception& e) {
167 std::source_location::current(),
168 "Failed to set up debug messenger: {}", e.what());
static vk::Bool32 debug_callback(vk::DebugUtilsMessageSeverityFlagBitsEXT message_severity, vk::DebugUtilsMessageTypeFlagsEXT message_types, const vk::DebugUtilsMessengerCallbackDataEXT *p_callback_data, void *p_user_data)
Validation layer callback.