// SPDX-License-Identifier: Apache-2.0 OR MIT OR Unlicense

// Linked list building.

#version 450

#define N_BUCKETS 65536
#define N_ITER 100

layout(local_size_x = 256, local_size_y = 1) in;

layout(set = 0, binding = 0) buffer MemBuf {
    uint[] mem;
};

void main() {
    uint rng = gl_GlobalInvocationID.x + 1;
    for (uint i = 0; i < N_ITER; i++) {
        // xorshift32
        rng ^= rng << 13;
        rng ^= rng >> 17;
        rng ^= rng << 5;
        uint bucket = rng % N_BUCKETS;
        if (bucket != 0) {
            uint alloc = atomicAdd(mem[0], 2) + N_BUCKETS;
            uint old = atomicExchange(mem[bucket], alloc);
            mem[alloc] = old;
            mem[alloc + 1] = gl_GlobalInvocationID.x;
        }
    }
}
