MSL: Ensure discrete runtime arrays of buffers have known length. #2248
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.
An entry-point array of buffers, that is not part of a Metal argument buffer, requires a known length, so it can be emitted as discrete buffers. For runtime arrays of resources, this can be retrieved from the resource binding information added via
add_msl_resource_binding()
.get_resource_array_size()
to consolidate array sizing using both var type, and runtime array sizing from resource bindings, if not found in type.get_resource_array_size()
to fix issue for runtime arrays of buffers.get_resource_array_size()
..DS_Store
to.gitignore
(unrelated).This has been tested in MoltenVK, but I couldn't think of a way of defining a SPRIV-Cross unit test for this, as it would involve calling
add_msl_resource_binding()
with some complex input.Found as a regression during testing for the next Vulkan SDK release. If possible, this PR should be merged before Jan 5 when a MoltenVK release for the next Vulkan SDK is required.