ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_compute_shader / execution / basic-ssbo.shader_test
blobf73d84f4c035207baf227d0a8a350fec9f028073
1 [require]
2 GLSL >= 3.30
3 GL_ARB_compute_shader
4 GL_ARB_shader_storage_buffer_object
5 GL_ARB_shader_atomic_counters
7 [compute shader]
8 #version 330
9 #extension GL_ARB_compute_shader: enable
10 #extension GL_ARB_shader_storage_buffer_object: require
11 #extension GL_ARB_shader_atomic_counters: require
13 #define SIZE 256u
15 layout(local_size_x = SIZE) in;
17 layout(binding = 0) uniform atomic_uint counter;
19 layout(std430)
20 buffer SSBO {
21         uint    u[SIZE];
24 uniform uint mode;
26 void main()
28         uint index = gl_LocalInvocationIndex;
30         switch (mode) {
31         case 0u:
32                 u[index] = SIZE;
33                 break;
34         case 1u:
35                 u[index] = index;
36                 break;
37         case 2u:
38                 if (u[index] == SIZE)
39                         atomicCounterIncrement(counter);
40                 break;
41         case 3u:
42                 if (u[index] == index)
43                         atomicCounterIncrement(counter);
44                 break;
45         }
48 [test]
49 atomic counters 1
50 ssbo 0 1024
52 uniform uint mode 0
53 compute 1 1 1
54 probe atomic counter 0 == 0
56 uniform uint mode 3
57 compute 1 1 1
58 probe atomic counter 0 == 0
60 uniform uint mode 2
61 compute 1 1 1
62 probe atomic counter 0 == 256
64 uniform uint mode 1
65 compute 1 1 1
66 probe atomic counter 0 == 256
68 uniform uint mode 2
69 compute 1 1 1
70 probe atomic counter 0 == 256
72 uniform uint mode 3
73 compute 1 1 1
74 probe atomic counter 0 == 512