MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Tools / AppInstance

Method AppInstance

vulkaninfo/vulkaninfo.h:559–621  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

557 struct _screen_window *window;
558#endif
559 AppInstance() {
560 VkResult dllErr = load_vulkan_library();
561
562 if (dllErr != VK_SUCCESS) {
563 THROW_ERR("Failed to initialize: " API_NAME " loader is not installed, not found, or failed to load.");
564 }
565
566 uint32_t instance_version = VK_API_VERSION_1_0;
567 if (vkEnumerateInstanceVersion) {
568 const VkResult err = vkEnumerateInstanceVersion(&instance_version);
569 if (err) THROW_VK_ERR("vkEnumerateInstanceVersion", err);
570 }
571
572 api_version = APIVersion(instance_version);
573 // fallback to baked header version if loader returns 0 for the patch version
574 if (api_version.Patch() == 0) api_version.SetPatch(VK_HEADER_VERSION);
575
576 AppGetInstanceExtensions();
577
578 const VkDebugReportCallbackCreateInfoEXT dbg_info = {VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, nullptr,
579 VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT,
580 DbgCallback};
581
582 const VkApplicationInfo app_info = {
583 VK_STRUCTURE_TYPE_APPLICATION_INFO, nullptr, APP_SHORT_NAME, 1, nullptr, 0, instance_version};
584
585 AppCompileInstanceExtensionsToEnable();
586
587 std::vector<const char *> inst_exts;
588 for (const auto &ext : inst_extensions) {
589 inst_exts.push_back(ext.c_str());
590 }
591
592 const VkInstanceCreateInfo inst_info = {
593 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
594 &dbg_info,
595 (CheckExtensionEnabled(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME)
596 ? static_cast<VkInstanceCreateFlags>(VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR)
597 : 0),
598 &app_info,
599 0,
600 nullptr,
601 static_cast<uint32_t>(inst_exts.size()),
602 inst_exts.data()};
603
604 VkResult err = vkCreateInstance(&inst_info, nullptr, &instance);
605 if (err == VK_ERROR_INCOMPATIBLE_DRIVER) {
606 std::cerr << "Cannot create " API_NAME " instance.\n";
607 std::cerr << "This problem is often caused by a faulty installation of the " API_NAME
608 " driver or attempting to use a GPU "
609 "that does not support " API_NAME ".\n";
610 THROW_VK_ERR("vkCreateInstance", err);
611 } else if (err) {
612 THROW_VK_ERR("vkCreateInstance", err);
613 }
614
615 load_vulkan_instance_functions(instance);
616

Callers

nothing calls this directly

Calls 5

APIVersionClass · 0.85
PatchMethod · 0.80
SetPatchMethod · 0.80
load_vulkan_libraryFunction · 0.70

Tested by

no test coverage detected