Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / 100.frag
1 // okay\r
2 #version 100\r
3 int a[3] = { 2, 3, 4, };  // ERROR (lots)\r
4 #version 100\r
5 int uint;\r
6 \r
7 attribute vec4 v[3];     // ERROR\r
8 \r
9 float f = 2;             // ERROR\r
10 \r
11 uniform block {          // ERROR\r
12     int x;\r
13 };\r
14 \r
15 void foo(float);\r
16 \r
17 void main()\r
18 {\r
19     foo(3);              // ERROR\r
20     int s = 1 << 4;      // ERROR\r
21     s = 16 >> 2;         // ERROR\r
22     if (a == a);         // ERROR\r
23     int b, c;\r
24     b = c & 4;           // ERROR\r
25     b = c % 4;           // ERROR\r
26     b = c | 4;           // ERROR\r
27     b >>= 2;             // ERROR\r
28     b <<= 2;             // ERROR\r
29     b %= 3;              // ERROR\r
30 \r
31     struct S {\r
32         float f;\r
33         float a[10];\r
34     } s1, s2;\r
35 \r
36     s1 = s2;             // ERROR\r
37     if (s1 == s2);       // ERROR\r
38     if (s1 != s2);       // ERROR\r
39 \r
40     switch(b) {          // ERROR\r
41     }\r
42 }\r
43 \r
44 invariant gl_FragColor;\r
45 float fa[];              // ERROR\r
46 float f13;\r
47 invariant f13;           // ERROR\r
48 struct S { int a; };\r
49 invariant S;             // ERROR, not an input or output\r
50 invariant float fi;      // ERROR\r
51 varying vec4 av;\r
52 invariant av;            // okay in v100\r
53 \r
54 void foo10()\r
55 {\r
56     invariant f;         // ERROR\r
57     invariant float f2;  // ERROR\r
58     float f3;\r
59     invariant f3;        // ERROR\r
60 }\r
61 \r
62 uniform vec2 uv2;\r
63 invariant uv2;              // ERROR\r
64 invariant uniform vec3 uv3; // ERROR\r
65 \r
66 sampler2D glob2D;           // ERROR\r
67 void f11(sampler2D p2d)\r
68 {\r
69     sampler2D v2D;          // ERROR\r
70 }\r
71 varying sampler2D vary2D;   // ERROR\r
72 \r
73 struct sp {\r
74     highp float f;\r
75     in float g;             // ERROR\r
76     uniform float h;        // ERROR\r
77     invariant float i;      // ERROR\r
78 };\r
79 \r
80 uniform sampler3D s3D;      // ERROR\r
81 \r
82 #extension GL_OES_texture_3D : enable\r
83 \r
84 precision highp sampler3D;\r
85 uniform sampler3D s3D2;\r
86 \r
87 void foo234()\r
88 {\r
89     texture3D(s3D2, vec3(0.2), 0.2);\r
90     texture3DProj(s3D2, v[1], 0.4);\r
91     dFdx(v[0]);    // ERROR\r
92     dFdy(3.2);     // ERROR\r
93     fwidth(f13);   // ERROR\r
94 }\r
95 \r
96 #extension GL_OES_standard_derivatives : enable\r
97 \r
98 void foo236()\r
99 {\r
100     dFdx(v[0]);\r
101     dFdy(3.2);\r
102     fwidth(f13);\r
103     gl_FragDepth = f13;    // ERROR\r
104     gl_FragDepthEXT = f13; // ERROR\r
105 }\r
106 \r
107 #extension GL_EXT_frag_depth : enable\r
108 \r
109 void foo239()\r
110 {\r
111     gl_FragDepth = f13;    // ERROR\r
112     gl_FragDepthEXT = f13;\r
113 }\r
114 \r
115 #extension GL_OES_EGL_image_external : enable\r
116 \r
117 uniform samplerExternalOES sExt;\r
118 \r
119 void foo245()\r
120 {\r
121     texture2D(sExt, vec2(0.2));\r
122     texture2DProj(sExt, vec3(f13));\r
123     texture2DProj(sExt, v[2]);\r
124 }\r
125 \r
126 precision mediump samplerExternalOES;\r
127 uniform samplerExternalOES mediumExt;\r
128 uniform highp samplerExternalOES highExt;\r
129 \r
130 void foo246()\r
131 {\r
132     texture2D(mediumExt, vec2(0.2));\r
133     texture2DProj(highExt, v[2]);\r
134     texture3D(sExt, vec3(f13));   // ERROR\r
135     texture2DProjLod(sExt, vec3(f13), f13);  // ERROR\r
136     int a;\r
137     ~a;    // ERROR\r
138     a | a; // ERROR\r
139     a & a; // ERROR\r
140 }\r
141 \r
142 #extension GL_OES_EGL_image_external : disable\r
143 uniform sampler2D s2Dg;\r
144 \r
145 int foo203940(int a, float b, float a)  // ERROR, a redefined\r
146 {\r
147     texture2DProjGradEXT(s2Dg, vec3(f13), uv2, uv2);  // ERROR, extension not enabled\r
148     return a;\r
149 }\r
150 \r
151 float f123 = 4.0f;   // ERROR\r
152 float f124 = 5e10F;  // ERROR\r
153 \r
154 #extension GL_EXT_shader_texture_lod : enable\r
155 \r
156 uniform samplerCube sCube;\r
157 \r
158 void foo323433()\r
159 {\r
160     texture2DLodEXT(s2Dg, uv2, f13);\r
161     texture2DProjGradEXT(s2Dg, vec3(f13), uv2, uv2);\r
162     texture2DGradEXT(s2Dg, uv2, uv2, uv2);\r
163     textureCubeGradEXT(sCube, vec3(f13), vec3(f13), vec3(f13));\r
164 }\r
165 \r
166 int fgfg(float f, mediump int i);\r
167 int fgfg(float f, highp int i) { return 2; }   // ERROR, precision qualifier difference\r
168 \r
169 int fffg(float f);\r
170 int fffg(float f);  // ERROR, can't have multiple prototypes \r
171 \r
172 int gggf(float f);\r
173 int gggf(float f) { return 2; }\r
174 \r
175 int agggf(float f) { return 2; }\r
176 int agggf(float f);\r
177 int agggf(float f);  // ERROR, second prototype\r
178 \r
179 varying struct SSS { float f; } s; // ERROR\r
180 \r
181 int vf(void);\r
182 int vf2();\r
183 int vf3(void v);      // ERROR\r
184 int vf4(int, void);   // ERROR\r
185 int vf5(int, void v); // ERROR\r
186 \r
187 void badswizzle()\r
188 {\r
189     vec3 a[5];\r
190     a.y;        // ERROR, no array swizzle\r
191     a.zy;       // ERROR, no array swizzle\r
192     a.nothing;  // ERROR\r
193     a.length(); // ERROR, not this version\r
194     a.method(); // ERROR\r
195 }\r
196 \r
197 float fooinit();\r
198 \r
199 float fooinittest()\r
200 {\r
201     return fooinit();\r
202 }\r
203 \r
204 // Test extension GL_EXT_blend_func_extended\r
205 void blendFuncFail() // Error since extension GL_EXT_blend_func_extended is disabled\r
206 {\r
207     gl_SecondaryFragColorEXT = vec4(1.0);   \r
208     gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT - 1] = vec4(0.1);\r
209 }\r
210 #extension GL_EXT_blend_func_extended : enable\r
211 void blendFunc() \r
212 {\r
213     gl_SecondaryFragColorEXT = vec4(1.0);\r
214     gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT - 1] = vec4(0.1);\r
215 }\r
216 \r
217 // Test extra-function initializers\r
218 const float fi1 = 3.0;\r
219 const float fi2 = 4.0;\r
220 const float fi3 = 5.0;\r
221 \r
222 float fooinit()\r
223 {\r
224     return fi1 + fi2 + fi3;  // should make a constant of 12.0\r
225 }\r
226 \r
227 int init1 = gl_FrontFacing ? 1 : 2; // ERROR, non-const initializer\r
228 \r
229 #ifdef GL_EXT_shader_non_constant_global_initializers\r
230 #extension GL_EXT_shader_non_constant_global_initializers : enable\r
231 #endif\r
232 \r
233 int init2 = gl_FrontFacing ? 1 : 2;\r
234 \r
235 #define A__B // error\r
236 int a__b;    // error\r
237 \r
238 #pragma STDGL invariant(all)\r
239 \r
240 #line 3000\r
241 #error line of this error should be 3000\r
242 \r
243 uniform samplerExternalOES badExt;  // syntax ERROR\r