Home | History | Annotate | Download | only in Test
      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