• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#version 400 core
2
3layout(vertices = 4) out;
4int outa[gl_out.length()];
5
6layout(quads) in;                   // ERROR
7layout(ccw) out;                    // ERROR
8layout(fractional_even_spacing) in; // ERROR
9
10patch in vec4 patchIn;              // ERROR
11patch out vec4 patchOut;
12
13void main()
14{
15    barrier();
16
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
31    gl_out[gl_InvocationID].gl_Position = p;
32    gl_out[gl_InvocationID].gl_PointSize = ps;
33    gl_out[gl_InvocationID].gl_ClipDistance[1] = cd;
34
35    gl_TessLevelOuter[3] = 3.2;
36    gl_TessLevelInner[1] = 1.3;
37
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    }
54    a < 12 ? a : (barrier(), a); // ERROR
55    {
56        barrier();
57    }
58
59    return;
60
61    barrier();               // ERROR
62}
63
64layout(vertices = 4) in;    // ERROR
65layout(vertices = 5) out;   // ERROR
66
67void foo()
68{
69    gl_out[4].gl_PointSize;  // ERROR
70
71    barrier();                // ERROR
72}
73
74in vec2 ina;   // ERROR, not array
75in vec2 inb[];
76in vec2 inc[18];  // ERROR, wrong size
77in vec2 ind[gl_MaxPatchVertices];
78
79#extension GL_ARB_separate_shader_objects : enable
80
81layout(location = 3) in vec4 ivla[];
82layout(location = 4) in vec4 ivlb[];
83layout(location = 4) in vec4 ivlc[];  // ERROR, overlapping
84
85layout(location = 3) out vec4 ovla[];
86layout(location = 4) out vec4 ovlb[];
87layout(location = 4) out vec4 ovlc[];  // ERROR, overlapping
88
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}
99
100patch out pinbn {
101    int a;
102} pinbi;
103
104invariant precise out vec4 badOrder[]; // ERROR, precise must appear first
105void badp(out precise float f);        // ERROR, precise must appear first
106
107void 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
121void devie()
122{
123    gl_DeviceIndex;
124    gl_ViewIndex;
125}
126