Validate against the maximum binding index #2892
Merged
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.
Checklist
cargo clippy
.Connections
WebGPU spec: https://gpuweb.github.io/gpuweb/#dom-gpudevice-createbindgrouplayout
Description
This PR validates that binding indices in
create_bind_group_layout
aren't larger than the maximum binding index from teh WebGPU specification, so it's another baby step towards WebGPU compliance.This also sort of mitigates driver issues with very large binding indices on vulkan. The vulkan spec is made with the expectation that the driver allocates a contiguous buffer of descriptors at least as large as the maximum binding index. Binding indices are expected to be small, and some drivers don't expect that allocation to fail (which is fairly easy to trigger by repeatedly creating bind group layouts with enormous binding indices.
Note that Dawn internally renames all binding indices to compact them, including in their vulkan backend. That's a much stronger mitigation against that source of driver issues.
Testing
None