| 683 | } |
| 684 | |
| 685 | void HelloVK::createInstance() { |
| 686 | assert(!enableValidationLayers || |
| 687 | checkValidationLayerSupport()); // validation layers requested, but |
| 688 | // not available! |
| 689 | auto requiredExtensions = getRequiredExtensions(enableValidationLayers); |
| 690 | |
| 691 | VkApplicationInfo appInfo{}; |
| 692 | appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; |
| 693 | appInfo.pApplicationName = "Hello Triangle"; |
| 694 | appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0); |
| 695 | appInfo.pEngineName = "No Engine"; |
| 696 | appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0); |
| 697 | appInfo.apiVersion = VK_API_VERSION_1_0; |
| 698 | |
| 699 | VkInstanceCreateInfo createInfo{}; |
| 700 | createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; |
| 701 | createInfo.pApplicationInfo = &appInfo; |
| 702 | createInfo.enabledExtensionCount = (uint32_t)requiredExtensions.size(); |
| 703 | createInfo.ppEnabledExtensionNames = requiredExtensions.data(); |
| 704 | createInfo.pApplicationInfo = &appInfo; |
| 705 | |
| 706 | if (enableValidationLayers) { |
| 707 | VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo{}; |
| 708 | createInfo.enabledLayerCount = |
| 709 | static_cast<uint32_t>(validationLayers.size()); |
| 710 | createInfo.ppEnabledLayerNames = validationLayers.data(); |
| 711 | populateDebugMessengerCreateInfo(debugCreateInfo); |
| 712 | createInfo.pNext = (VkDebugUtilsMessengerCreateInfoEXT*)&debugCreateInfo; |
| 713 | } else { |
| 714 | createInfo.enabledLayerCount = 0; |
| 715 | createInfo.pNext = nullptr; |
| 716 | } |
| 717 | VK_CHECK(vkCreateInstance(&createInfo, nullptr, &instance)); |
| 718 | |
| 719 | uint32_t extensionCount = 0; |
| 720 | vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr); |
| 721 | std::vector<VkExtensionProperties> extensions(extensionCount); |
| 722 | vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, |
| 723 | extensions.data()); |
| 724 | LOGI("available extensions"); |
| 725 | for (const auto& extension : extensions) { |
| 726 | LOGI("\t %s", extension.extensionName); |
| 727 | } |
| 728 | } |
| 729 | |
| 730 | /* |
| 731 | * createSurface can only be called after the android ecosystem has had the |
nothing calls this directly
no test coverage detected