[Piglit] [PATCH 8/8] arb_enhanced_layouts: add layout component tests for frag shader outputs
Timothy Arceri
timothy.arceri at collabora.com
Sun Nov 29 14:19:57 PST 2015
---
.../component-layout/fs-out-overlap.shader_test | 35 ++++++++++++++++++++++
.../component-layout/fs-out-overlap2.shader_test | 35 ++++++++++++++++++++++
.../component-layout/fs-out-overlap3.shader_test | 35 ++++++++++++++++++++++
.../fs-out-type-mismatch.shader_test | 35 ++++++++++++++++++++++
.../linker/component-layout/fs-out.shader_test | 35 ++++++++++++++++++++++
5 files changed, 175 insertions(+)
create mode 100644 tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap.shader_test
create mode 100644 tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap2.shader_test
create mode 100644 tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap3.shader_test
create mode 100644 tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-type-mismatch.shader_test
create mode 100644 tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out.shader_test
diff --git a/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap.shader_test b/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap.shader_test
new file mode 100644
index 0000000..c2cdb06
--- /dev/null
+++ b/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap.shader_test
@@ -0,0 +1,35 @@
+// From Section 4.4.2 (Output Layout Qualifiers) of the GLSL 4.40 spec:
+//
+// "Additionally, for fragment shader outputs, if two variables are placed
+// within the same location, they must have the same underlying type
+// (floating-point or integer). No component aliasing of output variables or
+// members is allowed."
+
+[require]
+GLSL >= 1.40
+GL_ARB_enhanced_layouts
+GL_ARB_separate_shader_objects
+GL_ARB_explicit_attrib_location
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 140
+#extension GL_ARB_enhanced_layouts: require
+#extension GL_ARB_separate_shader_objects: require
+#extension GL_ARB_explicit_attrib_location: require
+
+// consume X/Y components
+layout(location = 0) out vec2 a;
+
+// consumes Z/W components
+layout(location = 0, component = 1) out vec2 b;
+
+void main()
+{
+ a = vec2(0.0);
+ b = vec2(1.0);
+}
+
+[test]
+link error
diff --git a/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap2.shader_test b/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap2.shader_test
new file mode 100644
index 0000000..44817ee
--- /dev/null
+++ b/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap2.shader_test
@@ -0,0 +1,35 @@
+// From Section 4.4.2 (Output Layout Qualifiers) of the GLSL 4.40 spec:
+//
+// "Additionally, for fragment shader outputs, if two variables are placed
+// within the same location, they must have the same underlying type
+// (floating-point or integer). No component aliasing of output variables or
+// members is allowed."
+
+[require]
+GLSL >= 1.40
+GL_ARB_enhanced_layouts
+GL_ARB_separate_shader_objects
+GL_ARB_explicit_attrib_location
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_enhanced_layouts: require
+#extension GL_ARB_separate_shader_objects: require
+#extension GL_ARB_explicit_attrib_location: require
+
+// consume X/Y components
+layout(location = 0) out vec3 a;
+
+// consumes Z/W components
+layout(location = 0, component = 1) out float b;
+
+void main()
+{
+ a = vec3(0.0);
+ b = 1.0;
+}
+
+[test]
+link error
diff --git a/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap3.shader_test b/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap3.shader_test
new file mode 100644
index 0000000..f6200b6
--- /dev/null
+++ b/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-overlap3.shader_test
@@ -0,0 +1,35 @@
+// From Section 4.4.2 (Output Layout Qualifiers) of the GLSL 4.40 spec:
+//
+// "Additionally, for fragment shader outputs, if two variables are placed
+// within the same location, they must have the same underlying type
+// (floating-point or integer). No component aliasing of output variables or
+// members is allowed."
+
+[require]
+GLSL >= 1.40
+GL_ARB_enhanced_layouts
+GL_ARB_separate_shader_objects
+GL_ARB_explicit_attrib_location
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_enhanced_layouts: require
+#extension GL_ARB_separate_shader_objects: require
+#extension GL_ARB_explicit_attrib_location: require
+
+// consume X/Y components
+layout(location = 0) out vec3 a;
+
+// consumes Z/W components
+layout(location = 0, component = 0) out float b;
+
+void main()
+{
+ a = vec3(0.0);
+ b = 1.0;
+}
+
+[test]
+link error
diff --git a/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-type-mismatch.shader_test b/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-type-mismatch.shader_test
new file mode 100644
index 0000000..450c182
--- /dev/null
+++ b/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out-type-mismatch.shader_test
@@ -0,0 +1,35 @@
+// From Section 4.4.2 (Output Layout Qualifiers) of the GLSL 4.40 spec:
+//
+// "Additionally, for fragment shader outputs, if two variables are placed
+// within the same location, they must have the same underlying type
+// (floating-point or integer). No component aliasing of output variables or
+// members is allowed."
+
+[require]
+GLSL >= 1.40
+GL_ARB_enhanced_layouts
+GL_ARB_separate_shader_objects
+GL_ARB_explicit_attrib_location
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_enhanced_layouts: require
+#extension GL_ARB_separate_shader_objects: require
+#extension GL_ARB_explicit_attrib_location: require
+
+// consume X/Y components
+layout(location = 0) out ivec2 a;
+
+// consumes Z/W components
+layout(location = 0, component = 2) out vec2 b;
+
+void main()
+{
+ a = ivec2(0);
+ b = vec2(1.0);
+}
+
+[test]
+link error
diff --git a/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out.shader_test b/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out.shader_test
new file mode 100644
index 0000000..f1317c3
--- /dev/null
+++ b/tests/spec/arb_enhanced_layouts/linker/component-layout/fs-out.shader_test
@@ -0,0 +1,35 @@
+// From Section 4.4.2 (Output Layout Qualifiers) of the GLSL 4.40 spec:
+//
+// "Additionally, for fragment shader outputs, if two variables are placed
+// within the same location, they must have the same underlying type
+// (floating-point or integer). No component aliasing of output variables or
+// members is allowed."
+
+[require]
+GLSL >= 1.40
+GL_ARB_enhanced_layouts
+GL_ARB_separate_shader_objects
+GL_ARB_explicit_attrib_location
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 140
+#extension GL_ARB_enhanced_layouts: require
+#extension GL_ARB_separate_shader_objects: require
+#extension GL_ARB_explicit_attrib_location: require
+
+// consume X/Y components
+layout(location = 0) out vec2 a;
+
+// consumes Z/W components
+layout(location = 0, component = 2) out vec2 b;
+
+void main()
+{
+ a = vec2(0.0);
+ b = vec2(1.0);
+}
+
+[test]
+link success
--
2.4.3
More information about the Piglit
mailing list