#version 450



layout(binding = 0) uniform atomic_uint counter;

layout(binding = 0, offset = 4) uniform atomic_uint countArr[4];
shared uint value;

int arrX[gl_WorkGroupSize.x];
int arrY[gl_WorkGroupSize.y];
int arrZ[gl_WorkGroupSize.z];

uint func(atomic_uint c)
{
    return atomicCounterIncrement(c);
}

void main()
{
    memoryBarrierAtomicCounter();
    func(counter);
    uint val = atomicCounter(countArr[2]);
    atomicCounterDecrement(counter);
    atomicCounterIncrement(counter);
}

shared int atomi;
shared uint atomu;

layout (std140, binding = 0) restrict buffer dataSSB
{
    float f;
    ivec4 n_frames_rendered;
} result;

void atoms()
{
    int origi = atomicAdd(atomi, 3);
    uint origu = atomicAnd(atomu, value);
    origu = atomicOr(atomu, 7u);
    origu = atomicXor(atomu, 7u);
    origu = atomicMin(atomu, value);
    origi = atomicMax(atomi, 7);
    origi = atomicExchange(atomi, origi);
    origu = atomicCompSwap(atomu, 10u, value);
    atomicAdd(result.n_frames_rendered.z, 1);
}
