The existing `per_stage_map` field of MSL backend options specifies
resource binding maps that apply to all entry points of each stage type.
It is useful to have the ability to provide a separate binding index map
for each entry point, especially when the same shader module defines
multiple entry points of the same stage kind.
This patch replaces `per_stage_map` with a new `per_entry_point_map`
option where resources are keyed by the entry-point function name.
* [hlsl-out] fix matCx2 as global uniform
* [hlsl-out] update comments
* [hlsl-out] fix `row_major` not being written on global arrays of matrices and also write it on nested arrays of matrices
* [hlsl-out] fix matCx2's nested inside global arrays
* [hlsl-out] fix struct members of type array<matCx2>
* [hlsl-out] test mat2x4 to make sure our matCx2 code behaves properly
We can safely assume that deserialize is enabled for all output tests.
Supporting other modes of operation has low utility.
This change also adds an option to skip the explicit types for WGSL output.
* Add support for arrayLength to the wgsl frontend
* Fix clippy warning
* Add draft support for array length to the msl backend
* Finalize support for array length in msl
* Convert buffer size to array length in msl backend
* Fix clippy warning
* Fix misleading documentation
* Changes based on review of PR
* Use a fake binding for sizes buffer in msl backend if necessary
* Only generate the msl buffer size structure if globals are present that have unsized arrays
* Make sure to generate separators
* Replace uses_unsized_buffers with !self.runtime_sized_buffers.is_empty()
* Clear self.runtime_sized_buffers
* Run snapshot of shadow.msl
* Add Expression::ArrayLength support to the spirv backend
* Remove wgsl target from the access snapshot test
* Update access.msl snapshot
* Update stack size for msl backend
* Update stack size again for msl backend