spirv: Add basic plumbing for ray-tracing capabilities
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6479>
diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h
index 8d77d5c..680fff6 100644
--- a/src/compiler/shader_info.h
+++ b/src/compiler/shader_info.h
@@ -66,6 +66,9 @@
bool multiview;
bool physical_storage_buffer_address;
bool post_depth_coverage;
+ bool ray_tracing;
+ bool ray_query;
+ bool ray_traversal_primitive_culling;
bool runtime_descriptor_array;
bool float_controls;
bool shader_clock;
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 0f89a78..b9b0854 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -4401,6 +4401,18 @@
spv_check_supported(intel_subgroup_buffer_block_io, cap);
break;
+ case SpvCapabilityRayTracingProvisionalKHR:
+ spv_check_supported(ray_tracing, cap);
+ break;
+
+ case SpvCapabilityRayQueryProvisionalKHR:
+ spv_check_supported(ray_query, cap);
+ break;
+
+ case SpvCapabilityRayTraversalPrimitiveCullingProvisionalKHR:
+ spv_check_supported(ray_traversal_primitive_culling, cap);
+ break;
+
default:
vtn_fail("Unhandled capability: %s (%u)",
spirv_capability_to_string(cap), cap);