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)