123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- #version 150 core
- in fromVertex {
- in vec3 color;
- } fromV[];
- out toFragment {
- out vec3 color;
- } toF;
- out fromVertex { // okay to reuse a block name for another block name
- vec3 color;
- };
- out fooB {
- vec2 color;
- } fromVertex; // ERROR, cannot reuse block name as block instance
- int fromVertex; // ERROR, cannot reuse a block name for something else
- out fooC {
- vec2 color;
- } fooC; // ERROR, cannot have same name for block and instance name
- void main()
- {
- EmitVertex();
- EndPrimitive();
- EmitStreamVertex(1); // ERROR
- EndStreamPrimitive(0); // ERROR
- color = fromV[0].color;
- gl_ClipDistance[3] = gl_in[1].gl_ClipDistance[2];
- gl_Position = gl_in[0].gl_Position;
- gl_PointSize = gl_in[3].gl_PointSize;
- gl_PrimitiveID = gl_PrimitiveIDIn;
- gl_Layer = 2;
- }
- out vec4 ov0; // stream should be 0
- layout(stream = 4) out vec4 ov4;
- out vec4 o1v0; // stream should be 0
- layout(stream = 3) uniform; // ERROR
- layout(stream = 3) in; // ERROR
- layout(stream = 3) uniform int ua; // ERROR
- layout(stream = 3) uniform ubb { int ua; } ibb; // ERROR
- layout(line_strip, points, triangle_strip, stream = 3, points, triangle_strip) out; // just means "stream = 3, triangle_strip"
- layout(stream = 3, triangle_strip) out;
- out vec4 ov3; // stream should be 3
- layout(stream = 6) out ooutb { vec4 a; } ouuaa6;
- layout(stream = 6) out ooutb2 {
- layout(stream = 6) vec4 a;
- } ouua6;
- layout(stream = 7) out ooutb3 {
- layout(stream = 6) vec4 a; // ERROR
- } ouua7;
- out vec4 ov2s3; // stream should be 3
- layout(max_vertices = 200) out;
- layout(max_vertices = 300) out; // ERROR, too big
- void foo(layout(max_vertices = 4) int a) // ERROR
- {
- ouuaa6.a = vec4(1.0);
- }
- layout(line_strip, points, triangle_strip, stream = 3, points) out; // ERROR, changing output primitive
- layout(line_strip, points, stream = 3) out; // ERROR, changing output primitive
- layout(triangle_strip) in; // ERROR, not an input primitive
- layout(triangle_strip) uniform; // ERROR
- layout(triangle_strip) out vec4 badv4; // ERROR, not on a variable
- layout(triangle_strip) in vec4 bad2v4[]; // ERROR, not on a variable or input
- layout(invocations = 3) out outbn { int a; }; // 2 ERROR, not on a block, not until 4.0
- out outbn2 {
- layout(invocations = 3) int a; // 2 ERRORs, not on a block member, not until 4.0
- layout(max_vertices = 3) int b; // ERROR, not on a block member
- layout(triangle_strip) int c; // ERROR, not on a block member
- } outbi;
- layout(lines) out; // ERROR, not on output
- layout(lines_adjacency) in;
- layout(triangles) in; // ERROR, can't change it
- layout(triangles_adjacency) in; // ERROR, can't change it
- layout(invocations = 4) in; // ERROR, not until 4.0
- in inbn {
- layout(stream = 2) int a; // ERROR, stream on input
- } inbi[];
- in sameName {
- int a15;
- } insn[];
- out sameName {
- float f15;
- };
- uniform sameName {
- bool b15;
- };
- float summ = gl_MaxVertexAttribs +
- gl_MaxVertexUniformComponents +
- gl_MaxVaryingFloats +
- gl_MaxVaryingComponents +
- gl_MaxVertexOutputComponents +
- gl_MaxGeometryInputComponents +
- gl_MaxGeometryOutputComponents +
- gl_MaxFragmentInputComponents +
- gl_MaxVertexTextureImageUnits +
- gl_MaxCombinedTextureImageUnits +
- gl_MaxTextureImageUnits +
- gl_MaxFragmentUniformComponents +
- gl_MaxDrawBuffers +
- gl_MaxClipDistances +
- gl_MaxGeometryTextureImageUnits +
- gl_MaxGeometryOutputVertices +
- gl_MaxGeometryTotalOutputComponents +
- gl_MaxGeometryUniformComponents +
- gl_MaxGeometryVaryingComponents;
- void fooe1()
- {
- gl_ViewportIndex = gl_MaxViewports - 1;
- }
- #extension GL_ARB_viewport_array : enable
- void fooe2()
- {
- gl_ViewportIndex = gl_MaxViewports - 1;
- }
- out int gl_ViewportIndex;
|