1617a3babSopenharmony_ci#version 310 es
2617a3babSopenharmony_ci
3617a3babSopenharmony_ci#extension GL_EXT_tessellation_shader : enable
4617a3babSopenharmony_ci#extension GL_OES_tessellation_shader : enable
5617a3babSopenharmony_ci#extension GL_EXT_tessellation_shader : disable
6617a3babSopenharmony_ci
7617a3babSopenharmony_cilayout(vertices = 4) out; // ERROR
8617a3babSopenharmony_cilayout(quads, cw) in;
9617a3babSopenharmony_cilayout(triangles) in;     // ERROR
10617a3babSopenharmony_cilayout(isolines) in;      // ERROR
11617a3babSopenharmony_ci
12617a3babSopenharmony_cilayout(ccw) in;           // ERROR
13617a3babSopenharmony_cilayout(cw) in;
14617a3babSopenharmony_ci
15617a3babSopenharmony_cilayout(fractional_odd_spacing) in;    
16617a3babSopenharmony_cilayout(equal_spacing) in;              // ERROR
17617a3babSopenharmony_cilayout(fractional_even_spacing) in;    // ERROR
18617a3babSopenharmony_ci
19617a3babSopenharmony_cilayout(point_mode) in;
20617a3babSopenharmony_ci
21617a3babSopenharmony_cipatch in vec4 patchIn;
22617a3babSopenharmony_cipatch out vec4 patchOut;  // ERROR
23617a3babSopenharmony_ci
24617a3babSopenharmony_civoid main()
25617a3babSopenharmony_ci{
26617a3babSopenharmony_ci    barrier(); // ERROR
27617a3babSopenharmony_ci
28617a3babSopenharmony_ci    int a = gl_MaxTessEvaluationInputComponents +
29617a3babSopenharmony_ci            gl_MaxTessEvaluationOutputComponents +
30617a3babSopenharmony_ci            gl_MaxTessEvaluationTextureImageUnits +
31617a3babSopenharmony_ci            gl_MaxTessEvaluationUniformComponents +
32617a3babSopenharmony_ci            gl_MaxTessPatchComponents +
33617a3babSopenharmony_ci            gl_MaxPatchVertices +
34617a3babSopenharmony_ci            gl_MaxTessGenLevel;
35617a3babSopenharmony_ci
36617a3babSopenharmony_ci    vec4 p = gl_in[1].gl_Position;
37617a3babSopenharmony_ci    float ps = gl_in[1].gl_PointSize;        // ERROR, need point_size extension
38617a3babSopenharmony_ci    float cd = gl_in[1].gl_ClipDistance[2];  // ERROR, not in ES
39617a3babSopenharmony_ci
40617a3babSopenharmony_ci    int pvi = gl_PatchVerticesIn;
41617a3babSopenharmony_ci    int pid = gl_PrimitiveID;
42617a3babSopenharmony_ci    vec3 tc = gl_TessCoord;
43617a3babSopenharmony_ci    float tlo = gl_TessLevelOuter[3];
44617a3babSopenharmony_ci    float tli = gl_TessLevelInner[1];
45617a3babSopenharmony_ci
46617a3babSopenharmony_ci    gl_Position = p;
47617a3babSopenharmony_ci    gl_PointSize = ps;             // ERROR, need point_size extension
48617a3babSopenharmony_ci    gl_ClipDistance[2] = cd;       // ERROR, not in ES
49617a3babSopenharmony_ci}
50617a3babSopenharmony_ci
51617a3babSopenharmony_cismooth patch in vec4 badp1;         // ERROR
52617a3babSopenharmony_ciflat patch in vec4 badp2;           // ERROR
53617a3babSopenharmony_cinoperspective patch in vec4 badp3;  // ERROR
54617a3babSopenharmony_cipatch sample in vec3 badp4;         // ERROR
55617a3babSopenharmony_ci
56617a3babSopenharmony_ci#extension GL_ARB_separate_shader_objects : enable
57617a3babSopenharmony_ci
58617a3babSopenharmony_ciin gl_PerVertex
59617a3babSopenharmony_ci{
60617a3babSopenharmony_ci    vec4 gl_Position;
61617a3babSopenharmony_ci} gl_in[];
62617a3babSopenharmony_ci
63617a3babSopenharmony_ciin gl_PerVertex           // ERROR, second redeclaration of gl_in
64617a3babSopenharmony_ci{
65617a3babSopenharmony_ci    vec4 gl_Position;
66617a3babSopenharmony_ci} gl_in[];
67617a3babSopenharmony_ci
68617a3babSopenharmony_cilayout(quads, cw) out;     // ERROR
69617a3babSopenharmony_cilayout(triangles) out;     // ERROR
70617a3babSopenharmony_cilayout(isolines) out;      // ERROR
71617a3babSopenharmony_cilayout(cw) out;            // ERROR
72617a3babSopenharmony_cilayout(fractional_odd_spacing) out;    // ERROR
73617a3babSopenharmony_cilayout(equal_spacing) out;             // ERROR
74617a3babSopenharmony_cilayout(fractional_even_spacing) out;   // ERROR
75617a3babSopenharmony_cilayout(point_mode) out;                // ERROR
76617a3babSopenharmony_ci
77617a3babSopenharmony_ciin vec2 ina;      // ERROR, not array
78617a3babSopenharmony_ciin vec2 inb[];
79617a3babSopenharmony_ciin vec2 inc[18];  // ERROR, wrong size
80617a3babSopenharmony_ciin vec2 ind[gl_MaxPatchVertices];
81617a3babSopenharmony_ci
82617a3babSopenharmony_ciin testbla {      // ERROR, not array
83617a3babSopenharmony_ci    int f;
84617a3babSopenharmony_ci} bla;
85617a3babSopenharmony_ci
86617a3babSopenharmony_ciin testblb {
87617a3babSopenharmony_ci    int f;
88617a3babSopenharmony_ci} blb[];
89617a3babSopenharmony_ci
90617a3babSopenharmony_ciin testblc { // ERROR wrong size
91617a3babSopenharmony_ci    int f;
92617a3babSopenharmony_ci} blc[18];
93617a3babSopenharmony_ci
94617a3babSopenharmony_ciin testbld {
95617a3babSopenharmony_ci    int f;
96617a3babSopenharmony_ci} bld[gl_MaxPatchVertices];
97617a3babSopenharmony_ci
98617a3babSopenharmony_cilayout(location = 23) in vec4 ivla[];
99617a3babSopenharmony_cilayout(location = 24) in vec4 ivlb[];
100617a3babSopenharmony_cilayout(location = 24) in vec4 ivlc[];  // ERROR, overlap
101617a3babSopenharmony_ci
102617a3babSopenharmony_cilayout(location = 23) out vec4 ovla[2];
103617a3babSopenharmony_cilayout(location = 24) out vec4 ovlb[2];  // ERROR, overlap
104617a3babSopenharmony_ci
105617a3babSopenharmony_ciin float gl_TessLevelOuter[4];           // ERROR, can't redeclare
106617a3babSopenharmony_ci
107617a3babSopenharmony_cipatch in pinbn {
108617a3babSopenharmony_ci    int a;
109617a3babSopenharmony_ci} pinbi;
110617a3babSopenharmony_ci
111617a3babSopenharmony_cicentroid out vec3 myColor2;
112617a3babSopenharmony_cicentroid in vec3 centr[];
113617a3babSopenharmony_cisample out vec4 perSampleColor;  // ERROR without sample extensions
114617a3babSopenharmony_ci
115617a3babSopenharmony_ci#extension GL_OES_tessellation_point_size : enable
116617a3babSopenharmony_ci
117617a3babSopenharmony_civoid pointSize2()
118617a3babSopenharmony_ci{
119617a3babSopenharmony_ci    float ps = gl_in[1].gl_PointSize;  // ERROR, not in the redeclaration, but no error on use of gl_PointSize
120617a3babSopenharmony_ci    gl_PointSize = ps;
121617a3babSopenharmony_ci}
122617a3babSopenharmony_ci
123617a3babSopenharmony_ci#extension GL_EXT_primitive_bounding_box : enable
124617a3babSopenharmony_ci
125617a3babSopenharmony_civoid bbbad()
126617a3babSopenharmony_ci{
127617a3babSopenharmony_ci    gl_BoundingBoxOES; // ERROR, wrong stage
128617a3babSopenharmony_ci}
129