228 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			228 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| // okay
 | |
| #version 100
 | |
| int a[3] = { 2, 3, 4, };  // ERROR (lots)
 | |
| #version 100
 | |
| int uint;
 | |
| 
 | |
| attribute vec4 v[3];     // ERROR
 | |
| 
 | |
| float f = 2;             // ERROR
 | |
| 
 | |
| uniform block {          // ERROR
 | |
|     int x;
 | |
| };
 | |
| 
 | |
| void foo(float);
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     foo(3);              // ERROR
 | |
|     int s = 1 << 4;      // ERROR
 | |
|     s = 16 >> 2;         // ERROR
 | |
|     if (a == a);         // ERROR
 | |
|     int b, c;
 | |
|     b = c & 4;           // ERROR
 | |
|     b = c % 4;           // ERROR
 | |
|     b = c | 4;           // ERROR
 | |
|     b >>= 2;             // ERROR
 | |
|     b <<= 2;             // ERROR
 | |
|     b %= 3;              // ERROR
 | |
| 
 | |
|     struct S {
 | |
|         float f;
 | |
|         float a[10];
 | |
|     } s1, s2;
 | |
| 
 | |
|     s1 = s2;             // ERROR
 | |
|     if (s1 == s2);       // ERROR
 | |
|     if (s1 != s2);       // ERROR
 | |
| 
 | |
|     switch(b) {          // ERROR
 | |
|     }
 | |
| }
 | |
| 
 | |
| invariant gl_FragColor;
 | |
| float fa[];              // ERROR
 | |
| float f13;
 | |
| invariant f13;           // ERROR
 | |
| struct S { int a; };
 | |
| invariant S;             // ERROR, not an input or output
 | |
| invariant float fi;      // ERROR
 | |
| varying vec4 av;
 | |
| invariant av;            // okay in v100
 | |
| 
 | |
| void foo10()
 | |
| {
 | |
|     invariant f;         // ERROR
 | |
|     invariant float f2;  // ERROR
 | |
|     float f3;
 | |
|     invariant f3;        // ERROR
 | |
| }
 | |
| 
 | |
| uniform vec2 uv2;
 | |
| invariant uv2;              // ERROR
 | |
| invariant uniform vec3 uv3; // ERROR
 | |
| 
 | |
| sampler2D glob2D;           // ERROR
 | |
| void f11(sampler2D p2d)
 | |
| {
 | |
|     sampler2D v2D;          // ERROR
 | |
| }
 | |
| varying sampler2D vary2D;   // ERROR
 | |
| 
 | |
| struct sp {
 | |
|     highp float f;
 | |
|     in float g;             // ERROR
 | |
|     uniform float h;        // ERROR
 | |
|     invariant float i;      // ERROR
 | |
| };
 | |
| 
 | |
| uniform sampler3D s3D;      // ERROR
 | |
| 
 | |
| #extension GL_OES_texture_3D : enable
 | |
| 
 | |
| precision highp sampler3D;
 | |
| uniform sampler3D s3D2;
 | |
| 
 | |
| void foo234()
 | |
| {
 | |
|     texture3D(s3D2, vec3(0.2), 0.2);
 | |
|     texture3DProj(s3D2, v[1], 0.4);
 | |
|     dFdx(v[0]);    // ERROR
 | |
|     dFdy(3.2);     // ERROR
 | |
|     fwidth(f13);   // ERROR
 | |
| }
 | |
| 
 | |
| #extension GL_OES_standard_derivatives : enable
 | |
| 
 | |
| void foo236()
 | |
| {
 | |
|     dFdx(v[0]);
 | |
|     dFdy(3.2);
 | |
|     fwidth(f13);
 | |
|     gl_FragDepth = f13;    // ERROR
 | |
|     gl_FragDepthEXT = f13; // ERROR
 | |
| }
 | |
| 
 | |
| #extension GL_EXT_frag_depth : enable
 | |
| 
 | |
| void foo239()
 | |
| {
 | |
|     gl_FragDepth = f13;    // ERROR
 | |
|     gl_FragDepthEXT = f13;
 | |
| }
 | |
| 
 | |
| #extension GL_OES_EGL_image_external : enable
 | |
| 
 | |
| uniform samplerExternalOES sExt;
 | |
| 
 | |
| void foo245()
 | |
| {
 | |
|     texture2D(sExt, vec2(0.2));
 | |
|     texture2DProj(sExt, vec3(f13));
 | |
|     texture2DProj(sExt, v[2]);
 | |
| }
 | |
