| #version 310 es | |
| #extension GL_EXT_tessellation_shader : enable | |
| #extension GL_OES_tessellation_shader : enable | |
| #extension GL_EXT_tessellation_shader : disable | |
| layout(vertices = 4) out; // ERROR | |
| layout(quads, cw) in; | |
| layout(triangles) in; // ERROR | |
| layout(isolines) in; // ERROR | |
| layout(ccw) in; // ERROR | |
| layout(cw) in; | |
| layout(fractional_odd_spacing) in; | |
| layout(equal_spacing) in; // ERROR | |
| layout(fractional_even_spacing) in; // ERROR | |
| layout(point_mode) in; | |
| patch in vec4 patchIn; | |
| patch out vec4 patchOut; // ERROR | |
| void main() | |
| { | |
| barrier(); // ERROR | |
| int a = gl_MaxTessEvaluationInputComponents + | |
| gl_MaxTessEvaluationOutputComponents + | |
| gl_MaxTessEvaluationTextureImageUnits + | |
| gl_MaxTessEvaluationUniformComponents + | |
| gl_MaxTessPatchComponents + | |
| gl_MaxPatchVertices + | |
| gl_MaxTessGenLevel; | |
| vec4 p = gl_in[1].gl_Position; | |
| float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension | |
| float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES | |
| int pvi = gl_PatchVerticesIn; | |
| int pid = gl_PrimitiveID; | |
| vec3 tc = gl_TessCoord; | |
| float tlo = gl_TessLevelOuter[3]; | |
| float tli = gl_TessLevelInner[1]; | |
| gl_Position = p; | |
| gl_PointSize = ps; // ERROR, need point_size extension | |
| gl_ClipDistance[2] = cd; // ERROR, not in ES | |
| } | |
| smooth patch in vec4 badp1; // ERROR | |
| flat patch in vec4 badp2; // ERROR | |
| noperspective patch in vec4 badp3; // ERROR | |
| patch sample in vec3 badp4; // ERROR | |
| #extension GL_ARB_separate_shader_objects : enable | |
| in gl_PerVertex | |
| { | |
| vec4 gl_Position; | |
| } gl_in[]; | |
| in gl_PerVertex // ERROR, second redeclaration of gl_in | |
| { | |
| vec4 gl_Position; | |
| } gl_in[]; | |
| layout(quads, cw) out; // ERROR | |
| layout(triangles) out; // ERROR | |
| layout(isolines) out; // ERROR | |
| layout(cw) out; // ERROR | |
| layout(fractional_odd_spacing) out; // ERROR | |
| layout(equal_spacing) out; // ERROR | |
| layout(fractional_even_spacing) out; // ERROR | |
| layout(point_mode) out; // ERROR | |
| in vec2 ina; // ERROR, not array | |
| in vec2 inb[]; | |
| in vec2 inc[18]; // ERROR, wrong size | |
| in vec2 ind[gl_MaxPatchVertices]; | |
| in testbla { // ERROR, not array | |
| int f; | |
| } bla; | |
| in testblb { | |
| int f; | |
| } blb[]; | |
| in testblc { // ERROR wrong size | |
| int f; | |
| } blc[18]; | |
| in testbld { | |
| int f; | |
| } bld[gl_MaxPatchVertices]; | |
| layout(location = 23) in vec4 ivla[]; | |
| layout(location = 24) in vec4 ivlb[]; | |
| layout(location = 24) in vec4 ivlc[]; // ERROR, overlap | |
| layout(location = 23) out vec4 ovla[2]; | |
| layout(location = 24) out vec4 ovlb[2]; // ERROR, overlap | |
| in float gl_TessLevelOuter[4]; // ERROR, can't redeclare | |
| patch in pinbn { | |
| int a; | |
| } pinbi; | |
| centroid out vec3 myColor2; | |
| centroid in vec3 centr[]; | |
| sample out vec4 perSampleColor; // ERROR without sample extensions | |
| #extension GL_OES_tessellation_point_size : enable | |
| void pointSize2() | |
| { | |
| float ps = gl_in[1].gl_PointSize; // ERROR, not in the redeclaration, but no error on use of gl_PointSize | |
| gl_PointSize = ps; | |
| } | |
| #extension GL_EXT_primitive_bounding_box : enable | |
| void bbbad() | |
| { | |
| gl_BoundingBoxOES; // ERROR, wrong stage | |
| } |