1 #version 300 es 2 3 uniform mat4x3 m43; 4 uniform mat3x3 m33; 5 uniform mat4x4 m44; 6 7 in vec3 v3; 8 varying vec2 v2; // ERROR, varying reserved 9 in vec4 bad[10]; // ERROR, no arrayed inputs 10 highp in vec4 badorder; // ERROR, incorrect qualifier order 11 out invariant vec4 badorder2; // ERROR, incorrect qualifier order 12 in centroid vec4 badorder4; // ERROR, incorrect qualifier order 13 out flat vec4 badorder3; // ERROR, incorrect qualifier order 14 void bar(in const float a); // ERROR, incorrect qualifier order 15 void bar2(highp in float b); // ERROR, incorrect qualifier order 16 smooth flat out vec4 rep; // ERROR, replicating interpolation qualification 17 centroid sample out vec4 rep2; // ERROR, replicating auxiliary qualification 18 in uniform vec4 rep3; // ERROR, replicating storage qualification 19 20 struct S { 21 vec3 c; 22 float f; 23 }; 24 25 out S s; 26 27 void main() 28 { 29 int id = gl_VertexID + gl_InstanceID; 30 31 int c0 = gl_MaxVertexAttribs; 32 int c1 = gl_MaxVertexUniformVectors; 33 int c2 = gl_MaxVertexOutputVectors; 34 int c3 = gl_MaxFragmentInputVectors; 35 int c4 = gl_MaxVertexTextureImageUnits; 36 int c5 = gl_MaxCombinedTextureImageUnits; 37 int c6 = gl_MaxTextureImageUnits; 38 int c7 = gl_MaxFragmentUniformVectors; 39 int c8 = gl_MaxDrawBuffers; 40 int c9 = gl_MinProgramTexelOffset; 41 int c10 = gl_MaxProgramTexelOffset; 42 43 mat3x4 tm = transpose(m43); 44 highp float dm = determinant(m44); 45 mat3x3 im = inverse(m33); 46 47 mat3x2 op = outerProduct(v2, v3); 48 49 gl_Position = m44[2]; 50 gl_PointSize = v2.y; 51 52 s.c = v3; 53 s.f = dm; 54 55 #ifdef GL_ES 56 #error GL_ES is set 57 #else 58 #error GL_ES is not set 59 #endif 60 } 61 62 float badsize[]; // ERROR 63 float[] badsize2; // ERROR 64 uniform ub { 65 int a[]; // ERROR 66 } ubInst[]; // ERROR 67 void foo(int a[]); // ERROR 68 float okayA[] = float[](3.0f, 4.0F); // Okay 69 70 out vec3 newV; 71 void newVFun() 72 { 73 newV = v3; 74 } 75 76 invariant newV; // ERROR, variable already used 77 in vec4 invIn; 78 invariant invIn; // ERROR, in v300 79 out S s2; 80 invariant s2; 81 invariant out S s3; 82 flat out int; 83 84 uniform ub2 { 85 float f; 86 } a; 87 88 uniform ub2 { // ERROR redeclaration of block name (same instance name) 89 float g; 90 } a; 91 92 uniform ub2 { // ERROR redeclaration of block name (different instance name) 93 float f; 94 } c; 95 96 uniform ub2 { // ERROR redeclaration of block name (no instance name) 97 float f123; 98 }; 99 100 uniform ub3 { 101 bool b23; 102 }; 103 104 uniform ub3 { // ERROR redeclaration of block name (no instance name in first or declared) 105 bool b234; 106 }; 107 108 precision lowp sampler3D; 109 precision lowp sampler2DShadow; 110 precision lowp sampler2DArrayShadow; 111 112 uniform sampler2D s2D; 113 uniform sampler3D s3D; 114 uniform sampler2DShadow s2DS; 115 uniform sampler2DArrayShadow s2DAS; 116 in vec2 c2D; 117 118 void foo23() 119 { 120 ivec2 x1 = textureSize(s2D, 2); 121 textureSize(s2D); // ERROR, no lod 122 ivec3 x3 = textureSize(s2DAS, -1); 123 textureSize(s2DAS); // ERROR, no lod 124 vec4 x4 = texture(s2D, c2D); 125 texture(s2D, c2D, 0.2); // ERROR, bias 126 vec4 x5 = textureProjOffset(s3D, vec4(0.2), ivec3(1)); 127 textureProjOffset(s3D, vec4(0.2), ivec3(1), .03); // ERROR, bias 128 float x6 = textureProjGradOffset(s2DS, invIn, vec2(4.2), vec2(5.3), ivec2(1)); 129 } 130 131 int fgfg(float f, mediump int i); 132 int fgfg(float f, highp int i); // ERROR, precision qualifier difference 133 134 int fgfgh(float f, const in mediump int i); 135 int fgfgh(float f, in mediump int i); // ERROR, precision qualifier difference 136 137 void foo2349() 138 { 139 float[] x = float[] (1.0, 2.0, 3.0); 140 float[] y = x; 141 float[3] z = x; 142 float[3] w; 143 w = y; 144 } 145 146 int[] foo213234(); // ERROR 147 int foo234234(float[]); // ERROR 148 int foo234235(vec2[] v); // ERROR 149 precision highp float[2]; // ERROR 150 151 int fffg(float f); 152 int fffg(float f); 153 154 int gggf(float f); 155 int gggf(float f) { return 2; } 156 int gggf(float f); 157 158 int agggf(float f) { return 2; } 159 int agggf(float f); 160 161 out struct Ssss { float f; } ssss; 162 163 uniform Bblock { 164 int a; 165 } Binst; 166 int Bfoo; 167 168 layout(std140) Binst; // ERROR 169 layout(std140) Bblock; // ERROR 170 layout(std140) Bfoo; // ERROR 171 172 layout(std430) uniform B430 { int a; } B430i; // ERROR 173 174 struct SNA { 175 int a[]; // ERROR 176 }; 177 178 void fooDeeparray() 179 { 180 float[] x = float[] (1.0, 2.0, 3.0), 181 y = float[] (1.0, 2.0, 3.0, 4.0); 182 float xp[3], yp[4]; 183 xp = x; 184 yp = y; 185 xp = y; // ERROR, wrong size 186 yp = x; // ERROR, wrong size 187 } 188 189 layout(num_views = 2) in; // ERROR, no extension 190 191 void mwErr() 192 { 193 gl_ViewID_OVR; // ERROR, no extension 194 } 195 196 #extension GL_OVR_multiview : enable 197 198 layout(num_views = 2) uniform float mwUniform; // ERROR, must be global 199 layout(num_views = 2) in; // OK 200 201 void mwOk() 202 { 203 gl_ViewID_OVR; 204 } 205