summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Piñeiro <[email protected]>2018-07-13 13:34:08 +0200
committerAlejandro Piñeiro <[email protected]>2018-07-31 13:33:28 +0200
commitd69027536ca04b5270eae4c1621aded1e581a64e (patch)
treece310ced7adeddade846a290337f3b4234988fe6
parent1e3f61d1d54f16328d7b8c61cdb1938b5ce04d41 (diff)
compiler/spirv: add XFB and GeometryStreams capability check support
Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r--src/compiler/shader_info.h2
-rw-r--r--src/compiler/spirv/spirv_to_nir.c10
2 files changed, 10 insertions, 2 deletions
diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h
index e9ca222dea8..dab15b58894 100644
--- a/src/compiler/shader_info.h
+++ b/src/compiler/shader_info.h
@@ -60,6 +60,8 @@ struct spirv_supported_capabilities {
bool atomic_storage;
bool storage_8bit;
bool post_depth_coverage;
+ bool transform_feedback;
+ bool geometry_streams;
};
typedef struct shader_info {
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index f0a5fae4a64..32ebdd78a1f 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -3417,7 +3417,6 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
case SpvCapabilityStorageImageExtendedFormats:
break;
- case SpvCapabilityGeometryStreams:
case SpvCapabilityLinkage:
case SpvCapabilityVector16:
case SpvCapabilityFloat16Buffer:
@@ -3427,7 +3426,6 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
case SpvCapabilityInt8:
case SpvCapabilitySparseResidency:
case SpvCapabilityMinLod:
- case SpvCapabilityTransformFeedback:
vtn_warn("Unsupported SPIR-V capability: %s",
spirv_capability_to_string(cap));
break;
@@ -3446,6 +3444,14 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
spv_check_supported(int16, cap);
break;
+ case SpvCapabilityTransformFeedback:
+ spv_check_supported(transform_feedback, cap);
+ break;
+
+ case SpvCapabilityGeometryStreams:
+ spv_check_supported(geometry_streams, cap);
+ break;
+
case SpvCapabilityAddresses:
case SpvCapabilityKernel:
case SpvCapabilityImageBasic: