[Piglit] [PATCH 1/2] Test interpolation qualifiers inside of interface blocks.
Paul Berry
stereotype441 at gmail.com
Tue Oct 22 21:37:17 CEST 2013
Validated using the NVIDIA proprietary driver for Linux (version
313.18).
---
...interface-block-interpolation-array.shader_test | 85 ++++++++++++++++++++++
...interface-block-interpolation-named.shader_test | 81 +++++++++++++++++++++
...terface-block-interpolation-unnamed.shader_test | 81 +++++++++++++++++++++
3 files changed, 247 insertions(+)
create mode 100644 tests/spec/glsl-1.50/execution/interface-block-interpolation-array.shader_test
create mode 100644 tests/spec/glsl-1.50/execution/interface-block-interpolation-named.shader_test
create mode 100644 tests/spec/glsl-1.50/execution/interface-block-interpolation-unnamed.shader_test
diff --git a/tests/spec/glsl-1.50/execution/interface-block-interpolation-array.shader_test b/tests/spec/glsl-1.50/execution/interface-block-interpolation-array.shader_test
new file mode 100644
index 0000000..079cda5
--- /dev/null
+++ b/tests/spec/glsl-1.50/execution/interface-block-interpolation-array.shader_test
@@ -0,0 +1,85 @@
+# Verify that interpolation qualifiers (flat, smooth, noperspective)
+# declared inside interface blocks are properly respected.
+#
+# This test operates by comparing varyings declared inside an
+# interface block with varyings declared outside an interface block.
+# We assume that interpolation qualifiers work properly when declared
+# outside interface blocks, because that is tested by other piglit
+# tests.
+#
+# In this test, we verify proper functioning of interpolation
+# qualifiers in an interface block array.
+
+[require]
+GLSL >= 1.50
+
+[vertex shader]
+in vec4 piglit_vertex;
+
+flat out float flat_var;
+smooth out float smooth_var;
+noperspective out float noperspective_var;
+out float unqualified_var;
+
+out Blk {
+ flat float flat_var;
+ smooth float smooth_var;
+ noperspective float noperspective_var;
+ float unqualified_var;
+} ifc[2];
+
+void main()
+{
+ gl_Position = piglit_vertex;
+ float var = float(gl_VertexID);
+ flat_var = var;
+ smooth_var = var;
+ noperspective_var = var;
+ unqualified_var = var;
+ for (int i = 0; i < 2; i++) {
+ ifc[i].flat_var = var;
+ ifc[i].smooth_var = var;
+ ifc[i].noperspective_var = var;
+ ifc[i].unqualified_var = var;
+ }
+}
+
+[fragment shader]
+flat in float flat_var;
+smooth in float smooth_var;
+noperspective in float noperspective_var;
+in float unqualified_var;
+
+in Blk {
+ flat float flat_var;
+ smooth float smooth_var;
+ noperspective float noperspective_var;
+ float unqualified_var;
+} ifc[2];
+
+void main()
+{
+ bool ok = true;
+ for (int i = 0; i < 2; i++) {
+ if (flat_var != ifc[i].flat_var) ok = false;
+ if (smooth_var != ifc[i].smooth_var) ok = false;
+ if (noperspective_var != ifc[i].noperspective_var) ok = false;
+ if (unqualified_var != ifc[i].unqualified_var) ok = false;
+ }
+ gl_FragColor = ok ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[vertex data]
+piglit_vertex/float/4
+-1.0 -1.0 0.0 1.0
+ 0.0 2.0 0.0 2.0 # Note: different W's to ensure that smooth != noperspective
+ 3.0 -3.0 0.0 3.0
+
+[test]
+
+# Clear the background to green so that parts of the triangle which
+# aren't drawn won't cause the test to fail.
+clear color 0.0 1.0 0.0 1.0
+clear
+draw arrays GL_TRIANGLES 0 3
+probe all rgba 0.0 1.0 0.0 1.0
diff --git a/tests/spec/glsl-1.50/execution/interface-block-interpolation-named.shader_test b/tests/spec/glsl-1.50/execution/interface-block-interpolation-named.shader_test
new file mode 100644
index 0000000..a74b2af
--- /dev/null
+++ b/tests/spec/glsl-1.50/execution/interface-block-interpolation-named.shader_test
@@ -0,0 +1,81 @@
+# Verify that interpolation qualifiers (flat, smooth, noperspective)
+# declared inside interface blocks are properly respected.
+#
+# This test operates by comparing varyings declared inside an
+# interface block with varyings declared outside an interface block.
+# We assume that interpolation qualifiers work properly when declared
+# outside interface blocks, because that is tested by other piglit
+# tests.
+#
+# In this test, we verify proper functioning of interpolation
+# qualifiers in a named interface block.
+
+[require]
+GLSL >= 1.50
+
+[vertex shader]
+in vec4 piglit_vertex;
+
+flat out float flat_var;
+smooth out float smooth_var;
+noperspective out float noperspective_var;
+out float unqualified_var;
+
+out Blk {
+ flat float flat_var;
+ smooth float smooth_var;
+ noperspective float noperspective_var;
+ float unqualified_var;
+} ifc;
+
+void main()
+{
+ gl_Position = piglit_vertex;
+ float var = float(gl_VertexID);
+ flat_var = var;
+ smooth_var = var;
+ noperspective_var = var;
+ unqualified_var = var;
+ ifc.flat_var = var;
+ ifc.smooth_var = var;
+ ifc.noperspective_var = var;
+ ifc.unqualified_var = var;
+}
+
+[fragment shader]
+flat in float flat_var;
+smooth in float smooth_var;
+noperspective in float noperspective_var;
+in float unqualified_var;
+
+in Blk {
+ flat float flat_var;
+ smooth float smooth_var;
+ noperspective float noperspective_var;
+ float unqualified_var;
+} ifc;
+
+void main()
+{
+ bool ok = true;
+ if (flat_var != ifc.flat_var) ok = false;
+ if (smooth_var != ifc.smooth_var) ok = false;
+ if (noperspective_var != ifc.noperspective_var) ok = false;
+ if (unqualified_var != ifc.unqualified_var) ok = false;
+ gl_FragColor = ok ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[vertex data]
+piglit_vertex/float/4
+-1.0 -1.0 0.0 1.0
+ 0.0 2.0 0.0 2.0 # Note: different W's to ensure that smooth != noperspective
+ 3.0 -3.0 0.0 3.0
+
+[test]
+
+# Clear the background to green so that parts of the triangle which
+# aren't drawn won't cause the test to fail.
+clear color 0.0 1.0 0.0 1.0
+clear
+draw arrays GL_TRIANGLES 0 3
+probe all rgba 0.0 1.0 0.0 1.0
diff --git a/tests/spec/glsl-1.50/execution/interface-block-interpolation-unnamed.shader_test b/tests/spec/glsl-1.50/execution/interface-block-interpolation-unnamed.shader_test
new file mode 100644
index 0000000..b5e3ae0
--- /dev/null
+++ b/tests/spec/glsl-1.50/execution/interface-block-interpolation-unnamed.shader_test
@@ -0,0 +1,81 @@
+# Verify that interpolation qualifiers (flat, smooth, noperspective)
+# declared inside interface blocks are properly respected.
+#
+# This test operates by comparing varyings declared inside an
+# interface block with varyings declared outside an interface block.
+# We assume that interpolation qualifiers work properly when declared
+# outside interface blocks, because that is tested by other piglit
+# tests.
+#
+# In this test, we verify proper functioning of interpolation
+# qualifiers in an unnamed interface block.
+
+[require]
+GLSL >= 1.50
+
+[vertex shader]
+in vec4 piglit_vertex;
+
+flat out float flat_var;
+smooth out float smooth_var;
+noperspective out float noperspective_var;
+out float unqualified_var;
+
+out Blk {
+ flat float ifc_flat_var;
+ smooth float ifc_smooth_var;
+ noperspective float ifc_noperspective_var;
+ float ifc_unqualified_var;
+};
+
+void main()
+{
+ gl_Position = piglit_vertex;
+ float var = float(gl_VertexID);
+ flat_var = var;
+ smooth_var = var;
+ noperspective_var = var;
+ unqualified_var = var;
+ ifc_flat_var = var;
+ ifc_smooth_var = var;
+ ifc_noperspective_var = var;
+ ifc_unqualified_var = var;
+}
+
+[fragment shader]
+flat in float flat_var;
+smooth in float smooth_var;
+noperspective in float noperspective_var;
+in float unqualified_var;
+
+in Blk {
+ flat float ifc_flat_var;
+ smooth float ifc_smooth_var;
+ noperspective float ifc_noperspective_var;
+ float ifc_unqualified_var;
+};
+
+void main()
+{
+ bool ok = true;
+ if (flat_var != ifc_flat_var) ok = false;
+ if (smooth_var != ifc_smooth_var) ok = false;
+ if (noperspective_var != ifc_noperspective_var) ok = false;
+ if (unqualified_var != ifc_unqualified_var) ok = false;
+ gl_FragColor = ok ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[vertex data]
+piglit_vertex/float/4
+-1.0 -1.0 0.0 1.0
+ 0.0 2.0 0.0 2.0 # Note: different W's to ensure that smooth != noperspective
+ 3.0 -3.0 0.0 3.0
+
+[test]
+
+# Clear the background to green so that parts of the triangle which
+# aren't drawn won't cause the test to fail.
+clear color 0.0 1.0 0.0 1.0
+clear
+draw arrays GL_TRIANGLES 0 3
+probe all rgba 0.0 1.0 0.0 1.0
--
1.8.4.1
More information about the Piglit
mailing list