From 3ea2ab741294b4f580c037e5d62d4a07c9456aa4 Mon Sep 17 00:00:00 2001 From: sean Date: Sat, 30 Dec 2023 05:00:01 +0100 Subject: [PATCH] Add: KHR_vertex_attribute_divisor --- Docs/MoltenVK_Runtime_UserGuide.md | 1 + ExternalRevisions/Vulkan-Headers_repo_revision | 2 +- MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm | 6 ++++++ MoltenVK/MoltenVK/Layers/MVKExtensions.def | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Docs/MoltenVK_Runtime_UserGuide.md b/Docs/MoltenVK_Runtime_UserGuide.md index 36329b5a..3f9cf223 100644 --- a/Docs/MoltenVK_Runtime_UserGuide.md +++ b/Docs/MoltenVK_Runtime_UserGuide.md @@ -358,6 +358,7 @@ In addition to core *Vulkan* functionality, **MoltenVK** also supports the foll - `VK_KHR_timeline_semaphore` - `VK_KHR_uniform_buffer_standard_layout` - `VK_KHR_variable_pointers` +- `VK_KHR_vertex_attribute_divisor` - `VK_EXT_4444_formats` - *Requires 16-bit formats and either native texture swizzling or manual swizzling to be enabled.* - `VK_EXT_buffer_device_address` diff --git a/ExternalRevisions/Vulkan-Headers_repo_revision b/ExternalRevisions/Vulkan-Headers_repo_revision index d9d0ec41..abc18801 100644 --- a/ExternalRevisions/Vulkan-Headers_repo_revision +++ b/ExternalRevisions/Vulkan-Headers_repo_revision @@ -1 +1 @@ -19a863ccce773ff393b186329478b1eb1a519fd3 +41263fc5aa994b8eafaca946583bfcceca8ca419 diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm index a47b4e62..06ff84a9 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm @@ -762,6 +762,12 @@ void MVKPhysicalDevice::getProperties(VkPhysicalDeviceProperties2* properties) { portabilityProps->minVertexInputBindingStrideAlignment = (uint32_t)_metalFeatures.vertexStrideAlignment; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR: { + auto* divisorProps = (VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR*)next; + divisorProps->maxVertexAttribDivisor = kMVKUndefinedLargeUInt32; + divisorProps->supportsNonZeroFirstInstance = VK_TRUE; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT: { auto* extDynState3Props = (VkPhysicalDeviceExtendedDynamicState3PropertiesEXT*)next; extDynState3Props->dynamicPrimitiveTopologyUnrestricted = false; diff --git a/MoltenVK/MoltenVK/Layers/MVKExtensions.def b/MoltenVK/MoltenVK/Layers/MVKExtensions.def index c9917b79..c3abb45f 100644 --- a/MoltenVK/MoltenVK/Layers/MVKExtensions.def +++ b/MoltenVK/MoltenVK/Layers/MVKExtensions.def @@ -95,6 +95,7 @@ MVK_EXTENSION(KHR_synchronization2, KHR_SYNCHRONIZATION_2, MVK_EXTENSION(KHR_timeline_semaphore, KHR_TIMELINE_SEMAPHORE, DEVICE, 10.11, 8.0, 1.0) MVK_EXTENSION(KHR_uniform_buffer_standard_layout, KHR_UNIFORM_BUFFER_STANDARD_LAYOUT, DEVICE, 10.11, 8.0, 1.0) MVK_EXTENSION(KHR_variable_pointers, KHR_VARIABLE_POINTERS, DEVICE, 10.11, 8.0, 1.0) +MVK_EXTENSION(KHR_vertex_attribute_divisor, KHR_VERTEX_ATTRIBUTE_DIVISOR, DEVICE, 10.11, 8.0, 1.0) MVK_EXTENSION(KHR_vulkan_memory_model, KHR_VULKAN_MEMORY_MODEL, DEVICE, MVK_NA, MVK_NA, MVK_NA) MVK_EXTENSION(EXT_4444_formats, EXT_4444_FORMATS, DEVICE, 11.0, 13.0, 1.0) MVK_EXTENSION(EXT_buffer_device_address, EXT_BUFFER_DEVICE_ADDRESS, DEVICE, 13.0, 16.0, 1.0)