SPIRV-Cross/shaders-msl/comp/buffer_device_address-packed-vec-and-cast-to-and-from-uvec2.msl23.comp
Bill Hollings 4185acc70d MSL: Fixes from review for SPV_KHR_physical_storage_buffer extension.
- Assign ulongn physical type to buffer pointers in short arrays
  when array stride is larger than pointer size.
- Support GL_EXT_buffer_reference_uvec2 casting
  buffer reference pointers to and from uvec2 values.
- When packing structs, include structs inside physical buffers.
- Update mechanism for traversing pointer arrays when calculating type sizes.
- Added unit test shaders.
2022-07-01 16:10:41 -04:00

23 lines
582 B
Plaintext

#version 450
#extension GL_EXT_buffer_reference : require
#extension GL_EXT_buffer_reference_uvec2 : require
layout(buffer_reference, buffer_reference_align = 4) buffer SSBO
{
vec3 a1; // Will be 12-byte packed
float a2;
};
layout(push_constant) uniform UBO
{
uvec2 b;
};
void main()
{
SSBO(b).a1 = vec3(1.0, 2.0, 3.0); // uvec2 -> buff ref and assign to packed
uvec2 v2 = uvec2(SSBO(b + 32)); // uvec2 -> buff ref -> uvec2
vec3 v3 = SSBO(v2).a1; // uvec2 -> buff ref and assign from packed
SSBO(v2).a1 = v3 + 1.0; // uvec2 -> buff ref and assign to packed
}