microsoft/compiler: More UBO/SSBO support for translating Vulkan environment SPIR-V
This series adds support for Vulkan SSBOs, and dynamic indexing of arrays of UBOs and SSBOs (not really tested). It also refactors the descriptor/resource indexing logic a little bit to prepare support for the reindex intrinsic, and fixes mixed UBO+SSBO (or image/texture) shaders which wouldn't have validated after the previous UBO change.
The logic to emit UBOs now requires that the UBO declaration be a structure rather than an array, so that we can distinguish between array-of-structure (multiple UBOs) vs just a structure, and that it have explicit strides, so the CL UBO variables were fixed up to support that.
The first couple patches also add some pre-existing passes to continue to massage the NIR into the shape that the converter needs.