Add geometry-shader stream, invocations, max_vertices, lines, triangles, etc. layout qualifiers, and their default/inheritance behaviors, and some other misc. geometry shader features.  (Geometry shaders are not yet done though.)


git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23679 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/Test/150.geom b/Test/150.geom
index 3d80982..c09b4ce 100644
--- a/Test/150.geom
+++ b/Test/150.geom
@@ -36,3 +36,57 @@
     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 ooutb {

+    layout(stream = 6) vec4 a;

+} ouua6;

+

+layout(stream = 7) out ooutb {

+    layout(stream = 6) vec4 a;  // ERROR

+} ouua7;

+

+out vec4 ov2s3;  // stream should be 3

+

+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; }; // ERROR, not on a block

+out outbn {

+    layout(invocations = 3)  int a; // ERROR, not on a block member

+    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_adjancency) in;

+layout(triangles) in;             // ERROR, can't change it

+layout(triangles_adjacency) in;   // ERROR, can't change it

+

+layout(invocations = 4, max_vertices = 127) out;

+

+in inbn {

+    layout(stream = 2) int a;     // ERROR, stream on input

+} inbi;