#version 450
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;

struct A
{
    int a;
    int b;
};

layout(binding = 1, std430) buffer C1
{
    A Data[];
} C1_1;

layout(binding = 2, std140) uniform C2
{
    A Data[1024];
} C2_1;

layout(binding = 0, std430) buffer B
{
    A Data[];
} C3;

layout(binding = 3, std140) uniform B
{
    A Data[1024];
} C4;

void main()
{
    C1_1.Data[gl_GlobalInvocationID.x].a = C2_1.Data[gl_GlobalInvocationID.x].a;
    C1_1.Data[gl_GlobalInvocationID.x].b = C2_1.Data[gl_GlobalInvocationID.x].b;
    C3.Data[gl_GlobalInvocationID.x].a = C4.Data[gl_GlobalInvocationID.x].a;
    C3.Data[gl_GlobalInvocationID.x].b = C4.Data[gl_GlobalInvocationID.x].b;
}

