| #version 460 | |
| #extension GL_EXT_shader_explicit_arithmetic_types_int64 : require | |
| #extension GL_EXT_buffer_reference2 : require | |
| layout(buffer_reference) buffer MyBuffer; | |
| struct A { | |
| uint64_t a; | |
| uint b; | |
| }; | |
| struct B { | |
| A a; | |
| }; | |
| struct S1 { uint64_t x; }; | |
| struct S2 { float x; }; | |
| struct S3 { uvec3 x; }; | |
| struct S4 { uvec3 x[3][3][2][1][2]; }; | |
| struct S5 { mat3x3 x; }; | |
| struct S6 { MyBuffer x; }; | |
| struct S7 { B x; }; | |
| layout(set = 0, binding = 1) restrict readonly buffer SSBO { | |
| S1 s1; | |
| S2 s2; | |
| S3 s3; | |
| S4 s4; | |
| S5 s5; | |
| S6 s6; | |
| S7 s7; | |
| } InBuffer; | |
| layout(buffer_reference) buffer MyBuffer { | |
| S1 s1; | |
| S2 s2; | |
| S3 s3; | |
| S4 s4; | |
| S5 s5; | |
| S6 s6; | |
| S7 s7; | |
| }; | |
| void main() { | |
| MyBuffer payload; | |
| payload.s1 = InBuffer.s1; | |
| payload.s2 = InBuffer.s2; | |
| payload.s3 = InBuffer.s3; | |
| payload.s4 = InBuffer.s4; | |
| payload.s5 = InBuffer.s5; | |
| payload.s6 = InBuffer.s6; | |
| payload.s7 = InBuffer.s7; | |
| } |