Repository navigation
Conversation
OpHitObjectGetCurrentTimeEXT and OpHitObjectGetCurrentTimeNV need SPV_NV_ray_tracing_motion_blur, and OpHitObjectGetIntersectionTriangleVertexPositionsEXT needs SPV_KHR_ray_tracing_position_fetch. Neither requirement was expressed as a capability, and the current time instructions were missing from the motion blur interactions. Listing a second enabling capability would not express this, because multiple enabling capabilities mean that any one of them is sufficient. Instead, keep the shader invocation reorder capability as the enabling capability and state in each instruction description that the RayTracingMotionBlurNV or RayTracingPositionFetchKHR capability must also be declared. Add the current time instructions to the SPV_NV_ray_tracing_motion_blur interactions so those sections list every instruction that depends on the interacting extension. Fixes KhronosGroup#462 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The SER motion instructions listed both the shader invocation reorder capability and RayTracingMotionBlurNV as enabling capabilities. Because any one enabling capability is sufficient, and every hit object instruction already needs the shader invocation reorder capability, that did not require RayTracingMotionBlurNV. The descriptions instead referred to the SPV_NV_ray_tracing_motion_blur extension. List only the shader invocation reorder capability, and state in each description that the RayTracingMotionBlurNV capability must also be declared, matching the current time instructions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 28, 2026
spirv-val: Require motion blur and position fetch capabilities for SER
KhronosGroup/SPIRV-Tools#7007
Merged
alan-baker
pushed a commit
to KhronosGroup/SPIRV-Tools
that referenced
this pull request
Oct 30, 2026
#7007) Enforces the requirements clarified in KhronosGroup/SPIRV-Registry#463 (KhronosGroup/SPIRV-Registry#462): - The SER motion instructions and OpHitObjectGetCurrentTime{NV,EXT} require the RayTracingMotionBlurNV capability. - OpHitObjectGetIntersectionTriangleVertexPositionsEXT requires the 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](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #462.
Several SPV_EXT_shader_invocation_reorder and SPV_NV_shader_invocation_reorder
instructions also require a capability from an interacting extension:
instructions require RayTracingMotionBlurNV.
RayTracingPositionFetchKHR.
Listing these as a second enabling capability does not express that, because
any one enabling capability is sufficient, and every hit object instruction
already needs the shader invocation reorder capability. Following the
recommendation of the Working Group, the shader invocation reorder capability
stays the only enabling capability, and each instruction description states
that the other capability must also be declared.
Commits:
SPV_EXT_shader_invocation_reorder#462 (current time, EXT and NV; trianglevertex positions), and add the current time instructions to the
SPV_NV_ray_tracing_motion_blur interactions so those sections list every
dependent instruction.
previously listed RayTracingMotionBlurNV as an alternative enabling
capability and referred to the extension in their descriptions.
Companion changes:
▎ GenAI disclosure: Draft assisted by Claude (claude-opus-5-5, Anthropic, commercial SaaS — Claude Code CLI).
🤖 Generated with Claude Code