Merge pull request #369 from cdavis5e/8-bit-storage
Support the VK_KHR_8bit_storage extension.
diff --git a/Docs/MoltenVK_Runtime_UserGuide.md b/Docs/MoltenVK_Runtime_UserGuide.md
index cb276b0..bfe1eeb 100644
--- a/Docs/MoltenVK_Runtime_UserGuide.md
+++ b/Docs/MoltenVK_Runtime_UserGuide.md
@@ -222,6 +222,7 @@
In addition to the core *Vulkan* API, **MoltenVK** also supports the following *Vulkan* extensions:
- `VK_KHR_16bit_storage`
+- `VK_KHR_8bit_storage`
- `VK_KHR_dedicated_allocation`
- `VK_KHR_descriptor_update_template`
- `VK_KHR_get_memory_requirements2`
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
index 20a9900..95ccb53 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
@@ -74,6 +74,14 @@
next = (VkStructureType*)storageFeatures->pNext;
break;
}
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR: {
+ auto* storageFeatures = (VkPhysicalDevice8BitStorageFeaturesKHR*)next;
+ storageFeatures->storageBuffer8BitAccess = true;
+ storageFeatures->uniformAndStorageBuffer8BitAccess = true;
+ storageFeatures->storagePushConstant8 = true;
+ next = (VkStructureType*)storageFeatures->pNext;
+ break;
+ }
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: {
auto* divisorFeatures = (VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*)next;
divisorFeatures->vertexAttributeInstanceRateDivisor = true;
diff --git a/MoltenVK/MoltenVK/Layers/MVKExtensions.def b/MoltenVK/MoltenVK/Layers/MVKExtensions.def
index 6cb3b21..aa022c8 100644
--- a/MoltenVK/MoltenVK/Layers/MVKExtensions.def
+++ b/MoltenVK/MoltenVK/Layers/MVKExtensions.def
@@ -31,6 +31,7 @@
#endif
MVK_EXTENSION(KHR_16bit_storage, KHR_16BIT_STORAGE)
+MVK_EXTENSION(KHR_8bit_storage, KHR_8BIT_STORAGE)
MVK_EXTENSION(KHR_dedicated_allocation, KHR_DEDICATED_ALLOCATION)
MVK_EXTENSION(KHR_descriptor_update_template, KHR_DESCRIPTOR_UPDATE_TEMPLATE)
MVK_EXTENSION(KHR_get_memory_requirements2, KHR_GET_MEMORY_REQUIREMENTS_2)