2 void nodef1(float f); // ERROR, no default precision
4 uniform lowp sampler3D s3D;
5 uniform samplerCube sCube;
6 uniform lowp samplerCubeShadow sCubeShadow;
7 uniform lowp sampler2DShadow s2DShadow;
8 uniform lowp sampler2DArray s2DArray;
9 uniform lowp sampler2DArrayShadow s2DArrayShadow;
11 uniform lowp isampler2D is2D;
12 uniform lowp isampler3D is3D;
13 uniform lowp isamplerCube isCube;
14 uniform lowp isampler2DArray is2DArray;
16 uniform lowp usampler2D us2D;
17 uniform lowp usampler3D us3D;
18 uniform lowp usamplerCube usCube;
19 uniform lowp usampler2DArray us2DArray;
30 noperspective in vec4 badv; // ERROR
31 in sampler2D bads; // ERROR
32 precision lowp uint; // ERROR
39 in s badout; // ERROR, can't contain a sampler
40 // ERROR, can't have int in struct without flat
51 uniform sampler2D arrayedSampler[5];
57 v = texture(s2D, c2D);
58 v = textureProj(s3D, c4D);
59 v = textureLod(s2DArray, c3D, 1.2);
60 f = textureOffset(s2DShadow, c3D, ic2D, c1D); // ERROR, offset argument not constant
61 v = texelFetch(s3D, ic3D, ic1D);
62 v = texelFetchOffset(arrayedSampler[2], ic2D, 4, ic2D); // ERROR, offset argument not constant
63 f = textureLodOffset(s2DShadow, c3D, c1D, ic2D);
64 v = textureProjLodOffset(s2D, c3D, c1D, ic2D);
65 v = textureGrad(sCube, c3D, c3D, c3D);
66 f = textureGradOffset(s2DArrayShadow, c4D, c2D, c2D, ic2D);
67 v = textureProjGrad(s3D, c4D, c3D, c3D);
68 v = textureProjGradOffset(s2D, c3D, c2D, c2D, ic2D);
69 v = texture(arrayedSampler[ic1D], c2D); // ERROR
72 iv = texture(is2D, c2D);
73 iv = textureProjOffset(is2D, c4D, ic2D);
74 iv = textureProjLod(is2D, c3D, c1D);
75 iv = textureProjGrad(is2D, c3D, c2D, c2D);
76 iv = texture(is3D, c3D, 4.2);
77 iv = textureLod(isCube, c3D, c1D);
78 iv = texelFetch(is2DArray, ic3D, ic1D);
80 iv.xy = textureSize(sCubeShadow, 2);
95 cosh(c1D) * tanh(c2D);
96 asinh(c4D) + acosh(c4D);
101 int[2] a[3]; // ERROR
102 int[2][3] b; // ERROR
103 int c[2][3]; // ERROR
104 } multiInst[2][3]; // ERROR
111 colors[ic1D] = c4D; // ERROR
119 if (st1 == st2); // ERROR
120 if (st1 != st2); // ERROR
121 st1.s == st2.s; // ERROR
122 inSt2 = st1; // ERROR
123 inSt2 == st1; // ERROR
128 textureOffset(s2DShadow, c3D, ivec2(-8, 7), c1D);
129 textureOffset(s2DShadow, c3D, ivec2(-9, 8), c1D);
134 float p = pow(3.2, 4.6);
136 p += distance(vec2(10.0, 11.0), vec2(13.0, 15.0)); // 5
137 p += dot(vec3(2,3,5), vec3(-2,-1,4)); // 13
138 vec3 c3 = cross(vec3(3,-3,1), vec3(4,9,2)); // (-15, -2, 39)
139 c3 += faceforward(vec3(1,2,3), vec3(2,3,5), vec3(-2,-1,4)); // (-1,-2,-3)
140 c3 += faceforward(vec3(1,2,3), vec3(-2,-3,-5), vec3(-2,-1,4)); // (1,2,3)
141 vec2 c2 = reflect(vec2(1,3), vec2(0,1)); // (1,-3)
142 c2 += refract(vec2(1,3), vec2(0,1), 1.0); // (1,-3)
143 c2 += refract(vec2(1,3), vec2(0,1), 3.0);
144 c2 += refract(vec2(1,0.1), vec2(0,1), 5.0); // (0,0)
145 mat3x2 m32 = outerProduct(vec2(2,3), vec3(5,7,11));// rows: (10, 14, 22), (15, 21, 33)
148 uniform mediump; // ERROR
150 layout(early_fragment_tests) in; // ERROR
152 // Test extension GL_EXT_shader_integer_mix
153 #extension GL_EXT_shader_integer_mix : enable
160 int ival = mix(x, y, b);
161 ivec2 iv2 = mix(ivec2(x), ivec2(y), bvec2(b));
162 ivec3 iv3 = mix(ivec3(x), ivec3(y), bvec3(b));
163 ivec4 iv4 = mix(ivec4(x), ivec4(x), bvec4(b));
164 uint uiv = mix(z, w, b);
165 uvec2 uv2 = mix(uvec2(z), uvec2(z), bvec2(b));
166 uvec3 uv3 = mix(uvec3(z), uvec3(z), bvec3(b));
167 uvec4 uv4 = mix(uvec4(z), uvec4(z), bvec4(b));
168 bool bv = mix(b1, b2, b);
169 bvec2 bv2 = mix(bvec2(b1), bvec2(b2), bvec2(b));
170 bvec3 bv3 = mix(bvec3(b1), bvec3(b2), bvec3(b));
171 bvec4 bv4 = mix(bvec4(b1), bvec4(b2), bvec4(b));
174 #extension GL_EXT_shader_integer_mix : disable
177 int ival = mix(x, y, b); // Error since extenson GL_EXT_shader_integer_mix is disabled
180 // Test layout qualifier "index" with extension GL_EXT_blend_func_extended
181 layout(location = 0, index = 1) out vec4 outVarFail; // Error Index supported with extension GL_EXT_blend_func_extended enabled
182 #extension GL_EXT_blend_func_extended : enable
183 layout(location = 0, index = 2) out vec4 outVarPass;
185 #ifndef GL_FRAGMENT_PRECISION_HIGH
186 #error missing GL_FRAGMENT_PRECISION_HIGH
189 invariant in; // ERROR
190 invariant in vec4; // ERROR
191 invariant in vec4 fooinv; // ERROR
193 float imageBuffer; // ERROR, reserved
194 float uimage2DRect; // ERROR, reserved