1e5c31af7Sopenharmony_ci#version 310 es
2e5c31af7Sopenharmony_ci
3e5c31af7Sopenharmony_cilayout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
4e5c31af7Sopenharmony_cilayout(binding = 0) buffer InOut
5e5c31af7Sopenharmony_ci{
6e5c31af7Sopenharmony_ci    uint values[];
7e5c31af7Sopenharmony_ci} sb_inout;
8e5c31af7Sopenharmony_ci
9e5c31af7Sopenharmony_civoid main (void)
10e5c31af7Sopenharmony_ci{
11e5c31af7Sopenharmony_ci    uvec3 size           = gl_NumWorkGroups * gl_WorkGroupSize;
12e5c31af7Sopenharmony_ci    uint numValuesPerInv = uint(sb_inout.values.length()) / (size.x*size.y*size.z);
13e5c31af7Sopenharmony_ci    uint groupNdx        = size.x*size.y*gl_GlobalInvocationID.z + size.x*gl_GlobalInvocationID.y + gl_GlobalInvocationID.x;
14e5c31af7Sopenharmony_ci    uint offset          = numValuesPerInv*groupNdx;
15e5c31af7Sopenharmony_ci
16e5c31af7Sopenharmony_ci    for (uint ndx = 0u; ndx < numValuesPerInv; ndx++)
17e5c31af7Sopenharmony_ci        sb_inout.values[offset + ndx] = ~sb_inout.values[offset + ndx];
18e5c31af7Sopenharmony_ci}
19