MCPcopy Create free account
hub / github.com/WiVRn/WiVRn / initialize_vulkan

Method initialize_vulkan

client/application.cpp:743–985  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

741}
742
743void application::initialize_vulkan()
744{
745 auto graphics_requirements = xr_system_id.graphics_requirements();
746 XrVersion vulkan_version = std::max(app_info.min_vulkan_version, graphics_requirements.minApiVersionSupported);
747 spdlog::info("OpenXR runtime wants Vulkan {}", xr::to_string(graphics_requirements.minApiVersionSupported));
748 spdlog::info("Requesting Vulkan {}", xr::to_string(vulkan_version));
749
750 std::vector<const char *> layers;
751
752 spdlog::info("Available Vulkan layers:");
753 [[maybe_unused]] bool validation_layer_found = false;
754
755 for (vk::LayerProperties & i: vk_context.enumerateInstanceLayerProperties())
756 {
757 spdlog::info(" {}", i.layerName.data());
758 if (!strcmp(i.layerName, "VK_LAYER_KHRONOS_validation"))
759 {
760 validation_layer_found = true;
761 }
762 }
763#ifndef NDEBUG
764#ifdef __ANDROID__
765 if (validation_layer_found)
766 {
767 spdlog::info("Using Vulkan validation layer");
768 layers.push_back("VK_LAYER_KHRONOS_validation");
769 }
770#endif
771 bool debug_report_found = false;
772 bool debug_utils_found = false;
773#endif
774
775 std::vector<const char *> instance_extensions{};
776 std::unordered_set<std::string_view> optional_device_extensions{};
777
778 spdlog::info("Available Vulkan instance extensions:");
779 std::vector<std::pair<std::string, int>> extensions;
780 for (vk::ExtensionProperties & i: vk_context.enumerateInstanceExtensionProperties(nullptr))
781 {
782 extensions.emplace_back(i.extensionName.data(), i.specVersion);
783
784#ifndef NDEBUG
785 if (!strcmp(i.extensionName, VK_EXT_DEBUG_REPORT_EXTENSION_NAME))
786 {
787 debug_report_found = true;
788 instance_extensions.push_back(VK_EXT_DEBUG_REPORT_EXTENSION_NAME);
789 }
790
791 if (!strcmp(i.extensionName, VK_EXT_DEBUG_UTILS_EXTENSION_NAME) and get_hmd_traits().vk_debug_ext_allowed)
792 {
793 debug_utils_found = true;
794 instance_extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
795 }
796#endif
797 }
798 std::ranges::sort(extensions);
799 for (const auto & [extension_name, spec_version]: extensions)
800 spdlog::info(" {} (version {})", extension_name, spec_version);

Callers

nothing calls this directly

Calls 15

to_stringFunction · 0.85
parse_driver_sersionFunction · 0.85
graphics_requirementsMethod · 0.80
physical_deviceMethod · 0.80
findMethod · 0.80
create_deviceMethod · 0.80
containsFunction · 0.50
dataMethod · 0.45
push_backMethod · 0.45
emplaceMethod · 0.45
clearMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected