[Piglit] [PATCH 1/9] glsl-1.50: Add GS output layout qualifier redeclaration test

Andres Gomez agomez at igalia.com
Wed Oct 26 16:14:08 UTC 2016


Section 4.3.8.2 (Output Layout Qualifiers) of the GLSL 1.50 spec says:

    "All geometry shader output layout declarations in a program must declare the
     same layout and same value for max_vertices."

V2: Renamed test, as suggested by Timothy.

Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
Signed-off-by: Andres Gomez <agomez at igalia.com>
---
 ...declaration-per-program-max-verts-mismatch.geom | 22 +++++++++++++++++++
 ...-one-out-declaration-per-program-max-verts.geom | 25 +++++++++++++++++-----
 2 files changed, 42 insertions(+), 5 deletions(-)
 create mode 100644 tests/spec/glsl-1.50/compiler/layout-only-one-out-declaration-per-program-max-verts-mismatch.geom

diff --git a/tests/spec/glsl-1.50/compiler/layout-only-one-out-declaration-per-program-max-verts-mismatch.geom b/tests/spec/glsl-1.50/compiler/layout-only-one-out-declaration-per-program-max-verts-mismatch.geom
new file mode 100644
index 0000000..c3b067f
--- /dev/null
+++ b/tests/spec/glsl-1.50/compiler/layout-only-one-out-declaration-per-program-max-verts-mismatch.geom
@@ -0,0 +1,22 @@
+// [config]
+// expect_result: fail
+// glsl_version: 1.50
+// check_link: true
+// [end config]
+//
+// Section 4.3.8.2(Output Layout Qualifiers) of the GLSL 1.50 spec says:
+// "All geometry shader output layout declarations in a program must declare the
+//  same layout and same value for max_vertices."
+
+#version 150
+
+layout(lines) in;
+layout(line_strip, max_vertices=2) out;
+
+in vec4 pos[];
+
+layout(line_strip, max_vertices=3) out;
+
+void main()
+{
+}
diff --git a/tests/spec/glsl-1.50/compiler/layout-only-one-out-declaration-per-program-max-verts.geom b/tests/spec/glsl-1.50/compiler/layout-only-one-out-declaration-per-program-max-verts.geom
index c3b067f..da8a86c 100644
--- a/tests/spec/glsl-1.50/compiler/layout-only-one-out-declaration-per-program-max-verts.geom
+++ b/tests/spec/glsl-1.50/compiler/layout-only-one-out-declaration-per-program-max-verts.geom
@@ -1,21 +1,36 @@
 // [config]
-// expect_result: fail
+// expect_result: pass
 // glsl_version: 1.50
 // check_link: true
 // [end config]
 //
-// Section 4.3.8.2(Output Layout Qualifiers) of the GLSL 1.50 spec says:
-// "All geometry shader output layout declarations in a program must declare the
-//  same layout and same value for max_vertices."
+// Section 4.3.8.2 (Output Layout Qualifiers) of the GLSL 1.50 spec says:
+//
+//    "layout(triangle_strip, max_vertices = 60) out; // order does not matter
+//     layout(max_vertices = 60) out;                 // redeclaration okay (*)
+//     layout(triangle_strip) out;                    // redeclaration okay (*)
+//     layout(points) out;                            // error, contradicts triangle_strip
+//     layout(max_vertices = 30) out;                 // error, contradicts 60"
+//
+//    ...
+//
+//    "All geometry shader output layout declarations in a program must declare the
+//     same layout and same value for max_vertices."
+//
+// This test verifies the case marked with (*), namely that no error
+// results from declaring a geometry shader output layout that is
+// consistent with a previously declared geometry shader output layout.
 
 #version 150
 
 layout(lines) in;
-layout(line_strip, max_vertices=2) out;
+layout(line_strip, max_vertices=3) out;
 
 in vec4 pos[];
 
 layout(line_strip, max_vertices=3) out;
+layout(max_vertices=3) out;
+layout(line_strip) out;
 
 void main()
 {
-- 
2.9.3



More information about the Piglit mailing list