#version 310 es layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; struct Foo { mat4 m; }; layout(binding = 1, std430) buffer SSBO2 { Foo out_data[]; } _23; layout(binding = 0, std430) buffer SSBO { Foo in_data[]; } _30; void main() { uint ident = gl_GlobalInvocationID.x; _23.out_data[ident].m = (_30.in_data[ident].m * _30.in_data[ident].m); }