[HLSL] Make ray queries safer. #8763
Open
+784
−189
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.
Connections
DirectX side of #6761
Does similar things to #8390 but for hlsl instead
Description
Passes a tracker around with the ray query to track its initialization status. This does similar things to the spir-v back-end with these notable exceptions:
inouts behave with ray queries, and writing inline is much easier in HLSL. Most of the functions are fairly small, and aren't used very frequently.CommittedRayTis defined in HLSL when if there hasn't been a committed hit (Note: there is a bug in dxc when outputting spir-v though, see [SPIR-V] Conversion fromCommittedRayTtoOpRayQueryGetIntersectionTKHRcan introduce UB microsoft/DirectXShaderCompiler#7860, but I don't think that the intent for the HLSL backend is to compile into spirv)Testing
Same tests as #8390
Squash or Rebase?
Squash
Checklist
cargo fmt.cargo clippy --tests. If applicable, add:--target wasm32-unknown-unknowncargo xtask testto run tests.CHANGELOG.mdentry.