[Piglit] [PATCH] Add tests of isinf and isnan on vectors.

Paul Berry stereotype441 at gmail.com
Wed Oct 26 15:44:42 PDT 2011


Tested on the nVidia proprietary Linux driver.
---
 .../glsl-1.30/execution/fs-isinf-vec2.shader_test  |   37 +++++++++++++++++++
 .../glsl-1.30/execution/fs-isinf-vec3.shader_test  |   37 +++++++++++++++++++
 .../glsl-1.30/execution/fs-isinf-vec4.shader_test  |   37 +++++++++++++++++++
 .../glsl-1.30/execution/fs-isnan-vec2.shader_test  |   37 +++++++++++++++++++
 .../glsl-1.30/execution/fs-isnan-vec3.shader_test  |   37 +++++++++++++++++++
 .../glsl-1.30/execution/fs-isnan-vec4.shader_test  |   37 +++++++++++++++++++
 .../glsl-1.30/execution/vs-isinf-vec2.shader_test  |   38 ++++++++++++++++++++
 .../glsl-1.30/execution/vs-isinf-vec3.shader_test  |   38 ++++++++++++++++++++
 .../glsl-1.30/execution/vs-isinf-vec4.shader_test  |   38 ++++++++++++++++++++
 .../glsl-1.30/execution/vs-isnan-vec2.shader_test  |   38 ++++++++++++++++++++
 .../glsl-1.30/execution/vs-isnan-vec3.shader_test  |   38 ++++++++++++++++++++
 .../glsl-1.30/execution/vs-isnan-vec4.shader_test  |   38 ++++++++++++++++++++
 12 files changed, 450 insertions(+), 0 deletions(-)
 create mode 100644 tests/spec/glsl-1.30/execution/fs-isinf-vec2.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/fs-isinf-vec3.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/fs-isinf-vec4.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/fs-isnan-vec2.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/fs-isnan-vec3.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/fs-isnan-vec4.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/vs-isinf-vec2.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/vs-isinf-vec3.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/vs-isinf-vec4.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/vs-isnan-vec2.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/vs-isnan-vec3.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/vs-isnan-vec4.shader_test

