KhronosGroup / SPIRV-Cross

SPIRV-Cross is a practical tool and library for performing reflection on SPIR-V and disassembling SPIR-V back to high level languages.
Apache License 2.0
1.96k stars 549 forks source link

MSL: Support a runtime array with dynamic offset in an argument buffer. #2347

Closed billhollings closed 1 week ago

billhollings commented 1 week ago

@HansKristian-Work This PR reverses the b236352 commit from PR #2329. It was not clear why the restriction from that commit is required (what is the ABI referenced there?), and it means that variables held within an argument buffer descriptor set cannot have their sizes established by the app. This is particularly troublesome for SPIR-V runtime arrays, whose size must be set by the app.

Several hundred CTS tests use a runtime array in SPIR-V to read from a fixed-size array defined in a Vulkan descriptor set.

If the restriction in b236352 is still required, perhaps this PR could add a parameter to msl_options to control when is it required.