diff --git a/Test/150.geom b/Test/150.geom
index 9cb7466638aa6be5dd30e6aa3fa1633cd14ad436..2edf95076c74ce6c7a53ffdda966815d07377cc1 100644
--- a/Test/150.geom
+++ b/Test/150.geom
@@ -62,6 +62,8 @@ layout(stream = 7) out ooutb3 {
 
 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);
@@ -73,9 +75,9 @@ 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
+layout(invocations = 3) out outbn { int a; }; // 2 ERROR, not on a block, not until 4.0
 out outbn2 {
-    layout(invocations = 3)  int a; // ERROR, not on a block member
+    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;
@@ -84,8 +86,7 @@ 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) in;
-layout(max_vertices = 300) out;
+layout(invocations = 4) in;       // ERROR, not until 4.0
 
 in inbn {
     layout(stream = 2) int a;     // ERROR, stream on input
diff --git a/Test/baseResults/150.geom.out b/Test/baseResults/150.geom.out
index abda93b71903871230f2279fa6b51d77364d4b83..1b0961f318e153e615a721c570df9161f53ceb81 100644
--- a/Test/baseResults/150.geom.out
+++ b/Test/baseResults/150.geom.out
@@ -10,32 +10,33 @@ ERROR: 0:46: 'stream' : can only be used on an output
 ERROR: 0:47: 'stream' : can only be used on an output 
 ERROR: 0:47: 'stream' : can only be used on an output 
 ERROR: 0:60: 'stream' : member cannot contradict block 
-ERROR: 0:65: 'max_vertices' : can only apply to a standalone qualifier 
-ERROR: 0:70: 'points' : cannot change previously set output primitive 
-ERROR: 0:71: 'points' : cannot change previously set output primitive 
-ERROR: 0:72: 'triangle_strip' : cannot apply to input 
-ERROR: 0:73: 'triangle_strip' : cannot apply to: uniform
-ERROR: 0:74: 'triangle_strip' : can only apply to a standalone qualifier 
-ERROR: 0:75: 'triangle_strip' : can only apply to a standalone qualifier 
-ERROR: 0:76: 'invocations' : not supported for this version or the enabled extensions 
-ERROR: 0:76: 'invocations' : can only apply to a standalone qualifier 
+ERROR: 0:66: 'max_vertices' : too large, must be less than gl_MaxGeometryOutputVertices 
+ERROR: 0:66: 'max_vertices' : cannot change previously set layout value 
+ERROR: 0:67: 'max_vertices' : can only apply to a standalone qualifier 
+ERROR: 0:72: 'points' : cannot change previously set output primitive 
+ERROR: 0:73: 'points' : cannot change previously set output primitive 
+ERROR: 0:74: 'triangle_strip' : cannot apply to input 
+ERROR: 0:75: 'triangle_strip' : cannot apply to: uniform
+ERROR: 0:76: 'triangle_strip' : can only apply to a standalone qualifier 
+ERROR: 0:77: 'triangle_strip' : can only apply to a standalone qualifier 
 ERROR: 0:78: 'invocations' : not supported for this version or the enabled extensions 
 ERROR: 0:78: 'invocations' : can only apply to a standalone qualifier 
-ERROR: 0:79: 'max_vertices' : can only apply to a standalone qualifier 
-ERROR: 0:80: 'triangle_strip' : can only apply to a standalone qualifier 
-ERROR: 0:83: 'lines' : cannot apply to 'out' 
-ERROR: 0:85: 'triangles' : cannot change previously set input primitive 
-ERROR: 0:86: 'triangles_adjacency' : cannot change previously set input primitive 
-ERROR: 0:87: 'invocations' : not supported for this version or the enabled extensions 
-ERROR: 0:88: 'max_vertices' : too large, must be less than gl_MaxGeometryOutputVertices 
-ERROR: 0:91: 'stream' : member cannot contradict block 
-ERROR: 0:91: 'stream' : can only be used on an output 
-ERROR: 31 compilation errors.  No code generated.
+ERROR: 0:80: 'invocations' : not supported for this version or the enabled extensions 
+ERROR: 0:80: 'invocations' : can only apply to a standalone qualifier 
+ERROR: 0:81: 'max_vertices' : can only apply to a standalone qualifier 
+ERROR: 0:82: 'triangle_strip' : can only apply to a standalone qualifier 
+ERROR: 0:85: 'lines' : cannot apply to 'out' 
+ERROR: 0:87: 'triangles' : cannot change previously set input primitive 
+ERROR: 0:88: 'triangles_adjacency' : cannot change previously set input primitive 
+ERROR: 0:89: 'invocations' : not supported for this version or the enabled extensions 
+ERROR: 0:92: 'stream' : member cannot contradict block 
+ERROR: 0:92: 'stream' : can only be used on an output 
+ERROR: 32 compilation errors.  No code generated.
 
 
 Shader version: 150
 invocations = 4
-max_vertices = 300
+max_vertices = 200
 input primitive = lines_adjancency
 output primitive = triangle_strip
 ERROR: node is still EOpNull!
@@ -109,20 +110,20 @@ ERROR: node is still EOpNull!
 0:37        'gl_Layer' (layout(stream=0 ) out int)
 0:37        Constant:
 0:37          2 (const int)
-0:65  Function Definition: foo(i1; (void)
-0:65    Function Parameters: 
-0:65      'a' (in int)
-0:67    Sequence
-0:67      move second child to first child (4-component vector of float)
-0:67        a: direct index for structure (layout(stream=6 ) out 4-component vector of float)
-0:67          'ouuaa6' (layout(stream=6 ) out block{layout(stream=6 ) out 4-component vector of float a})
-0:67          Constant:
-0:67            0 (const int)
-0:67        Constant:
-0:67          1.000000
-0:67          1.000000
-0:67          1.000000
-0:67          1.000000
+0:67  Function Definition: foo(i1; (void)
+0:67    Function Parameters: 
+0:67      'a' (in int)
+0:69    Sequence
+0:69      move second child to first child (4-component vector of float)
+0:69        a: direct index for structure (layout(stream=6 ) out 4-component vector of float)
+0:69          'ouuaa6' (layout(stream=6 ) out block{layout(stream=6 ) out 4-component vector of float a})
+0:69          Constant:
+0:69            0 (const int)
+0:69        Constant:
+0:69          1.000000
+0:69          1.000000
+0:69          1.000000
+0:69          1.000000
 0:?   Linker Objects
 0:?     'fromV' (in 4-element array of block{in 3-component vector of float color})
 0:?     'toF' (layout(stream=0 ) out block{layout(stream=0 ) out 3-component vector of float color})
@@ -154,7 +155,7 @@ Linked geometry stage:
 
 Shader version: 150
 invocations = 4
-max_vertices = 300
+max_vertices = 200
 input primitive = lines_adjancency
 output primitive = triangle_strip
 ERROR: node is still EOpNull!
@@ -228,20 +229,20 @@ ERROR: node is still EOpNull!
 0:37        'gl_Layer' (layout(stream=0 ) out int)
 0:37        Constant:
 0:37          2 (const int)
-0:65  Function Definition: foo(i1; (void)
-0:65    Function Parameters: 
-0:65      'a' (in int)
-0:67    Sequence
-0:67      move second child to first child (4-component vector of float)
-0:67        a: direct index for structure (layout(stream=6 ) out 4-component vector of float)
-0:67          'ouuaa6' (layout(stream=6 ) out block{layout(stream=6 ) out 4-component vector of float a})
-0:67          Constant:
-0:67            0 (const int)
-0:67        Constant:
-0:67          1.000000
-0:67          1.000000
-0:67          1.000000
-0:67          1.000000
+0:67  Function Definition: foo(i1; (void)
+0:67    Function Parameters: 
+0:67      'a' (in int)
+0:69    Sequence
+0:69      move second child to first child (4-component vector of float)
+0:69        a: direct index for structure (layout(stream=6 ) out 4-component vector of float)
+0:69          'ouuaa6' (layout(stream=6 ) out block{layout(stream=6 ) out 4-component vector of float a})
+0:69          Constant:
+0:69            0 (const int)
+0:69        Constant:
+0:69          1.000000
+0:69          1.000000
+0:69          1.000000
+0:69          1.000000
 0:?   Linker Objects
 0:?     'fromV' (in 4-element array of block{in 3-component vector of float color})
 0:?     'toF' (layout(stream=0 ) out block{layout(stream=0 ) out 3-component vector of float color})