#pragma MSP stage(vertex) layout(location=0) in vec4 position; out Output { vec2 texcoord; } vs_out; out vec4 Output; void Output(); void main() { vs_out.texcoord = position.xy*0.5+0.5; gl_Position = position; } #pragma MSP stage(geometry) layout(triangles) in; layout(triangle_strip, max_vertices=3) out; in Output { vec2 texcoord; } vs_out[]; out Output { vec2 texcoord; } gs_out; out Output { vec4 color; }; void main() { for(int i=0; i<3; ++i) { gs_out.texcoord = vs_out[i].texcoord; gl_Position = gl_in[i].gl_Position; EmitVertex(); } } /* Expected error: :7: Multiple definition of 'Output' :3: Previous definition is here :8: Multiple definition of 'Output' :3: Previous definition is here :26: Multiple definition of interface block 'out Output' :22: Previous definition is here */