Merge pull request #2865 from alan-baker/update-license
[platform/upstream/glslang.git] / Test / 430.comp
1 #version 430 core\r
2 \r
3 layout(local_size_x = 2) in;\r
4 layout(local_size_x = 16) in;     // ERROR, changing\r
5 layout(local_size_z = 4096) in;   // ERROR, too large\r
6 layout(local_size_x = 2) in;\r
7 \r
8 const int total = gl_MaxComputeWorkGroupCount.y \r
9                 + gl_MaxComputeUniformComponents\r
10                 + gl_MaxComputeTextureImageUnits\r
11                 + gl_MaxComputeImageUniforms\r
12                 + gl_MaxComputeAtomicCounters\r
13                 + gl_MaxComputeAtomicCounterBuffers;\r
14 \r
15 buffer ShaderStorageBlock\r
16 {\r
17     int value;\r
18     float values[];\r
19 };\r
20 \r
21 buffer InvalidShaderStorageBlock\r
22 {\r
23     float values[];\r
24     int value;\r
25 } invalid;\r
26 \r
27 void main()\r
28 {\r
29     barrier();\r
30     memoryBarrier();\r
31     memoryBarrierAtomicCounter();\r
32     memoryBarrierBuffer();\r
33     memoryBarrierShared();\r
34     memoryBarrierImage();\r
35     groupMemoryBarrier();\r
36     value = int(values[gl_LocalInvocationIndex]);\r
37 \r
38     int a;\r
39     if (a > 10)\r
40         barrier();\r
41 }\r
42 \r
43 layout(location = 2) in vec3 v3;      // ERROR\r
44 in float f;                           // ERROR\r
45 out float fo;                         // ERROR\r
46 \r
47 shared vec4 s;\r
48 layout(location = 2) shared vec4 sl;  // ERROR\r
49 shared float fs = 4.2;                // ERROR\r
50 \r
51 layout(local_size_y = 1) in;\r
52 layout(local_size_y = 2) in;     // ERROR, changing\r
53 layout(local_size_y = 1) in;\r
54 layout(local_size_x = 2, local_size_y = 3, local_size_z = 4) out;  // ERROR\r
55 \r
56 int arrX[gl_WorkGroupSize.x];\r
57 int arrY[gl_WorkGroupSize.y];\r
58 int arrZ[gl_WorkGroupSize.z];\r
59 \r
60 readonly buffer roblock\r
61 {\r
62     int value;\r
63     float values[];\r
64 } ro;\r
65 \r
66 void foo()\r
67 {\r
68     ro.values[2] = 4.7;             // ERROR, readonly\r
69     ro.values.length();\r
70     barrier();\r
71 }\r
72 \r
73 uniform double roll;\r
74 uniform writeonly image2D destTex;\r
75 void fooaoeu() {\r
76      ivec2 storePos = ivec2(gl_GlobalInvocationID.xy);\r
77      double localCoef = length(vec2(ivec2(gl_LocalInvocationID.xy)-8)/8.0);\r
78      dvec4 aa = dvec4(0.4, 0.2, 0.3, 0.4);\r
79      double globalCoef = 1.0;\r
80      int i = globalCoef;            // ERROR, can't convert from double to int\r
81      double di = i;\r
82 }\r
83 \r
84 in inb {     // ERROR\r
85     int a;\r
86 } inbi;\r
87 \r
88 out outb {     // ERROR\r
89     int a;\r
90 } outbi;\r