9 invariant varying vec2 centTexCoord;
10 invariant gl_Position;
11 centroid gl_Position; // ERROR
12 centroid centroid foo; // ERROR
13 invariant gl_Position, gl_PointSize;
20 gl_ClipVertex = attv4;
21 gl_ClipDistance[1] = 0.2; // ERROR
25 gl_Position = b[b.length()-1];
28 int a1 = f.length(); // ERROR
31 int a2 = f.length; // ERROR
32 int a3 = f.length(a); // ERROR
33 int a4 = f.flizbit; // ERROR
34 int a4 = f.flizbit(); // ERROR
35 float md[2][4]; // ERROR
36 float[2] md2[4]; // ERROR
37 float[2][4] md3; // ERROR
38 float md5, md6[2][3]; // ERROR
39 float[2] md4, md7[4]; // ERROR
40 float md9[2][3] = float[2][3](1, 2, 3, 4, 5, 6); // ERROR
41 float md10, md11[2][3] = float[2][3](1, 2, 3, 4, 5, 6); // ERROR
46 uniform float initted = 3.4; // okay
48 const float concall = sin(0.3);
50 int[2][3] foo( // ERROR
51 float[2][3] a, // ERROR
52 float[2] b[3], // ERROR
53 float c[2][3]); // ERROR
55 int overloadA(in float f);
56 int overloadA(out float f); // ERROR, different qualifiers
57 float overloadA(float); // ERROR, different return value for same signature
58 float overloadA(out float f, int);
59 float overloadA(int i);
61 void overloadB(float, const in float) { }
63 vec2 overloadC(int, int);
64 vec2 overloadC(const in int, float);
65 vec2 overloadC(float, int);
66 vec2 overloadC(vec2, vec2);
68 vec3 overloadD(int, float);
69 vec3 overloadD(float, in int);
71 vec3 overloadE(float[2]);
72 vec3 overloadE(mat2 m);
73 vec3 overloadE(vec2 v);
76 vec3 overloadF(float);
87 overloadC(1); // ERROR
89 overloadC(vec2(1), vec2(2));
90 overloadC(f, 3.0); // ERROR, no way
91 overloadC(ivec2(1), vec2(2));
95 overloadD(i, i); // ERROR, ambiguous
97 int overloadB; // hiding
98 overloadB(1, i); // ERROR
101 texture2D(s2D, ivec2(0));
103 clamp(ivec4(attv4), 0, 1);
106 overloadC(a, 3); // ERROR
107 overloadE(a); // ERROR
108 overloadE(3.3); // ERROR
109 overloadE(vec2(3.3));
110 overloadE(mat2(0.5));
111 overloadE(ivec4(1)); // ERROR
117 overloadF(1, 1); // ERROR
121 varying vec4 gl_TexCoord[35]; // ERROR, size too big
123 // tests for output conversions
124 void outFun(in float, out ivec2, in int, out float);
125 int outFunRet(in float, out int, const in int, out ivec4);
126 ivec2 outFunRet(in float, out ivec4, in int, out ivec4);
136 outFunRet(i, f, i, v4);
137 float ret = outFunRet(i, f, i, v4);
138 vec2 ret2 = outFunRet(i, v4, i, v4);
139 bool b = any(lessThan(v4, attv4)); // tests aggregate arg to unary built-in
144 float f1 = noise1(1.0);
\r
145 vec2 f2 = noise2(vec2(1.0));
\r
146 vec3 f3 = noise3(vec3(1.0));
\r
147 vec4 f4 = noise4(vec4(1.0));
\r
150 // version 130 features
165 switch (c) { // ERRORs...
176 i << 3 | 0x8A >> 1 & 0xFF; // ERRORs...
178 vec3 modfOut, modfIn;
179 vec3 v11 = modf(modfIn, modfOut); // ERRORS...
181 vec2 v12 = round(v2a);
182 vec2 v13 = roundEven(v2a);
183 bvec2 b10 = isnan(v2a);
184 bvec4 b11 = isinf(v4);
186 sinh(c1D) + // ERRORS...
187 cosh(c1D) * tanh(c2D);
188 asinh(c4D) + acosh(c4D);
191 int id = gl_VertexID; // ERROR
192 gl_ClipDistance[1] = 0.3; // ERROR
195 int gl_ModelViewMatrix[] = 0;
197 // token pasting (ERRORS...)
202 #define macr(A,B) A ## B
205 layout(std140) uniform BlockName // ERROR
210 #extension GL_ARB_uniform_buffer_object : enable
212 layout(std140) uniform BlockName