MCPcopy Create free account
hub / github.com/NVIDIA/cuda-samples / createInstance

Method createInstance

cpp/5_Domain_Specific/simpleVulkan/VulkanBaseApp.cpp:387–454  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

385}
386
387void VulkanBaseApp::createInstance()
388{
389 if (m_enableValidation && !supportsValidationLayers()) {
390 throw std::runtime_error("Validation requested, but not supported!");
391 }
392
393 VkApplicationInfo appInfo = {};
394 appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
395 appInfo.pApplicationName = m_appName.c_str();
396 appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
397 appInfo.pEngineName = "No Engine";
398 appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
399 appInfo.apiVersion = VK_API_VERSION_1_2;
400
401 VkInstanceCreateInfo createInfo = {};
402 createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
403 createInfo.pApplicationInfo = &appInfo;
404
405 std::vector<const char *> exts = getRequiredExtensions();
406
407 {
408 uint32_t glfwExtensionCount = 0;
409 const char **glfwExtensions;
410
411 glfwExtensions = glfwGetRequiredInstanceExtensions(&glfwExtensionCount);
412
413 exts.insert(exts.begin(), glfwExtensions, glfwExtensions + glfwExtensionCount);
414
415 if (m_enableValidation) {
416 exts.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
417 }
418 }
419
420 createInfo.enabledExtensionCount = static_cast<uint32_t>(exts.size());
421 createInfo.ppEnabledExtensionNames = exts.data();
422 VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo = {};
423 if (m_enableValidation) {
424 createInfo.enabledLayerCount = static_cast<uint32_t>(countof(validationLayers));
425 createInfo.ppEnabledLayerNames = validationLayers;
426
427 debugCreateInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
428 debugCreateInfo.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT
429 | VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT
430 | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
431 debugCreateInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT
432 | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT
433 | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
434 debugCreateInfo.pfnUserCallback = debugCallback;
435
436 createInfo.pNext = &debugCreateInfo;
437 }
438 else {
439 createInfo.enabledLayerCount = 0;
440 createInfo.pNext = nullptr;
441 }
442
443 if (vkCreateInstance(&createInfo, nullptr, &m_instance) != VK_SUCCESS) {
444 throw std::runtime_error("Failed to create Vulkan instance!");

Callers

nothing calls this directly

Calls 4

getRequiredExtensionsFunction · 0.85
dataMethod · 0.80
supportsValidationLayersFunction · 0.70
sizeMethod · 0.45

Tested by

no test coverage detected