• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#version 300 es
2void nodef1(float f); // ERROR, no default precision
3uniform sampler2D s2D;
4uniform lowp sampler3D s3D;
5uniform samplerCube sCube;
6uniform lowp samplerCubeShadow sCubeShadow;
7uniform lowp sampler2DShadow s2DShadow;
8uniform lowp sampler2DArray s2DArray;
9uniform lowp sampler2DArrayShadow s2DArrayShadow;
10
11uniform lowp isampler2D is2D;
12uniform lowp isampler3D is3D;
13uniform lowp isamplerCube isCube;
14uniform lowp isampler2DArray is2DArray;
15
16uniform lowp usampler2D us2D;
17uniform lowp usampler3D us3D;
18uniform lowp usamplerCube usCube;
19uniform lowp usampler2DArray us2DArray;
20precision lowp float;
21in float c1D;
22in vec2  c2D;
23in vec3  c3D;
24smooth vec4  c4D;
25
26flat in int   ic1D;
27flat in ivec2 ic2D;
28flat in ivec3 ic3D;
29flat in ivec4 ic4D;
30noperspective in vec4 badv; // ERROR
31in sampler2D bads;          // ERROR
32precision lowp uint;        // ERROR
33
34struct s {
35    int i;
36    sampler2D s;
37};
38
39in s badout;               // ERROR, can't contain a sampler
40                           // ERROR, can't have int in struct without flat
41struct S2 {
42    vec3 c;
43    float f;
44};
45
46in S2 s2;
47
48out vec3 sc;
49out float sf;
50
51uniform sampler2D arrayedSampler[5];
52
53void main()
54{
55    float f;
56    vec4 v;
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
70
71    ivec4 iv;
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);
79
80    iv.xy = textureSize(sCubeShadow, 2);
81
82    float precise;
83    double boo;       // ERROR
84    dvec2 boo2;       // ERROR
85    dvec3 boo3;       // ERROR
86    dvec4 boo4;       // ERROR
87
88    f += gl_FragCoord.y;
89    gl_FragDepth = f;
90
91    sc = s2.c;
92    sf = s2.f;
93
94    sinh(c1D) +
95    cosh(c1D) * tanh(c2D);
96    asinh(c4D) + acosh(c4D);
97    atanh(c3D);
98}
99
100uniform multi {
101    int[2] a[3];      // ERROR
102    int[2][3] b;      // ERROR
103    int c[2][3];      // ERROR
104} multiInst[2][3];    // ERROR
105
106out vec4 colors[4];
107
108void foo()
109{
110    colors[2] = c4D;
111    colors[ic1D] = c4D;  // ERROR
112}
113
114uniform s st1;
115uniform s st2;
116
117void foo13(s inSt2)
118{
119    if (st1 == st2);  // ERROR
120    if (st1 != st2);  // ERROR
121    st1.s == st2.s;   // ERROR
122    inSt2 = st1;      // ERROR
123    inSt2 == st1;     // ERROR
124}
125
126void foo23()
127{
128    textureOffset(s2DShadow, c3D, ivec2(-8, 7), c1D);
129    textureOffset(s2DShadow, c3D, ivec2(-9, 8), c1D);
130}
131
132void foo324(void)
133{
134    float p = pow(3.2, 4.6);
135    p += sin(0.4);
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)
146}
147
148uniform mediump;       // ERROR
149
150layout(early_fragment_tests) in;  // ERROR
151
152#ifndef GL_FRAGMENT_PRECISION_HIGH
153#error missing GL_FRAGMENT_PRECISION_HIGH
154#endif
155
156invariant in;                // ERROR
157invariant in vec4;           // ERROR
158invariant in vec4 fooinv;    // ERROR
159
160float imageBuffer;    // ERROR, reserved
161float uimage2DRect;   // ERROR, reserved
162