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.arc...@collabora.com> Signed-off-by: Andres Gomez <ago...@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 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit