From a2533116b3f4343387a9223ce07ff46af8cba037 Mon Sep 17 00:00:00 2001 From: Chip Davis Date: Mon, 15 Jul 2019 12:20:31 -0500 Subject: [PATCH] Support the VK_KHR_uniform_buffer_standard_layout extension. This happens to fall out of the way structure layouts are handled in SPIRV-Cross. --- Docs/MoltenVK_Runtime_UserGuide.md | 1 + MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm | 5 +++++ MoltenVK/MoltenVK/Layers/MVKExtensions.def | 1 + 3 files changed, 7 insertions(+) diff --git a/Docs/MoltenVK_Runtime_UserGuide.md b/Docs/MoltenVK_Runtime_UserGuide.md index a0d5107c..a89e6726 100644 --- a/Docs/MoltenVK_Runtime_UserGuide.md +++ b/Docs/MoltenVK_Runtime_UserGuide.md @@ -247,6 +247,7 @@ In addition to the core *Vulkan* API, **MoltenVK** also supports the following - `VK_KHR_surface` - `VK_KHR_swapchain` - `VK_KHR_swapchain_mutable_format` +- `VK_KHR_uniform_buffer_standard_layout` - `VK_KHR_variable_pointers` - `VK_EXT_debug_marker` - `VK_EXT_debug_report` diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm index 30c2a4a4..adf5d68a 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm @@ -93,6 +93,11 @@ void MVKPhysicalDevice::getFeatures(VkPhysicalDeviceFeatures2* features) { f16Features->shaderInt8 = true; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR: { + auto* uboLayoutFeatures = (VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR*)next; + uboLayoutFeatures->uniformBufferStandardLayout = true; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES: { auto* varPtrFeatures = (VkPhysicalDeviceVariablePointerFeatures*)next; varPtrFeatures->variablePointersStorageBuffer = true; diff --git a/MoltenVK/MoltenVK/Layers/MVKExtensions.def b/MoltenVK/MoltenVK/Layers/MVKExtensions.def index 2d9e0e1f..5235f435 100644 --- a/MoltenVK/MoltenVK/Layers/MVKExtensions.def +++ b/MoltenVK/MoltenVK/Layers/MVKExtensions.def @@ -51,6 +51,7 @@ MVK_EXTENSION(KHR_storage_buffer_storage_class, KHR_STORAGE_BUFFER_STORAGE_CLASS MVK_EXTENSION(KHR_surface, KHR_SURFACE) MVK_EXTENSION(KHR_swapchain, KHR_SWAPCHAIN) MVK_EXTENSION(KHR_swapchain_mutable_format, KHR_SWAPCHAIN_MUTABLE_FORMAT) +MVK_EXTENSION(KHR_uniform_buffer_standard_layout, KHR_UNIFORM_BUFFER_STANDARD_LAYOUT) MVK_EXTENSION(KHR_variable_pointers, KHR_VARIABLE_POINTERS) MVK_EXTENSION(EXT_debug_marker, EXT_DEBUG_MARKER) MVK_EXTENSION(EXT_debug_report, EXT_DEBUG_REPORT)