[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