Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / spv.memoryQualifier.frag
1 #version 450\r
2 \r
3 layout(binding = 0, r32f) uniform coherent image1D      i1D;\r
4 layout(binding = 1, r32f) uniform volatile image2D      i2D;\r
5 layout(binding = 2, r32f) uniform restrict image2DRect  i2DRect;\r
6 layout(binding = 3, r32f) uniform readonly image3D      i3D;\r
7 layout(binding = 3, r32f) uniform writeonly imageCube   iCube;\r
8 \r
9 struct Data\r
10 {\r
11     float f1;\r
12     vec2  f2;\r
13 };\r
14 \r
15 coherent buffer Buffer\r
16 {\r
17     volatile float f1;\r
18     restrict vec2  f2;\r
19     readonly vec3  f3;\r
20     writeonly vec4 f4;\r
21     int i1;\r
22     Data data;\r
23 };\r
24 \r
25 void main()\r
26 {\r
27     vec4 texel = imageLoad(i1D, 1);\r
28     texel += imageLoad(i2D, ivec2(1));\r
29     texel += imageLoad(i2DRect, ivec2(1));\r
30     texel += imageLoad(i3D, ivec3(1));\r
31     imageStore(iCube, ivec3(1), texel);\r
32 \r
33     texel[i1] = f1;\r
34     texel.xy += f2;\r
35     texel.xyz -= f3;\r
36     texel.w += data.f1 + data.f2[1];\r
37     f4 = texel;\r
38 }