Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / 400.tesc
1 #version 400 core\r
2 \r
3 layout(vertices = 4) out;\r
4 int outa[gl_out.length()];\r
5 \r
6 layout(quads) in;                   // ERROR\r
7 layout(ccw) out;                    // ERROR\r
8 layout(fractional_even_spacing) in; // ERROR\r
9 \r
10 patch in vec4 patchIn;              // ERROR\r
11 patch out vec4 patchOut;\r
12 \r
13 void main()\r
14 {\r
15     barrier();\r
16 \r
17     int a = gl_MaxTessControlInputComponents +\r
18             gl_MaxTessControlOutputComponents +\r
19             gl_MaxTessControlTextureImageUnits +\r
20             gl_MaxTessControlUniformComponents +\r
21             gl_MaxTessControlTotalOutputComponents;\r
22 \r
23     vec4 p = gl_in[1].gl_Position;\r
24     float ps = gl_in[1].gl_PointSize;\r
25     float cd = gl_in[1].gl_ClipDistance[2];\r
26 \r
27     int pvi = gl_PatchVerticesIn;\r
28     int pid = gl_PrimitiveID;\r
29     int iid = gl_InvocationID;\r
30 \r
31     gl_out[gl_InvocationID].gl_Position = p;\r
32     gl_out[gl_InvocationID].gl_PointSize = ps;\r
33     gl_out[gl_InvocationID].gl_ClipDistance[1] = cd;\r
34 \r
35     gl_TessLevelOuter[3] = 3.2;\r
36     gl_TessLevelInner[1] = 1.3;\r
37 \r
38     if (a > 10)\r
39         barrier();           // ERROR\r
40     else\r
41         barrier();           // ERROR\r
42 \r
43     barrier();\r
44 \r
45     do {\r
46         barrier();           // ERROR\r
47     } while (a > 10);\r
48 \r
49     switch (a) {\r
50     default:\r
51         barrier();           // ERROR\r
52         break;\r
53     }\r
54     a < 12 ? a : (barrier(), a); // ERROR\r
55     {\r
56         barrier();\r
57     }\r
58 \r
59     return;\r
60 \r
61     barrier();               // ERROR\r
62 }\r
63 \r
64 layout(vertices = 4) in;    // ERROR\r
65 layout(vertices = 5) out;   // ERROR\r
66 \r
67 void foo()\r
68 {\r
69     gl_out[4].gl_PointSize;  // ERROR\r
70 \r
71     barrier();                // ERROR\r
72 }\r
73 \r
74 in vec2 ina;   // ERROR, not array\r
75 in vec2 inb[];\r
76 in vec2 inc[18];  // ERROR, wrong size\r
77 in vec2 ind[gl_MaxPatchVertices];\r
78 \r
79 #extension GL_ARB_separate_shader_objects : enable\r
80 \r
81 layout(location = 3) in vec4 ivla[];\r
82 layout(location = 4) in vec4 ivlb[];\r
83 layout(location = 4) in vec4 ivlc[];  // ERROR, overlapping\r
84 \r
85 layout(location = 3) out vec4 ovla[];\r
86 layout(location = 4) out vec4 ovlb[];\r
87 layout(location = 4) out vec4 ovlc[];  // ERROR, overlapping\r
88 \r
89 precise vec3 pv3;\r
90 \r
91 void foop()\r
92 {\r
93     precise double d;\r
94 \r
95     pv3 *= pv3;\r
96     pv3 = fma(pv3, pv3, pv3);\r
97     d = fma(d, d, d);\r
98 }\r
99 \r
100 patch out pinbn {\r
101     int a;\r
102 } pinbi;\r
103 \r
104 invariant precise out vec4 badOrder[]; // ERROR, precise must appear first\r
105 void badp(out precise float f);        // ERROR, precise must appear first\r
106
107 void devi()
108 {
109     gl_DeviceIndex; // ERROR, no extension
110     gl_ViewIndex;   // ERROR, no extension
111 }
112
113 #ifdef GL_EXT_device_group
114 #extension GL_EXT_device_group : enable
115 #endif
116
117 #ifdef GL_EXT_multiview
118 #extension GL_EXT_multiview : enable
119 #endif
120
121 void devie()
122 {
123     gl_DeviceIndex;
124     gl_ViewIndex;
125 }