summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan A. Suarez Romero <jasuarez@igalia.com>2019-04-29 17:02:45 +0200
committerDylan Baker <dylan@pnwbakers.com>2019-05-08 16:40:18 -0700
commitf807986a383d07c232bba59573c435935dad3afd (patch)
treec4bb76d1d39e47d7d9bc5e3160cc82b6b64c5a75
parentb66205a140d055ba0143b67f56021f6183efedad (diff)
spirv: add missing SPV_EXT_descriptor_indexing capabilities
Add ShaderNonUniformEXT, UniformBufferArrayNonUniformIndexingEXT, SampledImageArrayNonUniformIndexingEXT, StorageBufferArrayNonUniformIndexingEXT, StorageImageArrayNonUniformIndexingEXT, InputAttachmentArrayNonUniformIndexingEXT, UniformTexelBufferArrayNonUniformIndexingEXT and StorageTexelBufferArrayNonUniformIndexingEXT capabilities. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> (cherry picked from commit bbbe00a1016bd7b9e777a94fbe92477dc6109678)
-rw-r--r--src/compiler/shader_info.h2
-rw-r--r--src/compiler/spirv/spirv_to_nir.c14
2 files changed, 16 insertions, 0 deletions
diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h
index c3dbe764961..e82f465b256 100644
--- a/src/compiler/shader_info.h
+++ b/src/compiler/shader_info.h
@@ -36,6 +36,8 @@ struct spirv_supported_capabilities {
bool address;
bool atomic_storage;
bool descriptor_array_dynamic_indexing;
+ bool descriptor_array_non_uniform_indexing;
+ bool descriptor_indexing;
bool device_group;
bool draw_parameters;
bool float64;
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 6b9c831bfad..f76cac88f18 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -3701,12 +3701,26 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
spv_check_supported(storage_8bit, cap);
break;
+ case SpvCapabilityShaderNonUniformEXT:
+ spv_check_supported(descriptor_indexing, cap);
+ break;
+
case SpvCapabilityInputAttachmentArrayDynamicIndexingEXT:
case SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT:
case SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT:
spv_check_supported(descriptor_array_dynamic_indexing, cap);
break;
+ case SpvCapabilityUniformBufferArrayNonUniformIndexingEXT:
+ case SpvCapabilitySampledImageArrayNonUniformIndexingEXT:
+ case SpvCapabilityStorageBufferArrayNonUniformIndexingEXT:
+ case SpvCapabilityStorageImageArrayNonUniformIndexingEXT:
+ case SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT:
+ case SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT:
+ case SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT:
+ spv_check_supported(descriptor_array_non_uniform_indexing, cap);
+ break;
+
case SpvCapabilityRuntimeDescriptorArrayEXT:
spv_check_supported(runtime_descriptor_array, cap);
break;