Vulkan: Make provoking vertex optional for MoltenVK

Provoking vertex isn't supported by Metal and MoltenVK. As it only has
some minor artefacts we make it optional when using MoltenVK.

Pull Request: https://projects.blender.org/blender/blender/pulls/131815
This commit is contained in:
Jeroen Bakker
2024-12-13 09:56:37 +01:00
parent c698edcf70
commit b8d67aa10f
2 changed files with 7 additions and 0 deletions

View File

@@ -1010,7 +1010,11 @@ GHOST_TSuccess GHOST_ContextVK::initializeDrawingContext()
required_device_extensions.push_back(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
}
#ifdef __APPLE__
optional_device_extensions.push_back(VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME);
#else
required_device_extensions.push_back(VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME);
#endif
optional_device_extensions.push_back(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME);
optional_device_extensions.push_back(VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME);
optional_device_extensions.push_back(VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME);

View File

@@ -145,9 +145,12 @@ static Vector<StringRefNull> missing_capabilities_get(VkPhysicalDevice vk_physic
if (!extensions.contains(VK_KHR_SWAPCHAIN_EXTENSION_NAME)) {
missing_capabilities.append(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
}
#ifndef __APPLE__
/* Metal doesn't support provoking vertex. */
if (!extensions.contains(VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME)) {
missing_capabilities.append(VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME);
}
#endif
return missing_capabilities;
}