xref: /aosp_15_r20/external/angle/third_party/glslang/src/Test/300.vert (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1#version 300 es
2
3uniform mat4x3 m43;
4uniform mat3x3 m33;
5uniform mat4x4 m44;
6
7in vec3 v3;
8varying vec2 v2;               // ERROR, varying reserved
9in vec4 bad[10];               // ERROR, no arrayed inputs
10highp in vec4 badorder;        // ERROR, incorrect qualifier order
11out invariant vec4 badorder2;  // ERROR, incorrect qualifier order
12in centroid vec4 badorder4;    // ERROR, incorrect qualifier order
13out flat vec4 badorder3;       // ERROR, incorrect qualifier order
14void bar(in const float a);    // ERROR, incorrect qualifier order
15void bar2(highp in float b);   // ERROR, incorrect qualifier order
16smooth flat out vec4 rep;      // ERROR, replicating interpolation qualification
17centroid sample out vec4 rep2; // ERROR, replicating auxiliary qualification
18in uniform vec4 rep3;          // ERROR, replicating storage qualification
19
20struct S {
21    vec3 c;
22    float f;
23};
24
25out S s;
26
27void 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
62float badsize[];    // ERROR
63float[] badsize2;   // ERROR
64uniform ub {
65    int a[];        // ERROR
66} ubInst[];         // ERROR
67void foo(int a[]);  // ERROR
68float okayA[] = float[](3.0f, 4.0F);  // Okay
69
70out vec3 newV;
71void newVFun()
72{
73    newV = v3;
74}
75
76invariant newV;  // ERROR, variable already used
77in vec4 invIn;
78invariant invIn; // ERROR, in v300
79out S s2;
80invariant s2;
81invariant out S s3;
82flat out int;
83
84uniform ub2 {
85    float f;
86} a;
87
88uniform ub2 {  // ERROR redeclaration of block name (same instance name)
89    float g;
90} a;
91
92uniform ub2 {  // ERROR redeclaration of block name (different instance name)
93    float f;
94} c;
95
96uniform ub2 {  // ERROR redeclaration of block name (no instance name)
97    float f123;
98};
99
100uniform ub3 {
101    bool b23;
102};
103
104uniform ub3 {  // ERROR redeclaration of block name (no instance name in first or declared)
105    bool b234;
106};
107
108precision lowp sampler3D;
109precision lowp sampler2DShadow;
110precision lowp sampler2DArrayShadow;
111
112uniform sampler2D s2D;
113uniform sampler3D s3D;
114uniform sampler2DShadow s2DS;
115uniform sampler2DArrayShadow s2DAS;
116in vec2 c2D;
117
118void 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
131int fgfg(float f, mediump int i);
132int fgfg(float f, highp int i);   // ERROR, precision qualifier difference
133
134int fgfgh(float f, const in mediump int i);
135int fgfgh(float f, in mediump int i);   // ERROR, precision qualifier difference
136
137void 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
146int[] foo213234();        // ERROR
147int foo234234(float[]);   // ERROR
148int foo234235(vec2[] v);  // ERROR
149precision highp float[2]; // ERROR
150
151int fffg(float f);
152int fffg(float f);
153
154int gggf(float f);
155int gggf(float f) { return 2; }
156int gggf(float f);
157
158int agggf(float f) { return 2; }
159int agggf(float f);
160
161out struct Ssss { float f; } ssss;
162
163uniform Bblock {
164   int a;
165} Binst;
166int Bfoo;
167
168layout(std140) Binst;    // ERROR
169layout(std140) Bblock;   // ERROR
170layout(std140) Bfoo;     // ERROR
171
172layout(std430) uniform B430 { int a; } B430i;     // ERROR
173
174struct SNA {
175    int a[];             // ERROR
176};
177
178void 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
189layout(num_views = 2) in; // ERROR, no extension
190
191void mwErr()
192{
193    gl_ViewID_OVR;   // ERROR, no extension
194}
195
196#extension GL_OVR_multiview : enable
197
198layout(num_views = 2) uniform float mwUniform; // ERROR, must be global
199layout(num_views = 2) in; // OK
200
201void mwOk()
202{
203    gl_ViewID_OVR;
204}
205