Repository navigation
spirv-val: Require motion blur and position fetch capabilities for SER - #7007
Conversation
The SER motion instructions and the hit object current time and triangle vertex position queries also require the RayTracingMotionBlurNV or RayTracingPositionFetchKHR capability. Listing those as additional enabling capabilities in the grammar did not enforce this, because any one enabling capability is sufficient and every hit object instruction already requires the shader invocation reorder capability. Check the extra capability explicitly, as is already done for OpHitObjectRecordFromQueryEXT and RayQueryKHR, and update the tests to declare the capabilities and cover the error. See KhronosGroup/SPIRV-Registry#462. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The CI-shaderc-smoketest failure is a glslang bug that this check exposes: glslang doesn't declare RayTracingMotionBlurNV / RayTracingPositionFetchKHR for these hit object instructions, so its spv.{ext,nv}.hitobject-allops tests fail the new validation. Fix: KhronosGroup/glslang#4503 (all glslang tests pass against this PR with it). This PR should wait until that lands. CI-dxc-smoketest is also failing on main and other recent PRs, so it's unrelated. ▎ AI-assisted comment drafting: Claude claude-opus-5-5 (Anthropic, commercial SaaS) |
|
@dgkoch before I merge this, the shaderc smoketest shows that this causes some glslang tests to become invalid. Can you confirm that glslang should be fixed? |
@alan-baker they were already fixed in KhronosGroup/glslang#4503 - can you re-trigger that CI, or do I need to re-push to force a re-run? |
I've kicked another build. It should grab ToT. Yes, DXC is not rolling updates very well. We're considering disabling that bot due to all the noise. |
Enforces the requirements clarified in KhronosGroup/SPIRV-Registry#463
(KhronosGroup/SPIRV-Registry#462):
the RayTracingMotionBlurNV capability.
RayTracingPositionFetchKHR capability.
These were never enforced. The grammar listed some of them as additional
enabling capabilities, but any one enabling capability is sufficient, and
the hit object type already requires the shader invocation reorder
capability.
The check is done up front in the NV and EXT reorder passes, in the same
style as the existing OpHitObjectRecordFromQueryEXT / RayQueryKHR check.
OpHitObjectRecordHitMotionNV, OpHitObjectRecordHitWithIndexMotionNV and
OpHitObjectRecordMissMotionNV weren't otherwise handled in the NV pass.
Tests: the existing tests that use these instructions now declare the
required capability and also check the new error when it's missing. A test
for OpHitObjectGetCurrentTimeNV is added.
This doesn't depend on the SPIRV-Headers change
(KhronosGroup/SPIRV-Headers#643). test_val_rstuvw passes against the
currently pinned headers, and all validator test suites pass against the
updated grammar.
▎ GenAI disclosure: Draft assisted by Claude (claude-opus-5-5, Anthropic, commercial SaaS — Claude Code CLI).
🤖 Generated with Claude Code