| 
 | |
| precision mediump samplerExternalOES;
 | |
| uniform samplerExternalOES mediumExt;
 | |
| uniform highp samplerExternalOES highExt;
 | |
| 
 | |
| void foo246()
 | |
| {
 | |
|     texture2D(mediumExt, vec2(0.2));
 | |
|     texture2DProj(highExt, v[2]);
 | |
|     texture3D(sExt, vec3(f13));   // ERROR
 | |
|     texture2DProjLod(sExt, vec3(f13), f13);  // ERROR
 | |
|     int a;
 | |
|     ~a;    // ERROR
 | |
|     a | a; // ERROR
 | |
|     a & a; // ERROR
 | |
| }
 | |
| 
 | |
| #extension GL_OES_EGL_image_external : disable
 | |
| uniform sampler2D s2Dg;
 | |
| 
 | |
| int foo203940(int a, float b, float a)  // ERROR, a redefined
 | |
| {
 | |
|     texture2DProjGradEXT(s2Dg, vec3(f13), uv2, uv2);  // ERROR, extension not enabled
 | |
|     return a;
 | |
| }
 | |
| 
 | |
| float f123 = 4.0f;   // ERROR
 | |
| float f124 = 5e10F;  // ERROR
 | |
| 
 | |
| #extension GL_EXT_shader_texture_lod : enable
 | |
| 
 | |
| uniform samplerCube sCube;
 | |
| 
 | |
| void foo323433()
 | |
| {
 | |
|     texture2DLodEXT(s2Dg, uv2, f13);
 | |
|     texture2DProjGradEXT(s2Dg, vec3(f13), uv2, uv2);
 | |
|     texture2DGradEXT(s2Dg, uv2, uv2, uv2);
 | |
|     textureCubeGradEXT(sCube, vec3(f13), vec3(f13), vec3(f13));
 | |
| }
 | |
| 
 | |
| int fgfg(float f, mediump int i);
 | |
| int fgfg(float f, highp int i) { return 2; }   // ERROR, precision qualifier difference
 | |
| 
 | |
| int fffg(float f);
 | |
| int fffg(float f);  // ERROR, can't have multiple prototypes 
 | |
| 
 | |
| int gggf(float f);
 | |
| int gggf(float f) { return 2; }
 | |
| 
 | |
| int agggf(float f) { return 2; }
 | |
| int agggf(float f);
 | |
| int agggf(float f);  // ERROR, second prototype
 | |
| 
 | |
| varying struct SSS { float f; } s; // ERROR
 | |
| 
 | |
| int vf(void);
 | |
| int vf2();
 | |
| int vf3(void v);      // ERROR
 | |
| int vf4(int, void);   // ERROR
 | |
| int vf5(int, void v); // ERROR
 | |
| 
 | |
| void badswizzle()
 | |
| {
 | |
|     vec3 a[5];
 | |
|     a.y;        // ERROR, no array swizzle
 | |
|     a.zy;       // ERROR, no array swizzle
 | |
|     a.nothing;  // ERROR
 | |
|     a.length(); // ERROR, not this version
 | |
|     a.method(); // ERROR
 | |
| }
 | |
| 
 | |
| float fooinit();
 | |
| 
 | |
| float fooinittest()
 | |
| {
 | |
|     return fooinit();
 | |
| }
 | |
| 
 | |
| // Test extra-function initializers
 | |
| const float fi1 = 3.0;
 | |
| const float fi2 = 4.0;
 | |
| const float fi3 = 5.0;
 | |
| 
 | |
| float fooinit()
 | |
| {
 | |
|     return fi1 + fi2 + fi3;  // should make a constant of 12.0
 | |
| }
 | |
| 
 | |
| int init1 = gl_FrontFacing ? 1 : 2; // ERROR, non-const initializer
 | |
| 
 | |
| #ifdef GL_EXT_shader_non_constant_global_initializers
 | |
| #extension GL_EXT_shader_non_constant_global_initializers : enable
 | |
| #endif
 | |
| 
 | |
| int init2 = gl_FrontFacing ? 1 : 2;
 | |
| 
 | |
| #pragma STDGL invariant(all)
 | |
| 
 | |
| #line 3000
 | |
| #error line of this error should be 3000
 | |
| 
 | |
| uniform samplerExternalOES badExt;  // syntax ERROR
 | 
