2017-05-19 22:14:08 +00:00
|
|
|
#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;
|
|
|
|
|
2018-05-15 14:03:20 +00:00
|
|
|
shared uint shared_u32;
|
|
|
|
shared int shared_i32;
|
|
|
|
|
2017-05-19 22:14:08 +00:00
|
|
|
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);
|
2018-05-15 14:03:20 +00:00
|
|
|
|
|
|
|
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);
|
2017-05-19 22:14:08 +00:00
|
|
|
}
|
|
|
|
|