summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/glslang/src/Test/120.frag
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/glslang/src/Test/120.frag')
-rw-r--r--chromium/third_party/glslang/src/Test/120.frag238
1 files changed, 238 insertions, 0 deletions
diff --git a/chromium/third_party/glslang/src/Test/120.frag b/chromium/third_party/glslang/src/Test/120.frag
new file mode 100644
index 00000000000..9035aed7b41
--- /dev/null
+++ b/chromium/third_party/glslang/src/Test/120.frag
@@ -0,0 +1,238 @@
+#version 120
+
+float lowp;
+float mediump;
+float highp;
+
+float precision;
+
+in vec4 i;
+out vec4 o;
+
+uniform sampler2D s2D;
+centroid varying vec2 centTexCoord;
+
+uniform mat4x2 m;
+
+struct s {
+ float f;
+};
+
+void main()
+{
+ mat2x3 m23 = mat2x3(m);
+
+ int a;
+ bool b;
+ s sv = s(a);
+ float[2] ia = float[2](3, i.y);
+ float f1 = 1;
+ float f = a;
+ f = a;
+ ivec3 iv3;
+ vec3 v3 = iv3;
+ f = f + a;
+ f = a - f;
+ f += a;
+ f = a - f;
+ v3 *= iv3;
+ v3 = iv3 / 2.0f;
+ v3 = 3.0 * iv3;
+ v3 = 2 * v3;
+ v3 = v3 - 2;
+ if (f < a ||
+ a <= f ||
+ f > a ||
+ f >= a ||
+ a == f ||
+ f != a);
+ f = b ? a : f;
+ f = b ? f : a;
+ f = b ? a : a;
+ s news = sv;
+
+ i.xy + i.xyz; // ERROR
+ m * i.xyz; // ERROR
+ m + i; // ERROR
+ int aoeu = 1.0; // ERROR
+ f = b; // ERROR
+ f = a + b; // ERROR
+ f = b * a; // ERROR
+ b = a; // ERROR
+ b = b + f; // ERROR
+ f |= b; // ERROR
+
+ gl_FragColor = texture2D(s2D, centTexCoord);
+
+ float flat;
+ float smooth;
+ float noperspective;
+ float uvec2;
+ float uvec3;
+ float uvec4;
+ //packed; // ERROR, reserved word
+
+ {
+ mat4 m;
+ vec4 v;
+ bool b;
+ gl_FragColor += b ? v : m; // ERROR, types don't match around ":"
+ }
+
+ gl_FragColor.xr; // ERROR, swizzlers not from same field space
+ gl_FragColor.xyxyx.xy; // ERROR, cannot make a vec5, even temporarily
+ centTexCoord.z; // ERROR, swizzler out of range
+ (a,b) = true; // ERROR, not an l-value
+}
+
+float imageBuffer;
+float uimage2DRect;
+
+int main() {} // ERROR
+void main(int a) {} // ERROR
+
+const int a; // ERROR
+
+int foo(in float a);
+int foo(out float a) // ERROR
+{
+ return 3.2; // ERROR
+ foo(a); // ERROR
+}
+
+bool gen(vec3 v)
+{
+ if (abs(v[0]) < 1e-4F && abs(v[1]) < 1e-4)
+ return true;
+}
+
+void v1()
+{
+}
+
+void v2()
+{
+ return v1(); // ERROR, no expression allowed, even though void
+}
+
+void atest()
+{
+ vec4 v = gl_TexCoord[1];
+ v += gl_TexCoord[3];
+}
+
+varying vec4 gl_TexCoord[6]; // okay, assigning a size
+varying vec4 gl_TexCoord[5]; // ERROR, changing size
+
+mat2x2 m22;
+mat2x3 m23;
+mat2x4 m24;
+
+mat3x2 m32;
+mat3x3 m33;
+mat3x4 m34;
+
+mat4x2 m42;
+mat4x3 m43;
+mat4x4 m44;
+
+void foo123()
+{
+ mat2 r2 = matrixCompMult(m22, m22);
+ mat3 r3 = matrixCompMult(m33, m33);
+ mat4 r4 = matrixCompMult(m44, m44);
+
+ mat2x3 r23 = matrixCompMult(m23, m23);
+ mat2x4 r24 = matrixCompMult(m24, m24);
+ mat3x2 r32 = matrixCompMult(m32, m32);
+ mat3x4 r34 = matrixCompMult(m34, m34);
+ mat4x2 r42 = matrixCompMult(m42, m42);
+ mat4x3 r43 = matrixCompMult(m43, m43);
+
+ mat3x2 rfoo1 = matrixCompMult(m23, m32); // ERROR
+ mat3x4 rfoo2 = matrixCompMult(m34, m44); // ERROR
+}
+
+void matConst()
+{
+ vec2 v2;
+ vec3 v3;
+ mat4 m4b1 = mat4(v2, v3); // ERROR, not enough
+ mat4 m4b2 = mat4(v2, v3, v3, v3, v3, v2, v2); // ERROR, too much
+ mat4 m4g = mat4(v2, v3, v3, v3, v3, v3);
+ mat4 m4 = mat4(v2, v3, v3, v3, v3, v2);
+ mat3 m3 = mat3(m4);
+ mat3 m3b1 = mat3(m4, v2); // ERROR, extra arg
+ mat3 m3b2 = mat3(m4, m4); // ERROR, extra arg
+ mat3x2 m32 = mat3x2(m4);
+ mat4 m4c = mat4(m32);
+ mat3 m3s = mat3(v2.x);
+
+ mat3 m3a1[2] = mat3[2](m3s, m3s);
+ mat3 m3a2[2] = mat3[2](m3s, m3s, m3s); // ERROR, too many args
+}
+
+uniform sampler3D s3D;
+uniform sampler1D s1D;
+uniform sampler2DShadow s2DS;
+
+void foo2323()
+{
+ vec4 v;
+ vec2 v2;
+ float f;
+ v = texture2DLod(s2D, v2, f); // ERROR
+ v = texture3DProjLod(s3D, v, f); // ERROR
+ v = texture1DProjLod(s1D, v, f); // ERROR
+ v = shadow2DProjLod(s2DS, v, f); // ERROR
+
+ v = texture1DGradARB(s1D, f, f, f); // ERROR
+ v = texture2DProjGradARB(s2D, v, v2, v2); // ERROR
+ v = shadow2DProjGradARB(s2DS, v, v2, v2); // ERROR
+}
+
+#extension GL_ARB_shader_texture_lod : require
+
+void foo2324()
+{
+ vec4 v;
+ vec2 v2;
+ float f;
+ v = texture2DLod(s2D, v2, f);
+ v = texture3DProjLod(s3D, v, f);
+ v = texture1DProjLod(s1D, v, f);
+ v = shadow2DProjLod(s2DS, v, f);
+
+ v = texture1DGradARB(s1D, f, f, f);
+ v = texture2DProjGradARB(s2D, v, v2, v2);
+ v = shadow2DProjGradARB(s2DS, v, v2, v2);
+ v = shadow2DRectProjGradARB(s2DS, v, v2, v2); // ERROR
+}
+
+uniform sampler2DRect s2DRbad; // ERROR
+
+void foo121111()
+{
+ vec2 v2;
+ vec4 v = texture2DRect(s2DRbad, v2);
+}
+
+#extension GL_ARB_texture_rectangle : enable
+
+uniform sampler2DRect s2DR;
+uniform sampler2DRectShadow s2DRS;
+
+void foo12111()
+{
+ vec2 v2;
+ vec3 v3;
+ vec4 v4;
+ vec4 v;
+ v = texture2DRect(s2DR, v2);
+ v = texture2DRectProj(s2DR, v3);
+ v = texture2DRectProj(s2DR, v4);
+ v = shadow2DRect(s2DRS, v3);
+ v = shadow2DRectProj(s2DRS, v4);
+
+ v = shadow2DRectProjGradARB(s2DRS, v, v2, v2);
+}