aboutsummaryrefslogtreecommitdiff
path: root/source/val/validate_cfg.cpp
diff options
context:
space:
mode:
authorDavid Neto <dneto@google.com>2020-11-23 12:23:54 -0500
committerGitHub <noreply@github.com>2020-11-23 12:23:54 -0500
commitcd590fa3341284cd6d1ee82366155786cfd44c96 (patch)
tree87e1d8131765be919df9b76af0fbaa6411469878 /source/val/validate_cfg.cpp
parent671914c28e8249f0a555726a0f3f38691fe5c1df (diff)
downloadSPIRV-Tools-cd590fa3341284cd6d1ee82366155786cfd44c96.tar.gz
Update MeshShadingNV dependencies (and land Ray tracing updates) (#4028)
* Update to final ray tracing extensions Drop Provisional from ray tracing enums sed -ie 's/RayQueryProvisionalKHR/RayQueryKHR/g' **/* sed -ie 's/RayTracingProvisionalKHR/RayTracingKHR/g' **/* Add terminator support for SpvOpIgnoreIntersectionKHR and SpvOpTerminateRayKHR Update deps for SPIRV-Headers * Update capability dependencies for MeshShadingNV Accommodate https://github.com/KhronosGroup/SPIRV-Headers/pull/180 MeshShadingNV: enables PrimitiveId, Layer, and ViewportIndex Co-authored-by: Daniel Koch <dkoch@nvidia.com>
Diffstat (limited to 'source/val/validate_cfg.cpp')
-rw-r--r--source/val/validate_cfg.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/val/validate_cfg.cpp b/source/val/validate_cfg.cpp
index 8babd355..45edd0c9 100644
--- a/source/val/validate_cfg.cpp
+++ b/source/val/validate_cfg.cpp
@@ -1110,6 +1110,8 @@ spv_result_t CfgPass(ValidationState_t& _, const Instruction* inst) {
case SpvOpReturnValue:
case SpvOpUnreachable:
case SpvOpTerminateInvocation:
+ case SpvOpIgnoreIntersectionKHR:
+ case SpvOpTerminateRayKHR:
_.current_function().RegisterBlockEnd(std::vector<uint32_t>());
if (opcode == SpvOpKill) {
_.current_function().RegisterExecutionModelLimitation(
@@ -1121,6 +1123,17 @@ spv_result_t CfgPass(ValidationState_t& _, const Instruction* inst) {
SpvExecutionModelFragment,
"OpTerminateInvocation requires Fragment execution model");
}
+ if (opcode == SpvOpIgnoreIntersectionKHR) {
+ _.current_function().RegisterExecutionModelLimitation(
+ SpvExecutionModelAnyHitKHR,
+ "OpIgnoreIntersectionKHR requires AnyHit execution model");
+ }
+ if (opcode == SpvOpTerminateRayKHR) {
+ _.current_function().RegisterExecutionModelLimitation(
+ SpvExecutionModelAnyHitKHR,
+ "OpTerminateRayKHR requires AnyHit execution model");
+ }
+
break;
default:
break;