MCPcopy Create free account
hub / github.com/comaps/comaps / VulkanContextFactory

Method VulkanContextFactory

libs/drape/vulkan/vulkan_context_factory.cpp:76–248  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

74} // namespace
75
76VulkanContextFactory::VulkanContextFactory(uint32_t appVersionCode, int sdkVersion, bool isCustomROM)
77{
78 if (InitVulkan() == 0)
79 {
80 LOG_ERROR_VK("Could not initialize Vulkan library.");
81 return;
82 }
83
84 VkApplicationInfo appInfo = {};
85 appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
86 appInfo.pNext = nullptr;
87 appInfo.apiVersion = VK_MAKE_VERSION(1, 0, 0);
88 appInfo.applicationVersion = appVersionCode;
89 appInfo.engineVersion = appVersionCode;
90 appInfo.pApplicationName = "CoMaps";
91 appInfo.pEngineName = "Drape Engine";
92
93 bool enableDiagnostics = false;
94#ifdef ENABLE_VULKAN_DIAGNOSTICS
95 enableDiagnostics = true;
96#endif
97 m_layers = make_unique_dp<dp::vulkan::Layers>(enableDiagnostics);
98
99 VkInstanceCreateInfo instanceCreateInfo = {};
100 instanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
101 instanceCreateInfo.pNext = nullptr;
102 instanceCreateInfo.pApplicationInfo = &appInfo;
103 instanceCreateInfo.enabledExtensionCount = m_layers->GetInstanceExtensionsCount();
104 instanceCreateInfo.ppEnabledExtensionNames = m_layers->GetInstanceExtensions();
105 instanceCreateInfo.enabledLayerCount = m_layers->GetInstanceLayersCount();
106 instanceCreateInfo.ppEnabledLayerNames = m_layers->GetInstanceLayers();
107#if defined(OMIM_OS_MAC)
108 instanceCreateInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
109#endif
110
111 // Enable extra validation features.
112 VkValidationFeaturesEXT validationFeatures = {};
113 VkValidationFeatureEnableEXT const validationFeaturesEnabled[] = {
114 VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT};
115 if (m_layers->IsValidationFeaturesEnabled())
116 {
117 validationFeatures.sType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;
118 validationFeatures.pNext = nullptr;
119 validationFeatures.enabledValidationFeatureCount = ARRAY_SIZE(validationFeaturesEnabled),
120 validationFeatures.pEnabledValidationFeatures = validationFeaturesEnabled;
121
122 instanceCreateInfo.pNext = &validationFeatures;
123 }
124
125 VkResult statusCode;
126 statusCode = vkCreateInstance(&instanceCreateInfo, nullptr, &m_vulkanInstance);
127 if (statusCode != VK_SUCCESS)
128 {
129 LOG_ERROR_VK_CALL(vkCreateInstance, statusCode);
130 return;
131 }
132
133 uint32_t gpuCount = 0;

Callers

nothing calls this directly

Calls 15

InitVulkanFunction · 0.85
make_refFunction · 0.85
GetInstanceExtensionsMethod · 0.80
GetInstanceLayersMethod · 0.80
IsVulkanForbiddenMethod · 0.80
GetDeviceLayersCountMethod · 0.80
GetDeviceLayersMethod · 0.80
GetDeviceExtensionsMethod · 0.80

Tested by

no test coverage detected