#version 300 es uniform mat4x3 m43; uniform mat3x3 m33; uniform mat4x4 m44; in vec3 v3; varying vec2 v2; // ERROR, varying reserved in vec4 bad[10]; // ERROR, no arrayed inputs highp in vec4 badorder; // ERROR, incorrect qualifier order out invariant vec4 badorder2; // ERROR, incorrect qualifier order in centroid vec4 badorder4; // ERROR, incorrect qualifier order out flat vec4 badorder3; // ERROR, incorrect qualifier order void bar(in const float a); // ERROR, incorrect qualifier order void bar2(highp in float b); // ERROR, incorrect qualifier order smooth flat out vec4 rep; // ERROR, replicating interpolation qualification centroid sample out vec4 rep2; // ERROR, replicating auxiliary qualification in uniform vec4 rep3; // ERROR, replicating storage qualification struct S { vec3 c; float f; }; out S s; void main() { int id = gl_VertexID + gl_InstanceID; int c0 = gl_MaxVertexAttribs; int c1 = gl_MaxVertexUniformVectors; int c2 = gl_MaxVertexOutputVectors; int c3 = gl_MaxFragmentInputVectors; int c4 = gl_MaxVertexTextureImageUnits; int c5 = gl_MaxCombinedTextureImageUnits; int c6 = gl_MaxTextureImageUnits; int c7 = gl_MaxFragmentUniformVectors; int c8 = gl_MaxDrawBuffers; int c9 = gl_MinProgramTexelOffset; int c10 = gl_MaxProgramTexelOffset; mat3x4 tm = transpose(m43); highp float dm = determinant(m44); mat3x3 im = inverse(m33); mat3x2 op = outerProduct(v2, v3); gl_Position = m44[2]; gl_PointSize = v2.y; s.c = v3; s.f = dm; #ifdef GL_ES #error GL_ES is set #else #error GL_ES is not set #endif } float badsize[]; // ERROR float[] badsize2; // ERROR uniform ub { int a[]; // ERROR } ubInst[]; // ERROR void foo(int a[]); // ERROR float okayA[] = float[](3.0f, 4.0F); // Okay out vec3 newV; void newVFun() { newV = v3; } invariant newV; // ERROR, variable already used in vec4 invIn; invariant invIn; // ERROR, in v300 out S s2; invariant s2; invariant out S s3; flat out int; uniform ub2 { float f; } a; uniform ub2 { // ERROR redeclaration of block name (same instance name) float g; } a; uniform ub2 { // ERROR redeclaration of block name (different instance name) float f; } c; uniform ub2 { // ERROR redeclaration of block name (no instance name) float f123; }; uniform ub3 { bool b23; }; uniform ub3 { // ERROR redeclaration of block name (no instance name in first or declared) bool b234; }; precision lowp sampler3D; precision lowp sampler2DShadow; precision lowp sampler2DArrayShadow; uniform sampler2D s2D; uniform sampler3D s3D; uniform sampler2DShadow s2DS; uniform sampler2DArrayShadow s2DAS; in vec2 c2D; void foo23() { ivec2 x1 = textureSize(s2D, 2); textureSize(s2D); // ERROR, no lod ivec3 x3 = textureSize(s2DAS, -1); textureSize(s2DAS); // ERROR, no lod vec4 x4 = texture(s2D, c2D); texture(s2D, c2D, 0.2); // ERROR, bias vec4 x5 = textureProjOffset(s3D, vec4(0.2), ivec3(1)); textureProjOffset(s3D, vec4(0.2), ivec3(1), .03); // ERROR, bias float x6 = textureProjGradOffset(s2DS, invIn, vec2(4.2), vec2(5.3), ivec2(1)); } int fgfg(float f, mediump int i); int fgfg(float f, highp int i); // ERROR, precision qualifier difference int fgfgh(float f, const in mediump int i); int fgfgh(float f, in mediump int i); // ERROR, precision qualifier difference void foo2349() { float[] x = float[] (1.0, 2.0, 3.0); float[] y = x; float[3] z = x; float[3] w; w = y; } int[] foo213234(); // ERROR int foo234234(float[]); // ERROR int foo234235(vec2[] v); // ERROR precision highp float[2]; // ERROR int fffg(float f); int fffg(float f); int gggf(float f); int gggf(float f) { return 2; } int gggf(float f); int agggf(float f) { return 2; } int agggf(float f); out struct Ssss { float f; } ssss; uniform Bblock { int a; } Binst; int Bfoo; layout(std140) Binst; // ERROR layout(std140) Bblock; // ERROR layout(std140) Bfoo; // ERROR layout(std430) uniform B430 { int a; } B430i; // ERROR struct SNA { int a[]; // ERROR }; void fooDeeparray() { float[] x = float[] (1.0, 2.0, 3.0), y = float[] (1.0, 2.0, 3.0, 4.0); float xp[3], yp[4]; xp = x; yp = y; xp = y; // ERROR, wrong size yp = x; // ERROR, wrong size }