#version 310 es #extension GL_EXT_scalar_block_layout : require layout(local_size_x = 1) in; struct S0 { vec2 a[1]; float b; }; struct S1 { vec3 a; float b; }; struct S2 { vec3 a[1]; float b; }; struct S3 { vec2 a; float b; }; struct S4 { vec2 c; }; struct Content { S0 m0s[1]; S1 m1s[1]; S2 m2s[1]; S0 m0; S1 m1; S2 m2; S3 m3; float m4; S4 m3s[8]; }; layout(binding = 1, scalar) restrict buffer SSBO1 { Content content; Content content1[2]; Content content2; layout(column_major) mat2 m0; layout(column_major) mat2 m1; layout(column_major) mat2x3 m2[4]; layout(column_major) mat3x2 m3; layout(row_major) mat2 m4; layout(row_major) mat2 m5[9]; layout(row_major) mat2x3 m6[4][2]; layout(row_major) mat3x2 m7; float array[]; } ssbo_430; layout(binding = 0, std140) restrict buffer SSBO0 { Content content; Content content1[2]; Content content2; layout(column_major) mat2 m0; layout(column_major) mat2 m1; layout(column_major) mat2x3 m2[4]; layout(column_major) mat3x2 m3; layout(row_major) mat2 m4; layout(row_major) mat2 m5[9]; layout(row_major) mat2x3 m6[4][2]; layout(row_major) mat3x2 m7; float array[]; } ssbo_140; void main() { ssbo_430.content = ssbo_140.content; }