#version 310 es
layout(local_size_x = 1) in;

struct Foo
{
    mat4 m;
};

layout(std430, binding = 0) readonly buffer SSBO
{
    Foo in_data[];
};

layout(std430, binding = 1) writeonly buffer SSBO2
{
    Foo out_data[];
};

void main()
{
    uint ident = gl_GlobalInvocationID.x;
    out_data[ident].m = in_data[ident].m * in_data[ident].m;
}