#version 450 #extension GL_EXT_scalar_block_layout : require layout(local_size_x = 3, local_size_y = 3, local_size_z = 2) in; struct X { int x; int y; float z; }; layout(set = 0, binding = 0, scalar) uniform Foo { int a; int b; mat4 c; X x[2]; }; layout(set = 0, binding = 1) uniform Bar { int d; int e; }; layout(set = 1, binding = 2) buffer Baz { int f; int g; } baz[3]; void main() { uvec3 coords = gl_GlobalInvocationID; baz[coords.x].f = a + d; baz[coords.x].g = b * e; }