1617a3babSopenharmony_ci#version 320 es 2617a3babSopenharmony_ci 3617a3babSopenharmony_cilayout(vertices = 4) out; 4617a3babSopenharmony_ciout int outa[gl_out.length()]; 5617a3babSopenharmony_ci 6617a3babSopenharmony_cilayout(quads) in; // ERROR 7617a3babSopenharmony_cilayout(ccw) out; // ERROR 8617a3babSopenharmony_cilayout(fractional_even_spacing) in; // ERROR 9617a3babSopenharmony_ci 10617a3babSopenharmony_cipatch in vec4 patchIn; // ERROR 11617a3babSopenharmony_cipatch out vec4 patchOut; 12617a3babSopenharmony_ci 13617a3babSopenharmony_civoid main() 14617a3babSopenharmony_ci{ 15617a3babSopenharmony_ci barrier(); 16617a3babSopenharmony_ci 17617a3babSopenharmony_ci int a = gl_MaxTessControlInputComponents + 18617a3babSopenharmony_ci gl_MaxTessControlOutputComponents + 19617a3babSopenharmony_ci gl_MaxTessControlTextureImageUnits + 20617a3babSopenharmony_ci gl_MaxTessControlUniformComponents + 21617a3babSopenharmony_ci gl_MaxTessControlTotalOutputComponents; 22617a3babSopenharmony_ci 23617a3babSopenharmony_ci vec4 p = gl_in[1].gl_Position; 24617a3babSopenharmony_ci float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension 25617a3babSopenharmony_ci float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES 26617a3babSopenharmony_ci 27617a3babSopenharmony_ci int pvi = gl_PatchVerticesIn; 28617a3babSopenharmony_ci int pid = gl_PrimitiveID; 29617a3babSopenharmony_ci int iid = gl_InvocationID; 30617a3babSopenharmony_ci 31617a3babSopenharmony_ci gl_out[gl_InvocationID].gl_Position = p; 32617a3babSopenharmony_ci gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension 33617a3babSopenharmony_ci gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; // ERROR, not in ES 34617a3babSopenharmony_ci 35617a3babSopenharmony_ci gl_TessLevelOuter[3] = 3.2; 36617a3babSopenharmony_ci gl_TessLevelInner[1] = 1.3; 37617a3babSopenharmony_ci 38617a3babSopenharmony_ci if (a > 10) 39617a3babSopenharmony_ci barrier(); // ERROR 40617a3babSopenharmony_ci else 41617a3babSopenharmony_ci barrier(); // ERROR 42617a3babSopenharmony_ci 43617a3babSopenharmony_ci barrier(); 44617a3babSopenharmony_ci 45617a3babSopenharmony_ci do { 46617a3babSopenharmony_ci barrier(); // ERROR 47617a3babSopenharmony_ci } while (a > 10); 48617a3babSopenharmony_ci 49617a3babSopenharmony_ci switch (a) { 50617a3babSopenharmony_ci default: 51617a3babSopenharmony_ci barrier(); // ERROR 52617a3babSopenharmony_ci break; 53617a3babSopenharmony_ci } 54617a3babSopenharmony_ci a < 12 ? a : (barrier(), a); // ERROR 55617a3babSopenharmony_ci { 56617a3babSopenharmony_ci barrier(); 57617a3babSopenharmony_ci } 58617a3babSopenharmony_ci 59617a3babSopenharmony_ci return; 60617a3babSopenharmony_ci 61617a3babSopenharmony_ci barrier(); // ERROR 62617a3babSopenharmony_ci} 63617a3babSopenharmony_ci 64617a3babSopenharmony_cilayout(vertices = 4) in; // ERROR, not on in 65617a3babSopenharmony_cilayout(vertices = 5) out; // ERROR, changing # 66617a3babSopenharmony_ci 67617a3babSopenharmony_civoid foo() 68617a3babSopenharmony_ci{ 69617a3babSopenharmony_ci gl_out[4].gl_Position; // ERROR, out of range 70617a3babSopenharmony_ci 71617a3babSopenharmony_ci barrier(); // ERROR, not in main 72617a3babSopenharmony_ci} 73617a3babSopenharmony_ci 74617a3babSopenharmony_ciin vec2 ina; // ERROR, not array 75617a3babSopenharmony_ciin vec2 inb[]; 76617a3babSopenharmony_ciin vec2 inc[18]; // ERROR, wrong size 77617a3babSopenharmony_ciin vec2 ind[gl_MaxPatchVertices]; 78617a3babSopenharmony_cipatch out float implA[]; // ERROR, not sized 79617a3babSopenharmony_ci 80617a3babSopenharmony_ci#extension GL_ARB_separate_shader_objects : enable 81617a3babSopenharmony_ci 82617a3babSopenharmony_cilayout(location = 3) in vec4 ivla[]; 83617a3babSopenharmony_cilayout(location = 4) in vec4 ivlb[]; 84617a3babSopenharmony_cilayout(location = 4) in vec4 ivlc[]; // ERROR, overlapping 85617a3babSopenharmony_ci 86617a3babSopenharmony_cilayout(location = 3) out vec4 ovla[]; 87617a3babSopenharmony_cilayout(location = 4) out vec4 ovlb[]; 88617a3babSopenharmony_cilayout(location = 4) out vec4 ovlc[]; // ERROR, overlapping 89617a3babSopenharmony_ci 90617a3babSopenharmony_cipatch out pinbn { 91617a3babSopenharmony_ci int a; 92617a3babSopenharmony_ci} pinbi; 93617a3babSopenharmony_ci 94617a3babSopenharmony_cicentroid out vec3 myColor2[]; 95617a3babSopenharmony_cicentroid in vec3 centr[]; 96617a3babSopenharmony_cisample out vec4 perSampleColor[]; 97617a3babSopenharmony_ci 98617a3babSopenharmony_cilayout(vertices = 4) out float badlay[]; // ERROR, not on a variable 99617a3babSopenharmony_ciout float misSized[5]; // ERROR, size doesn't match 100617a3babSopenharmony_ciout float okaySize[4]; 101617a3babSopenharmony_ci 102617a3babSopenharmony_civoid pointSize2() 103617a3babSopenharmony_ci{ 104617a3babSopenharmony_ci float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension 105617a3babSopenharmony_ci gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension 106617a3babSopenharmony_ci} 107617a3babSopenharmony_ci 108617a3babSopenharmony_ciprecise vec3 pv3; 109617a3babSopenharmony_ci 110617a3babSopenharmony_civoid goodfoop() 111617a3babSopenharmony_ci{ 112617a3babSopenharmony_ci precise float d; 113617a3babSopenharmony_ci 114617a3babSopenharmony_ci pv3 *= pv3; 115617a3babSopenharmony_ci pv3 = fma(pv3, pv3, pv3); 116617a3babSopenharmony_ci d = fma(d, d, d); 117617a3babSopenharmony_ci} 118617a3babSopenharmony_ci 119617a3babSopenharmony_civoid bb() 120617a3babSopenharmony_ci{ 121617a3babSopenharmony_ci gl_BoundingBoxEXT[0] = vec4(0.0); // ERROR without GL_EXT_primitive_bounding_box 122617a3babSopenharmony_ci gl_BoundingBoxOES[0] = vec4(0.0); // ERROR without GL_OES_primitive_bounding_box 123617a3babSopenharmony_ci gl_BoundingBox[0] = vec4(1.0); 124617a3babSopenharmony_ci gl_BoundingBox[1] = vec4(1.0); 125617a3babSopenharmony_ci gl_BoundingBox[2] = vec4(2.0); // ERROR, overflow 126617a3babSopenharmony_ci} 127617a3babSopenharmony_ci 128617a3babSopenharmony_ci#extension GL_EXT_primitive_bounding_box : enable 129617a3babSopenharmony_ci#extension GL_OES_primitive_bounding_box : enable 130617a3babSopenharmony_ci 131617a3babSopenharmony_civoid bbext() 132617a3babSopenharmony_ci{ 133617a3babSopenharmony_ci gl_BoundingBoxEXT[1] = vec4(0.0); 134617a3babSopenharmony_ci gl_BoundingBoxOES[1] = vec4(0.0); 135617a3babSopenharmony_ci} 136617a3babSopenharmony_ci 137617a3babSopenharmony_ciout patch badpatchBName { // ERROR, array size required 138617a3babSopenharmony_ci float f; 139617a3babSopenharmony_ci} badpatchIName[]; 140617a3babSopenharmony_ci 141617a3babSopenharmony_ciout patch patchBName { 142617a3babSopenharmony_ci float f; 143617a3babSopenharmony_ci} patchIName[4]; 144617a3babSopenharmony_ci 145617a3babSopenharmony_civoid outputtingOutparam(out int a) 146617a3babSopenharmony_ci{ 147617a3babSopenharmony_ci a = 2; 148617a3babSopenharmony_ci} 149617a3babSopenharmony_ci 150617a3babSopenharmony_civoid outputting() 151617a3babSopenharmony_ci{ 152617a3babSopenharmony_ci outa[gl_InvocationID] = 2; 153617a3babSopenharmony_ci outa[1] = 2; // ERROR, not gl_InvocationID 154617a3babSopenharmony_ci gl_out[0].gl_Position = vec4(1.0); // ERROR, not gl_InvocationID 155617a3babSopenharmony_ci outa[1]; 156617a3babSopenharmony_ci gl_out[0]; 157617a3babSopenharmony_ci outputtingOutparam(outa[0]); // ERROR, not gl_InvocationID 158617a3babSopenharmony_ci outputtingOutparam(outa[gl_InvocationID]); 159617a3babSopenharmony_ci patchIName[1].f = 3.14; 160617a3babSopenharmony_ci outa[(gl_InvocationID)] = 2; 161617a3babSopenharmony_ci} 162