add .gitignore and update Vulkan instance creation for portability support
This commit is contained in:
parent
20224f19c3
commit
b5c15637ec
|
|
@ -0,0 +1,3 @@
|
|||
.idea/
|
||||
.vscode/
|
||||
VulkanTest
|
||||
5
Makefile
5
Makefile
|
|
@ -1,5 +1,6 @@
|
|||
CFLAGS = -std=c++17 -o2 -I. -I$(VULKAN_SDK_PATH)/include
|
||||
LDFLAGS = -L$(VULKAN_SDK_PATH)/lib `pkg-config --static --libs glfw3` -lvulkan -ldl -lpthread -lX11 -lXrandr -lXi
|
||||
VULKAN_SDK_PATH = /Users/wanghao/VulkanSDK/1.4.328.1/macOS
|
||||
CFLAGS = -std=c++17 -o2 -I. -I$(VULKAN_SDK_PATH)/include -I/opt/local/include
|
||||
LDFLAGS = -L$(VULKAN_SDK_PATH)/lib -L/opt/local/lib `pkg-config --static --libs glfw3` -lvulkan -ldl -lpthread -lX11
|
||||
|
||||
# create list of all spv files and set as dependency
|
||||
vertSources = $(shell find ./shaders -type f -name "*.vert")
|
||||
|
|
|
|||
|
|
@ -92,11 +92,12 @@ namespace hk
|
|||
appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
|
||||
appInfo.pEngineName = "No Engine";
|
||||
appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
|
||||
appInfo.apiVersion = VK_API_VERSION_1_0;
|
||||
appInfo.apiVersion = VK_API_VERSION_1_1;
|
||||
|
||||
VkInstanceCreateInfo createInfo = {};
|
||||
createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
|
||||
createInfo.pApplicationInfo = &appInfo;
|
||||
createInfo.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
|
||||
|
||||
auto extensions = getRequiredExtensions();
|
||||
createInfo.enabledExtensionCount = static_cast<uint32_t>(extensions.size());
|
||||
|
|
@ -183,8 +184,27 @@ namespace hk
|
|||
createInfo.pQueueCreateInfos = queueCreateInfos.data();
|
||||
|
||||
createInfo.pEnabledFeatures = &deviceFeatures;
|
||||
createInfo.enabledExtensionCount = static_cast<uint32_t>(deviceExtensions.size());
|
||||
createInfo.ppEnabledExtensionNames = deviceExtensions.data();
|
||||
|
||||
// Add device extensions, including portability subset if available (needed for MoltenVK)
|
||||
std::vector<const char*> enabledExtensions(deviceExtensions.begin(), deviceExtensions.end());
|
||||
|
||||
// Check if VK_KHR_portability_subset is available and add it if needed
|
||||
uint32_t extensionCount;
|
||||
vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extensionCount, nullptr);
|
||||
std::vector<VkExtensionProperties> availableExtensions(extensionCount);
|
||||
vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extensionCount, availableExtensions.data());
|
||||
|
||||
for (const auto &extension : availableExtensions)
|
||||
{
|
||||
if (strcmp(extension.extensionName, "VK_KHR_portability_subset") == 0)
|
||||
{
|
||||
enabledExtensions.push_back("VK_KHR_portability_subset");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
createInfo.enabledExtensionCount = static_cast<uint32_t>(enabledExtensions.size());
|
||||
createInfo.ppEnabledExtensionNames = enabledExtensions.data();
|
||||
|
||||
// might not really be necessary anymore because device specific validation layers
|
||||
// have been deprecated
|
||||
|
|
@ -314,6 +334,9 @@ namespace hk
|
|||
extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
|
||||
}
|
||||
|
||||
// Required for macOS MoltenVK portability
|
||||
extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
|
||||
|
||||
return extensions;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue