diff options
Diffstat (limited to 'chromium/third_party/glslang/src/Test/120.frag')
-rw-r--r-- | chromium/third_party/glslang/src/Test/120.frag | 238 |
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); +} |