diff --git a/base/VulkanDevice.cpp b/base/VulkanDevice.cpp index 8372afaa..0013f600 100644 --- a/base/VulkanDevice.cpp +++ b/base/VulkanDevice.cpp @@ -248,6 +248,10 @@ namespace vks deviceExtensions.push_back(VK_KHR_SWAPCHAIN_EXTENSION_NAME); } +#if defined(VK_USE_PLATFORM_MACOS_MVK) + deviceExtensions.push_back("VK_KHR_portability_subset"); +#endif + VkDeviceCreateInfo deviceCreateInfo = {}; deviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; deviceCreateInfo.queueCreateInfoCount = static_cast(queueCreateInfos.size());; diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp index 106145a5..dde64a19 100644 --- a/base/vulkanexamplebase.cpp +++ b/base/vulkanexamplebase.cpp @@ -51,6 +51,8 @@ VkResult VulkanExampleBase::createInstance(bool enableValidation) instanceExtensions.push_back(VK_MVK_IOS_SURFACE_EXTENSION_NAME); #elif defined(VK_USE_PLATFORM_MACOS_MVK) instanceExtensions.push_back(VK_MVK_MACOS_SURFACE_EXTENSION_NAME); + instanceExtensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + instanceExtensions.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME); #elif defined(VK_USE_PLATFORM_HEADLESS_EXT) instanceExtensions.push_back(VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME); #endif @@ -88,6 +90,11 @@ VkResult VulkanExampleBase::createInstance(bool enableValidation) instanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; instanceCreateInfo.pNext = NULL; instanceCreateInfo.pApplicationInfo = &appInfo; + +#if defined(VK_USE_PLATFORM_MACOS_MVK) + instanceCreateInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; +#endif + if (instanceExtensions.size() > 0) { if (settings.validation)