blob: d01bd3ea1bfb68e37705fe8290e2fc02ef9598a8 [file] [log] [blame]
John Kessenichc0275792013-08-09 17:14:49 +00001#version 400 core
2
John Kessenich623833f2013-12-11 18:57:40 +00003layout(vertices = 4) out;
4int outa[gl_out.length()];
5
6layout(quads) in; // ERROR
7layout(ccw) out; // ERROR
8layout(fractional_even_spacing) in; // ERROR
9
John Kessenich116c30b2013-12-12 01:25:37 +000010patch in vec4 patchIn; // ERROR
11patch out vec4 patchOut;
John Kessenich623833f2013-12-11 18:57:40 +000012
John Kessenichc0275792013-08-09 17:14:49 +000013void main()
14{
15 barrier();
John Kessenich623833f2013-12-11 18:57:40 +000016
17 int a = gl_MaxTessControlInputComponents +
18 gl_MaxTessControlOutputComponents +
19 gl_MaxTessControlTextureImageUnits +
20 gl_MaxTessControlUniformComponents +
21 gl_MaxTessControlTotalOutputComponents;
22
23 vec4 p = gl_in[1].gl_Position;
24 float ps = gl_in[1].gl_PointSize;
25 float cd = gl_in[1].gl_ClipDistance[2];
26
27 int pvi = gl_PatchVerticesIn;
28 int pid = gl_PrimitiveID;
29 int iid = gl_InvocationID;
30
John Kessenich1be80632015-11-28 15:19:11 -070031 gl_out[gl_InvocationID].gl_Position = p;
32 gl_out[gl_InvocationID].gl_PointSize = ps;
33 gl_out[gl_InvocationID].gl_ClipDistance[1] = cd;
John Kessenich623833f2013-12-11 18:57:40 +000034
35 gl_TessLevelOuter[3] = 3.2;
36 gl_TessLevelInner[1] = 1.3;
John Kessenich05a62bf2015-01-07 06:14:06 +000037
38 if (a > 10)
39 barrier(); // ERROR
40 else
41 barrier(); // ERROR
42
43 barrier();
44
45 do {
46 barrier(); // ERROR
47 } while (a > 10);
48
49 switch (a) {
50 default:
51 barrier(); // ERROR
52 break;
53 }
John Kessenich548ec2c2015-01-07 06:36:55 +000054 a < 12 ? a : (barrier(), a); // ERROR
John Kessenich05a62bf2015-01-07 06:14:06 +000055 {
56 barrier();
57 }
58
59 return;
60
61 barrier(); // ERROR
John Kessenichc0275792013-08-09 17:14:49 +000062}
John Kessenichf3e2a892013-12-13 18:38:43 +000063
64layout(vertices = 4) in; // ERROR
65layout(vertices = 5) out; // ERROR
66
67void foo()
68{
69 gl_out[4].gl_PointSize; // ERROR
John Kessenich05a62bf2015-01-07 06:14:06 +000070
71 barrier(); // ERROR
John Kessenich08d18242013-12-20 18:36:27 +000072}
73
74in vec2 ina; // ERROR, not array
75in vec2 inb[];
76in vec2 inc[18]; // ERROR, wrong size
77in vec2 ind[gl_MaxPatchVertices];
John Kessenichc7776ec2014-01-26 01:37:13 +000078
79#extension GL_ARB_separate_shader_objects : enable
John Kessenich08d18242013-12-20 18:36:27 +000080
81layout(location = 3) in vec4 ivla[];
82layout(location = 4) in vec4 ivlb[];
John Kessenich6e76bdc2015-06-19 23:03:32 +000083layout(location = 4) in vec4 ivlc[]; // ERROR, overlapping
John Kessenich08d18242013-12-20 18:36:27 +000084
85layout(location = 3) out vec4 ovla[];
86layout(location = 4) out vec4 ovlb[];
John Kessenich6e76bdc2015-06-19 23:03:32 +000087layout(location = 4) out vec4 ovlc[]; // ERROR, overlapping
John Kessenich58f5a5e2014-08-14 20:05:57 +000088
89precise vec3 pv3;
90
91void foop()
92{
93 precise double d;
94
95 pv3 *= pv3;
96 pv3 = fma(pv3, pv3, pv3);
97 d = fma(d, d, d);
98}
John Kessenich71693382014-10-08 21:57:17 +000099
100patch out pinbn {
101 int a;
102} pinbi;
John Kessenich17f07862016-05-04 12:36:14 -0600103
104invariant precise out vec4 badOrder[]; // ERROR, precise must appear first
105void badp(out precise float f); // ERROR, precise must appear first