layers: raytracing and descriptor indexing fixes
https://github.com/KhronosGroup/SPIRV-Tools/pull/2190 fixes a crash caused
by the OpTypeAccelerationStructureNV instruction being deleted. Also add
some missing shader stages for raytracing and mesh shaders.
diff --git a/layers/shader_validation.cpp b/layers/shader_validation.cpp
index c9c2024..b6e78dc 100644
--- a/layers/shader_validation.cpp
+++ b/layers/shader_validation.cpp
@@ -1567,8 +1567,16 @@
if (has_writable_descriptor) {
switch (stage) {
case VK_SHADER_STAGE_COMPUTE_BIT:
+ case VK_SHADER_STAGE_RAYGEN_BIT_NV:
+ case VK_SHADER_STAGE_ANY_HIT_BIT_NV:
+ case VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV:
+ case VK_SHADER_STAGE_MISS_BIT_NV:
+ case VK_SHADER_STAGE_INTERSECTION_BIT_NV:
+ case VK_SHADER_STAGE_CALLABLE_BIT_NV:
+ case VK_SHADER_STAGE_TASK_BIT_NV:
+ case VK_SHADER_STAGE_MESH_BIT_NV:
/* No feature requirements for writes and atomics from compute
- * stage */
+ * raytracing, or mesh stages */
break;
case VK_SHADER_STAGE_FRAGMENT_BIT:
skip |= RequireFeature(report_data, features->core.fragmentStoresAndAtomics, "fragmentStoresAndAtomics");
@@ -1793,6 +1801,16 @@
}
break;
+ case VK_SHADER_STAGE_RAYGEN_BIT_NV:
+ case VK_SHADER_STAGE_ANY_HIT_BIT_NV:
+ case VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV:
+ case VK_SHADER_STAGE_MISS_BIT_NV:
+ case VK_SHADER_STAGE_INTERSECTION_BIT_NV:
+ case VK_SHADER_STAGE_CALLABLE_BIT_NV:
+ case VK_SHADER_STAGE_TASK_BIT_NV:
+ case VK_SHADER_STAGE_MESH_BIT_NV:
+ break;
+
default:
assert(false); // This should never happen
}