diff --git a/tests/spec/glsl-1.30/execution/fs-isinf-vec2.shader_test b/tests/spec/glsl-1.30/execution/fs-isinf-vec2.shader_test
new file mode 100644
index 0000000..7399728
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/fs-isinf-vec2.shader_test
@@ -0,0 +1,37 @@
+# Test proper behavior of the isinf(vec2) function.
+#
+# Note: testing behavior if isinf() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# infinite values are required to be generated.  This test assumes
+# that the expressions 1.0*exp(1000.0) and -1.0*exp(1000.0) produce
+# infinite values when evaluated in the shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+void main()
+{
+  gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+#version 130
+uniform vec2 multiplier;
+uniform vec2 exponent;
+
+void main()
+{
+  gl_FragColor = vec4(isinf(multiplier*exp(exponent)), 0.0, 1.0);
+}
+
+[test]
+uniform vec2 multiplier 1.0 1.0
+uniform vec2 exponent 1.0 1000.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 0.0 1.0
+uniform vec2 multiplier -1.0 -1.0
+uniform vec2 exponent 1000.0 1.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/fs-isinf-vec3.shader_test b/tests/spec/glsl-1.30/execution/fs-isinf-vec3.shader_test
new file mode 100644
index 0000000..49b04b2
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/fs-isinf-vec3.shader_test
@@ -0,0 +1,37 @@
+# Test proper behavior of the isinf(vec3) function.
+#
+# Note: testing behavior if isinf() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# infinite values are required to be generated.  This test assumes
+# that the expressions 1.0*exp(1000.0) and -1.0*exp(1000.0) produce
+# infinite values when evaluated in the shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+void main()
+{
+  gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+#version 130
+uniform vec3 multiplier;
+uniform vec3 exponent;
+
+void main()
+{
+  gl_FragColor = vec4(isinf(multiplier*exp(exponent)), 1.0);
+}
+
+[test]
+uniform vec3 multiplier 1.0 1.0 -1.0
+uniform vec3 exponent 1.0 1000.0 1000.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 1.0 1.0
+uniform vec3 multiplier -1.0 -1.0 1.0
+uniform vec3 exponent 1000.0 1.0 1.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/fs-isinf-vec4.shader_test b/tests/spec/glsl-1.30/execution/fs-isinf-vec4.shader_test
new file mode 100644
index 0000000..7b901b3
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/fs-isinf-vec4.shader_test
@@ -0,0 +1,37 @@
+# Test proper behavior of the isinf(vec4) function.
+#
+# Note: testing behavior if isinf() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# infinite values are required to be generated.  This test assumes
+# that the expressions 1.0*exp(1000.0) and -1.0*exp(1000.0) produce
+# infinite values when evaluated in the shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+void main()
+{
+  gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+#version 130
+uniform vec4 multiplier;
+uniform vec4 exponent;
+
+void main()
+{
+  gl_FragColor = vec4(isinf(multiplier*exp(exponent)));
+}
+
+[test]
+uniform vec4 multiplier 1.0 1.0 -1.0 -1.0
+uniform vec4 exponent 1.0 1000.0 1000.0 1.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 1.0 0.0
+uniform vec4 multiplier -1.0 -1.0 1.0 1.0
+uniform vec4 exponent 1000.0 1.0 1.0 1000.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/fs-isnan-vec2.shader_test b/tests/spec/glsl-1.30/execution/fs-isnan-vec2.shader_test
new file mode 100644
index 0000000..e0adb8f
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/fs-isnan-vec2.shader_test
@@ -0,0 +1,37 @@
+# Test proper behavior of the isnan(vec2) function.
+#
+# Note: testing behavior if isnan() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# NaN values are required to be generated.  This test assumes that the
+# expression 0.0/0.0 produces a NaN value when evaluated in the
+# shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+void main()
+{
+  gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+#version 130
+uniform vec2 numerator;
+uniform vec2 denominator;
+
+void main()
+{
+  gl_FragColor = vec4(isnan(numerator/denominator), 0.0, 1.0);
+}
+
+[test]
+uniform vec2 numerator 1.0 0.0
+uniform vec2 denominator 1.0 0.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 0.0 1.0
+uniform vec2 numerator 0.0 1.0
+uniform vec2 denominator 0.0 1.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/fs-isnan-vec3.shader_test b/tests/spec/glsl-1.30/execution/fs-isnan-vec3.shader_test
new file mode 100644
index 0000000..f50005d
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/fs-isnan-vec3.shader_test
@@ -0,0 +1,37 @@
+# Test proper behavior of the isnan(vec3) function.
+#
+# Note: testing behavior if isnan() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# NaN values are required to be generated.  This test assumes that the
+# expression 0.0/0.0 produces a NaN value when evaluated in the
+# shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+void main()
+{
+  gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+#version 130
+uniform vec3 numerator;
+uniform vec3 denominator;
+
+void main()
+{
+  gl_FragColor = vec4(isnan(numerator/denominator), 1.0);
+}
+
+[test]
+uniform vec3 numerator 1.0 0.0 0.0
+uniform vec3 denominator 1.0 0.0 0.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 1.0 1.0
+uniform vec3 numerator 0.0 1.0 1.0
+uniform vec3 denominator 0.0 1.0 1.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/fs-isnan-vec4.shader_test b/tests/spec/glsl-1.30/execution/fs-isnan-vec4.shader_test
new file mode 100644
index 0000000..dd25129
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/fs-isnan-vec4.shader_test
@@ -0,0 +1,37 @@
+# Test proper behavior of the isnan(vec4) function.
+#
+# Note: testing behavior if isnan() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# NaN values are required to be generated.  This test assumes that the
+# expression 0.0/0.0 produces a NaN value when evaluated in the
+# shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+void main()
+{
+  gl_Position = gl_Vertex;
+}
+
+[fragment shader]
+#version 130
+uniform vec4 numerator;
+uniform vec4 denominator;
+
+void main()
+{
+  gl_FragColor = vec4(isnan(numerator/denominator));
+}
+
+[test]
+uniform vec4 numerator 1.0 0.0 0.0 1.0
+uniform vec4 denominator 1.0 0.0 0.0 1.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 1.0 0.0
+uniform vec4 numerator 0.0 1.0 1.0 0.0
+uniform vec4 denominator 0.0 1.0 1.0 0.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/vs-isinf-vec2.shader_test b/tests/spec/glsl-1.30/execution/vs-isinf-vec2.shader_test
new file mode 100644
index 0000000..b253ff9
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/vs-isinf-vec2.shader_test
@@ -0,0 +1,38 @@
+# Test proper behavior of the isinf(vec2) function.
+#
+# Note: testing behavior if isinf() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# infinite values are required to be generated.  This test assumes
+# that the expressions 1.0*exp(1000.0) and -1.0*exp(1000.0) produce
+# infinite values when evaluated in the shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+uniform vec2 multiplier;
+uniform vec2 exponent;
+
+void main()
+{
+  gl_Position = gl_Vertex;
+  gl_FrontColor = vec4(isinf(multiplier*exp(exponent)), 0.0, 1.0);
+}
+
+[fragment shader]
+#version 130
+void main()
+{
+  gl_FragColor = gl_Color;
+}
+
+[test]
+uniform vec2 multiplier 1.0 1.0
+uniform vec2 exponent 1.0 1000.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 0.0 1.0
+uniform vec2 multiplier -1.0 -1.0
+uniform vec2 exponent 1000.0 1.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/vs-isinf-vec3.shader_test b/tests/spec/glsl-1.30/execution/vs-isinf-vec3.shader_test
new file mode 100644
index 0000000..2012774
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/vs-isinf-vec3.shader_test
@@ -0,0 +1,38 @@
+# Test proper behavior of the isinf(vec3) function.
+#
+# Note: testing behavior if isinf() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# infinite values are required to be generated.  This test assumes
+# that the expressions 1.0*exp(1000.0) and -1.0*exp(1000.0) produce
+# infinite values when evaluated in the shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+uniform vec3 multiplier;
+uniform vec3 exponent;
+
+void main()
+{
+  gl_Position = gl_Vertex;
+  gl_FrontColor = vec4(isinf(multiplier*exp(exponent)), 1.0);
+}
+
+[fragment shader]
+#version 130
+void main()
+{
+  gl_FragColor = gl_Color;
+}
+
+[test]
+uniform vec3 multiplier 1.0 1.0 -1.0
+uniform vec3 exponent 1.0 1000.0 1000.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 1.0 1.0
+uniform vec3 multiplier -1.0 -1.0 1.0
+uniform vec3 exponent 1000.0 1.0 1.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/vs-isinf-vec4.shader_test b/tests/spec/glsl-1.30/execution/vs-isinf-vec4.shader_test
new file mode 100644
index 0000000..6cbf67f
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/vs-isinf-vec4.shader_test
@@ -0,0 +1,38 @@
+# Test proper behavior of the isinf(vec4) function.
+#
+# Note: testing behavior if isinf() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# infinite values are required to be generated.  This test assumes
+# that the expressions 1.0*exp(1000.0) and -1.0*exp(1000.0) produce
+# infinite values when evaluated in the shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+uniform vec4 multiplier;
+uniform vec4 exponent;
+
+void main()
+{
+  gl_Position = gl_Vertex;
+  gl_FrontColor = vec4(isinf(multiplier*exp(exponent)));
+}
+
+[fragment shader]
+#version 130
+void main()
+{
+  gl_FragColor = gl_Color;
+}
+
+[test]
+uniform vec4 multiplier 1.0 1.0 -1.0 -1.0
+uniform vec4 exponent 1.0 1000.0 1000.0 1.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 1.0 0.0
+uniform vec4 multiplier -1.0 -1.0 1.0 1.0
+uniform vec4 exponent 1000.0 1.0 1.0 1000.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/vs-isnan-vec2.shader_test b/tests/spec/glsl-1.30/execution/vs-isnan-vec2.shader_test
new file mode 100644
index 0000000..558230a
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/vs-isnan-vec2.shader_test
@@ -0,0 +1,38 @@
+# Test proper behavior of the isnan(vec2) function.
+#
+# Note: testing behavior if isnan() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# NaN values are required to be generated.  This test assumes that the
+# expression 0.0/0.0 produces a NaN value when evaluated in the
+# shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+uniform vec2 numerator;
+uniform vec2 denominator;
+
+void main()
+{
+  gl_Position = gl_Vertex;
+  gl_FrontColor = vec4(isnan(numerator/denominator), 0.0, 1.0);
+}
+
+[fragment shader]
+#version 130
+void main()
+{
+  gl_FragColor = gl_Color;
+}
+
+[test]
+uniform vec2 numerator 1.0 0.0
+uniform vec2 denominator 1.0 0.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 0.0 1.0
+uniform vec2 numerator 0.0 1.0
+uniform vec2 denominator 0.0 1.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/vs-isnan-vec3.shader_test b/tests/spec/glsl-1.30/execution/vs-isnan-vec3.shader_test
new file mode 100644
index 0000000..12d1da6
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/vs-isnan-vec3.shader_test
@@ -0,0 +1,38 @@
+# Test proper behavior of the isnan(vec3) function.
+#
+# Note: testing behavior if isnan() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# NaN values are required to be generated.  This test assumes that the
+# expression 0.0/0.0 produces a NaN value when evaluated in the
+# shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+uniform vec3 numerator;
+uniform vec3 denominator;
+
+void main()
+{
+  gl_Position = gl_Vertex;
+  gl_FrontColor = vec4(isnan(numerator/denominator), 1.0);
+}
+
+[fragment shader]
+#version 130
+void main()
+{
+  gl_FragColor = gl_Color;
+}
+
+[test]
+uniform vec3 numerator 1.0 0.0 0.0
+uniform vec3 denominator 1.0 0.0 0.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 1.0 1.0
+uniform vec3 numerator 0.0 1.0 1.0
+uniform vec3 denominator 0.0 1.0 1.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
diff --git a/tests/spec/glsl-1.30/execution/vs-isnan-vec4.shader_test b/tests/spec/glsl-1.30/execution/vs-isnan-vec4.shader_test
new file mode 100644
index 0000000..f67536f
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/vs-isnan-vec4.shader_test
@@ -0,0 +1,38 @@
+# Test proper behavior of the isnan(vec4) function.
+#
+# Note: testing behavior if isnan() is challenging because the GLSL
+# 1.30 spec does not explicitly define any circumstances under which
+# NaN values are required to be generated.  This test assumes that the
+# expression 0.0/0.0 produces a NaN value when evaluated in the
+# shader.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+uniform vec4 numerator;
+uniform vec4 denominator;
+
+void main()
+{
+  gl_Position = gl_Vertex;
+  gl_FrontColor = vec4(isnan(numerator/denominator));
+}
+
+[fragment shader]
+#version 130
+void main()
+{
+  gl_FragColor = gl_Color;
+}
+
+[test]
+uniform vec4 numerator 1.0 0.0 0.0 1.0
+uniform vec4 denominator 1.0 0.0 0.0 1.0
+draw rect -1 -1 2 2
+probe rgba 0 0 0.0 1.0 1.0 0.0
+uniform vec4 numerator 0.0 1.0 1.0 0.0
+uniform vec4 denominator 0.0 1.0 1.0 0.0
+draw rect -1 -1 2 2
+probe rgba 1 0 1.0 0.0 0.0 1.0
-- 
1.7.6.4



More information about the Piglit mailing list