205 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			205 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #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
 | |
| }
 | |
| 
 | |
| layout(num_views = 2) in; // ERROR, no extension
 | |
| 
 | |
| void mwErr()
 | |
| {
 | |
|     gl_ViewID_OVR;   // ERROR, no extension
 | |
| }
 | |
| 
 | |
| #extension GL_OVR_multiview : enable
 | |
| 
 | |
| layout(num_views = 2) uniform float mwUniform; // ERROR, must be global
 | |
| layout(num_views = 2) in; // OK
 | |
| 
 | |
| void mwOk()
 | |
| {
 | |
|     gl_ViewID_OVR;
 | |
| }
 | 
