Merge pull request #286 from cdavis5e/resource-array-dynamic-indexing

Support the shader{Sampled,Storage}ImageArrayDynamicIndexing feature.
diff --git a/ExternalRevisions/SPIRV-Cross_repo_revision b/ExternalRevisions/SPIRV-Cross_repo_revision
index 5c42fbc..91450c6 100644
--- a/ExternalRevisions/SPIRV-Cross_repo_revision
+++ b/ExternalRevisions/SPIRV-Cross_repo_revision
@@ -1 +1 @@
-2d6ce39bda9af95b78da6bcd8d60fb0ffac4f14d
+c9210427b9ab547d41f1af804dedae581b382965
diff --git a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
index dcc4570..9583b20 100644
--- a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
+++ b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
@@ -48,7 +48,7 @@
  */
 #define MVK_VERSION_MAJOR   1
 #define MVK_VERSION_MINOR   0
-#define MVK_VERSION_PATCH   22
+#define MVK_VERSION_PATCH   23
 
 #define MVK_MAKE_VERSION(major, minor, patch)    (((major) * 10000) + ((minor) * 100) + (patch))
 #define MVK_VERSION     MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
index 1d08714..e272b35 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
@@ -534,6 +534,10 @@
     if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_iOS_GPUFamily3_v1] ) {
         _features.occlusionQueryPrecise = true;
     }
+    if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_iOS_GPUFamily3_v2] ) {
+        _features.shaderSampledImageArrayDynamicIndexing = true;
+        _features.shaderStorageImageArrayDynamicIndexing = true;
+    }
 	if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_iOS_GPUFamily2_v4] ) {
 		_features.depthClamp = true;
 	}
@@ -553,6 +557,8 @@
 
     if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_macOS_GPUFamily1_v3] ) {
         _features.multiViewport = true;
+        _features.shaderSampledImageArrayDynamicIndexing = true;
+        _features.shaderStorageImageArrayDynamicIndexing = true;
     }
 
 #endif
@@ -596,9 +602,9 @@
 //    VkBool32    shaderStorageImageReadWithoutFormat;          // done
 //    VkBool32    shaderStorageImageWriteWithoutFormat;         // done
 //    VkBool32    shaderUniformBufferArrayDynamicIndexing;      // done
-//    VkBool32    shaderSampledImageArrayDynamicIndexing;
+//    VkBool32    shaderSampledImageArrayDynamicIndexing;       // done
 //    VkBool32    shaderStorageBufferArrayDynamicIndexing;      // done
-//    VkBool32    shaderStorageImageArrayDynamicIndexing;
+//    VkBool32    shaderStorageImageArrayDynamicIndexing;       // done
 //    VkBool32    shaderClipDistance;                           // done
 //    VkBool32    shaderCullDistance;
 //    VkBool32    shaderFloat64;