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