[Piglit] [PATCH] add tests for using immediates in common operations

Ilia Mirkin imirkin at alum.mit.edu
Sat Apr 21 20:19:40 UTC 2018


NVIDIA hardware has "short" immediates, and some instructions have both
long and short immediate variants. Nouveau was picking the wrong one
under certain conditions. This adds tests which are likely to cause
these kinds of issues to surface in a backend.

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
 .../immediates/fs-op-add-int-immed-1.shader_test   | 24 ++++++++++++++++++++++
 .../immediates/fs-op-add-int-immed-2.shader_test   | 24 ++++++++++++++++++++++
 .../immediates/fs-op-add-int-immed-3.shader_test   | 24 ++++++++++++++++++++++
 .../immediates/fs-op-add-int-immed-4.shader_test   | 24 ++++++++++++++++++++++
 .../immediates/fs-op-mul-int-immed-1.shader_test   | 24 ++++++++++++++++++++++
 .../immediates/fs-op-mul-int-immed-2.shader_test   | 24 ++++++++++++++++++++++
 .../immediates/fs-op-mul-int-immed-3.shader_test   | 24 ++++++++++++++++++++++
 .../immediates/fs-op-mul-int-immed-4.shader_test   | 24 ++++++++++++++++++++++
 .../fs-op-bitand-int-immed-1.shader_test           | 21 +++++++++++++++++++
 .../fs-op-bitand-int-immed-2.shader_test           | 21 +++++++++++++++++++
 .../fs-op-bitand-int-immed-3.shader_test           | 21 +++++++++++++++++++
 .../fs-op-bitand-int-immed-4.shader_test           | 21 +++++++++++++++++++
 12 files changed, 276 insertions(+)
 create mode 100644 tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-1.shader_test
 create mode 100644 tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-2.shader_test
 create mode 100644 tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-3.shader_test
 create mode 100644 tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-4.shader_test
 create mode 100644 tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-1.shader_test
 create mode 100644 tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-2.shader_test
 create mode 100644 tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-3.shader_test
 create mode 100644 tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-4.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-1.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-2.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-3.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-4.shader_test

diff --git a/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-1.shader_test b/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-1.shader_test
new file mode 100644
index 000000000..c8c6c022d
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-1.shader_test
@@ -0,0 +1,24 @@
+[require]
+GLSL >= 1.10
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform int arg0;
+uniform int expected;
+
+void main()
+{
+  int result = (arg0 + 0x80000);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+uniform int arg0 0
+uniform int expected 0x80000
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-2.shader_test b/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-2.shader_test
new file mode 100644
index 000000000..a7ca87e1d
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-2.shader_test
@@ -0,0 +1,24 @@
+[require]
+GLSL >= 1.10
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform int arg0;
+uniform int expected;
+
+void main()
+{
+  int result = (arg0 + 0x7ffff);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+uniform int arg0 0
+uniform int expected 0x7ffff
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-3.shader_test b/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-3.shader_test
new file mode 100644
index 000000000..35b186847
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-3.shader_test
@@ -0,0 +1,24 @@
+[require]
+GLSL >= 1.10
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform int arg0;
+uniform int expected;
+
+void main()
+{
+  int result = (arg0 - 0x80000);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+uniform int arg0 0
+uniform int expected -0x80000
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-4.shader_test b/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-4.shader_test
new file mode 100644
index 000000000..05ed20bd4
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/immediates/fs-op-add-int-immed-4.shader_test
@@ -0,0 +1,24 @@
+[require]
+GLSL >= 1.10
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform int arg0;
+uniform int expected;
+
+void main()
+{
+  int result = (arg0 - 0x80001);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+uniform int arg0 0
+uniform int expected -0x80001
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-1.shader_test b/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-1.shader_test
new file mode 100644
index 000000000..02e1c4f11
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-1.shader_test
@@ -0,0 +1,24 @@
+[require]
+GLSL >= 1.10
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform int arg0;
+uniform int expected;
+
+void main()
+{
+  int result = (arg0 * 0x80001);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+uniform int arg0 1
+uniform int expected 0x80001
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-2.shader_test b/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-2.shader_test
new file mode 100644
index 000000000..f8f4b2759
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-2.shader_test
@@ -0,0 +1,24 @@
+[require]
+GLSL >= 1.10
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform int arg0;
+uniform int expected;
+
+void main()
+{
+  int result = (arg0 * 0x7ffff);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+uniform int arg0 1
+uniform int expected 0x7ffff
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-3.shader_test b/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-3.shader_test
new file mode 100644
index 000000000..f13bd5098
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-3.shader_test
@@ -0,0 +1,24 @@
+[require]
+GLSL >= 1.10
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform int arg0;
+uniform int expected;
+
+void main()
+{
+  int result = (arg0 * -0x80000);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+uniform int arg0 1
+uniform int expected -0x80000
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-4.shader_test b/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-4.shader_test
new file mode 100644
index 000000000..07dba83ef
--- /dev/null
+++ b/tests/spec/glsl-1.10/execution/immediates/fs-op-mul-int-immed-4.shader_test
@@ -0,0 +1,24 @@
+[require]
+GLSL >= 1.10
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform int arg0;
+uniform int expected;
+
+void main()
+{
+  int result = (arg0 * -0x80001);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+uniform int arg0 1
+uniform int expected -0x80001
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-1.shader_test b/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-1.shader_test
new file mode 100644
index 000000000..0f3ced422
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-1.shader_test
@@ -0,0 +1,21 @@
+[require]
+GLSL >= 1.30
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform uint arg0 = 0xffffffffu;
+uniform uint expected = 0x80000u;
+
+void main()
+{
+  uint result = (arg0 & 0x80000u);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-2.shader_test b/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-2.shader_test
new file mode 100644
index 000000000..1a2041237
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-2.shader_test
@@ -0,0 +1,21 @@
+[require]
+GLSL >= 1.30
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform uint arg0 = 0xffffffffu;
+uniform uint expected = 0x7ffffu;
+
+void main()
+{
+  uint result = (arg0 & 0x7ffffu);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-3.shader_test b/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-3.shader_test
new file mode 100644
index 000000000..883505347
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-3.shader_test
@@ -0,0 +1,21 @@
+[require]
+GLSL >= 1.30
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform uint arg0 = 0xffffffffu;
+uniform uint expected = -0x80000u;
+
+void main()
+{
+  uint result = (arg0 & -0x80000u);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
diff --git a/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-4.shader_test b/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-4.shader_test
new file mode 100644
index 000000000..2805991cb
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/immediates/fs-op-bitand-int-immed-4.shader_test
@@ -0,0 +1,21 @@
+[require]
+GLSL >= 1.30
+
+[vertex shader passthrough]
+
+[fragment shader]
+uniform uint arg0 = 0xffffffffu;
+uniform uint expected = -0x80001u;
+
+void main()
+{
+  uint result = (arg0 & -0x80001u);
+  gl_FragColor = result == expected ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+}
+
+[test]
+clear color 0.0 0.0 1.0 0.0
+clear
+
+draw rect -1 -1 2 2
+probe all rgba 0 1 0 1
-- 
2.16.1



More information about the Piglit mailing list