MCPcopy Create free account
hub / github.com/defold/defold / CreateInstance

Function CreateInstance

engine/graphics/src/vulkan/graphics_vulkan_context.cpp:185–292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

183 }
184
185 VkResult CreateInstance(VkInstance* vkInstanceOut,
186 uint32_t api_version,
187 const char** extensionNames, uint16_t extensionNameCount,
188 const char** validationLayers, uint16_t validationLayerCount,
189 const char** validationLayerExtensions, uint16_t validationLayerExtensionCount)
190 {
191 VkApplicationInfo vk_application_info = {};
192 VkInstanceCreateInfo vk_instance_create_info = {};
193 dmArray<const char*> vk_required_extensions;
194
195 vk_application_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
196 vk_application_info.pApplicationName = "Defold";
197 vk_application_info.pEngineName = "Defold Engine";
198 vk_application_info.applicationVersion = api_version;
199 vk_application_info.engineVersion = api_version;
200 vk_application_info.apiVersion = api_version;
201
202 vk_required_extensions.SetCapacity(extensionNameCount + validationLayerExtensionCount);
203
204 for (uint16_t i = 0; i < extensionNameCount; ++i)
205 {
206 vk_required_extensions.Push(extensionNames[i]);
207 }
208
209 int32_t enabled_layer_count = 0;
210 dmArray<VkExtensionProperties> extensions;
211 GetExtensions(extensions);
212
213 AddIfSupported(extensions, VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME, vk_required_extensions);
214 AddIfSupported(extensions, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, vk_required_extensions); // VK_EXT_fragment_shader_interlock
215
216 #ifdef __MACH__
217 static const char* VK_EXT_metal_objects_str = "VK_EXT_metal_objects";
218 AddIfSupported(extensions, VK_EXT_metal_objects_str, vk_required_extensions);
219 #else
220 static const char* VK_KHR_portability_enumeration_str = "VK_KHR_portability_enumeration";
221 AddIfSupported(extensions, VK_KHR_portability_enumeration_str, vk_required_extensions);
222 #endif
223
224 if (validationLayerCount > 0)
225 {
226 if (GetValidationSupport(validationLayers, validationLayerCount))
227 {
228 enabled_layer_count = validationLayerCount;
229
230 for (uint16_t i=0; i < validationLayerExtensionCount; ++i)
231 {
232 AddIfSupported(extensions, validationLayerExtensions[i], vk_required_extensions);
233 }
234 }
235 }
236
237 if (!ValidateRequiredExtensions(extensions, vk_required_extensions))
238 {
239 return VK_ERROR_EXTENSION_NOT_PRESENT;
240 }
241
242 vk_instance_create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;

Callers 4

VulkanIsSupportedFunction · 0.70
VulkanNewContextFunction · 0.70
PlayNodeParticlefxFunction · 0.50
CreateComponentFunction · 0.50

Calls 9

GetExtensionsFunction · 0.85
AddIfSupportedFunction · 0.85
GetValidationSupportFunction · 0.85
assertFunction · 0.50
SetCapacityMethod · 0.45
PushMethod · 0.45
SizeMethod · 0.45
BeginMethod · 0.45

Tested by

no test coverage detected