#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; }