--- .../compiler/component-layout/overlap-illegal.vert | 32 ------------- .../component-layout/vs-to-fs-overlap.shader_test | 52 ++++++++++++++++++++++ 2 files changed, 52 insertions(+), 32 deletions(-) delete mode 100644 tests/spec/arb_enhanced_layouts/compiler/component-layout/overlap-illegal.vert create mode 100644 tests/spec/arb_enhanced_layouts/linker/component-layout/vs-to-fs-overlap.shader_test
diff --git a/tests/spec/arb_enhanced_layouts/compiler/component-layout/overlap-illegal.vert b/tests/spec/arb_enhanced_layouts/compiler/component-layout/overlap-illegal.vert deleted file mode 100644 index d7d15e6..0000000 --- a/tests/spec/arb_enhanced_layouts/compiler/component-layout/overlap-illegal.vert +++ /dev/null @@ -1,32 +0,0 @@ -// [config] -// expect_result: fail -// glsl_version: 1.40 -// check_link: true -// require_extensions: GL_ARB_enhanced_layouts GL_ARB_separate_shader_objects -// [end config] -// -// From Section 4.4.1 (Input Layout Qualifiers) of the GLSL 4.50 spec: -// -// "Location aliasing is causing two variables or block members to have the -// same location number. Component aliasing is assigning the same (or -// overlapping) component numbers for two location aliases. (Recall if -// component is not used, components are assigned starting with 0.) With one -// exception, location aliasing is allowed only if it does not cause -// component aliasing; it is a compile-time or link-time error to cause -// component aliasing." - -#version 140 -#extension GL_ARB_enhanced_layouts: require -#extension GL_ARB_separate_shader_objects: require - -// consume Y/Z/W components -layout(location = 0, component = 1) out vec3 a; - -// consumes W component -layout(location = 0, component = 3) out float b; - -void main() -{ - a = vec3(1.0); - b = 0.0; -} diff --git a/tests/spec/arb_enhanced_layouts/linker/component-layout/vs-to-fs-overlap.shader_test b/tests/spec/arb_enhanced_layouts/linker/component-layout/vs-to-fs-overlap.shader_test new file mode 100644 index 0000000..e0e88e1 --- /dev/null +++ b/tests/spec/arb_enhanced_layouts/linker/component-layout/vs-to-fs-overlap.shader_test @@ -0,0 +1,52 @@ +// From Section 4.4.1 (Input Layout Qualifiers) of the GLSL 4.50 spec: +// +// "Location aliasing is causing two variables or block members to have the +// same location number. Component aliasing is assigning the same (or +// overlapping) component numbers for two location aliases. (Recall if +// component is not used, components are assigned starting with 0.) With one +// exception, location aliasing is allowed only if it does not cause +// component aliasing; it is a compile-time or link-time error to cause +// component aliasing." + +[require] +GLSL >= 1.40 +GL_ARB_enhanced_layouts +GL_ARB_separate_shader_objects + +[vertex shader] +#version 140 +#extension GL_ARB_enhanced_layouts: require +#extension GL_ARB_separate_shader_objects: require + +// consume Y/Z/W components +layout(location = 0, component = 1) out vec3 a; + +// consumes W component +layout(location = 0, component = 3) out float b; + +void main() +{ + a = vec3(1.0); + b = 0.0; +} + +[fragment shader] +#version 140 +#extension GL_ARB_enhanced_layouts: require +#extension GL_ARB_separate_shader_objects: require + +out vec4 color; + +// consume Y/Z/W components +layout(location = 0, component = 1) in vec3 a; + +// consumes W component +layout(location = 0, component = 3) in float b; + +void main() +{ + color = vec4(b, a); +} + +[test] +link error -- 2.4.3 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit