| #version 310 es |
| #extension GL_OES_shader_image_atomic : require |
| layout(local_size_x = 1) in; |
| |
| layout(r32ui, binding = 0) uniform highp uimage2D uImage; |
| layout(r32i, binding = 1) uniform highp iimage2D iImage; |
| layout(binding = 2, std430) buffer SSBO |
| { |
| uint u32; |
| int i32; |
| } ssbo; |
| |
| shared uint shared_u32; |
| shared int shared_i32; |
| |
| void main() |
| { |
| atomicAdd(ssbo.u32, 1u); |
| atomicOr(ssbo.u32, 1u); |
| atomicXor(ssbo.u32, 1u); |
| atomicAnd(ssbo.u32, 1u); |
| atomicMin(ssbo.u32, 1u); |
| atomicMax(ssbo.u32, 1u); |
| atomicExchange(ssbo.u32, 1u); |
| atomicCompSwap(ssbo.u32, 10u, 2u); |
| |
| atomicAdd(ssbo.i32, 1); |
| atomicOr(ssbo.i32, 1); |
| atomicXor(ssbo.i32, 1); |
| atomicAnd(ssbo.i32, 1); |
| atomicMin(ssbo.i32, 1); |
| atomicMax(ssbo.i32, 1); |
| atomicExchange(ssbo.i32, 1); |
| atomicCompSwap(ssbo.i32, 10, 2); |
| |
| shared_u32 = 10u; |
| shared_i32 = 10; |
| atomicAdd(shared_u32, 1u); |
| atomicOr(shared_u32, 1u); |
| atomicXor(shared_u32, 1u); |
| atomicAnd(shared_u32, 1u); |
| atomicMin(shared_u32, 1u); |
| atomicMax(shared_u32, 1u); |
| atomicExchange(shared_u32, 1u); |
| atomicCompSwap(shared_u32, 10u, 2u); |
| |
| atomicAdd(shared_i32, 1); |
| atomicOr(shared_i32, 1); |
| atomicXor(shared_i32, 1); |
| atomicAnd(shared_i32, 1); |
| atomicMin(shared_i32, 1); |
| atomicMax(shared_i32, 1); |
| atomicExchange(shared_i32, 1); |
| atomicCompSwap(shared_i32, 10, 2); |
| } |
| |