spirv-val: Add missing SPV_EXT_descriptor_indexing caps (#6589)

(from
https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/11860)
Adds two missing `SPV_EXT_descriptor_indexing` from being allowed in
Vulkan1.2
diff --git a/source/val/validate_capability.cpp b/source/val/validate_capability.cpp
index 961590c..aae9dd9 100644
--- a/source/val/validate_capability.cpp
+++ b/source/val/validate_capability.cpp
@@ -212,6 +212,8 @@
     case spv::Capability::InputAttachmentArrayNonUniformIndexing:
     case spv::Capability::UniformTexelBufferArrayNonUniformIndexing:
     case spv::Capability::StorageTexelBufferArrayNonUniformIndexing:
+    case spv::Capability::InputAttachmentArrayDynamicIndexing:
+    case spv::Capability::ShaderNonUniform:
       return true;
     default:
       break;
diff --git a/test/val/val_capability_test.cpp b/test/val/val_capability_test.cpp
index 4224596..70fd98e 100644
--- a/test/val/val_capability_test.cpp
+++ b/test/val/val_capability_test.cpp
@@ -3481,6 +3481,52 @@
                         "capabilities: TileImageStencilReadAccessEXT"));
 }
 
+// https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/11860#issuecomment-4047435834
+TEST_F(ValidateCapability, InputAttachmentArrayDynamicIndexingVulkan12) {
+  const std::string spirv = R"(
+               OpCapability Shader
+               OpCapability InputAttachment
+               OpCapability InputAttachmentArrayDynamicIndexing
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %color %xs
+               OpExecutionMode %main OriginUpperLeft
+               OpDecorate %color Location 0
+               OpDecorate %xs Binding 0
+               OpDecorate %xs DescriptorSet 0
+               OpDecorate %xs InputAttachmentIndex 0
+               OpDecorate %index SpecId 0
+       %void = OpTypeVoid
+          %4 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+      %color = OpVariable %_ptr_Output_v4float Output
+         %11 = OpTypeImage %float SubpassData 0 0 0 2 Unknown
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_11_uint_4 = OpTypeArray %11 %uint_4
+%_ptr_UniformConstant__arr_11_uint_4 = OpTypePointer UniformConstant %_arr_11_uint_4
+         %xs = OpVariable %_ptr_UniformConstant__arr_11_uint_4 UniformConstant
+        %int = OpTypeInt 32 1
+      %index = OpSpecConstant %int 3
+%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
+      %int_0 = OpConstant %int 0
+      %v2int = OpTypeVector %int 2
+         %24 = OpConstantComposite %v2int %int_0 %int_0
+       %main = OpFunction %void None %4
+          %6 = OpLabel
+         %20 = OpAccessChain %_ptr_UniformConstant_11 %xs %index
+         %21 = OpLoad %11 %20
+         %25 = OpImageRead %v4float %21 %24
+               OpStore %color %25
+               OpReturn
+               OpFunctionEnd
+)";
+
+  CompileSuccessfully(spirv, SPV_ENV_VULKAN_1_2);
+  EXPECT_EQ(SPV_SUCCESS, ValidateInstructions(SPV_ENV_VULKAN_1_2));
+}
+
 }  // namespace
 }  // namespace val
 }  // namespace spvtools