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
|
VULKAN_SDK_PATH = /Users/wanghao/VulkanSDK/1.4.328.1/macOS
|
||||||
LDFLAGS = -L$(VULKAN_SDK_PATH)/lib `pkg-config --static --libs glfw3` -lvulkan -ldl -lpthread -lX11 -lXrandr -lXi
|
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
|
# create list of all spv files and set as dependency
|
||||||
vertSources = $(shell find ./shaders -type f -name "*.vert")
|
vertSources = $(shell find ./shaders -type f -name "*.vert")
|
||||||
|
|
|
||||||
|
|
@ -92,11 +92,12 @@ namespace hk
|
||||||
appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
|
appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
|
||||||
appInfo.pEngineName = "No Engine";
|
appInfo.pEngineName = "No Engine";
|
||||||
appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
|
appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
|
||||||
appInfo.apiVersion = VK_API_VERSION_1_0;
|
appInfo.apiVersion = VK_API_VERSION_1_1;
|
||||||
|
|
||||||
VkInstanceCreateInfo createInfo = {};
|
VkInstanceCreateInfo createInfo = {};
|
||||||
createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
|
createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
|
||||||
createInfo.pApplicationInfo = &appInfo;
|
createInfo.pApplicationInfo = &appInfo;
|
||||||
|
createInfo.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
|
||||||
|
|
||||||
auto extensions = getRequiredExtensions();
|
auto extensions = getRequiredExtensions();
|
||||||
createInfo.enabledExtensionCount = static_cast<uint32_t>(extensions.size());
|
createInfo.enabledExtensionCount = static_cast<uint32_t>(extensions.size());
|
||||||
|
|
@ -183,8 +184,27 @@ namespace hk
|
||||||
createInfo.pQueueCreateInfos = queueCreateInfos.data();
|
createInfo.pQueueCreateInfos = queueCreateInfos.data();
|
||||||
|
|
||||||
createInfo.pEnabledFeatures = &deviceFeatures;
|
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
|
// might not really be necessary anymore because device specific validation layers
|
||||||
// have been deprecated
|
// have been deprecated
|
||||||
|
|
@ -314,6 +334,9 @@ namespace hk
|
||||||
extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
|
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;
|
return extensions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue