[Piglit] [PATCH] arb_shader_atomic_counter_ops: Verify that every new function can work

Ian Romanick idr at freedesktop.org
Thu Jul 7 20:52:47 UTC 2016


From: Ian Romanick <ian.d.romanick at intel.com>

This test fails on the series I sent out to implement the extension on
i965 because support for atomicSubtractARB was missing.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Cc: Ilia Mirkin <imirkin at alum.mit.edu>
---
 .../execution/all_touch_test.shader_test           | 72 ++++++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 tests/spec/arb_shader_atomic_counter_ops/execution/all_touch_test.shader_test

diff --git a/tests/spec/arb_shader_atomic_counter_ops/execution/all_touch_test.shader_test b/tests/spec/arb_shader_atomic_counter_ops/execution/all_touch_test.shader_test
new file mode 100644
index 0000000..7fb3cbf
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counter_ops/execution/all_touch_test.shader_test
@@ -0,0 +1,72 @@
+[require]
+GLSL >= 1.40
+GL_ARB_shader_atomic_counters
+GL_ARB_shader_atomic_counter_ops
+SIZE 16 16
+
+[vertex shader passthrough]
+
+[fragment shader]
+/* This is just a touch-test to make sure that all of the new atomic functions
+ * are compiled by the driver and can execute.  The results of the atomic
+ * operations are not checked.
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+#extension GL_ARB_shader_atomic_counter_ops: require
+
+out vec4 color;
+layout(binding = 0, offset =  0) uniform atomic_uint c0;
+layout(binding = 0, offset =  4) uniform atomic_uint c1;
+layout(binding = 0, offset =  8) uniform atomic_uint c2;
+layout(binding = 0, offset = 12) uniform atomic_uint c3;
+layout(binding = 0, offset = 16) uniform atomic_uint c4;
+layout(binding = 0, offset = 20) uniform atomic_uint c5;
+layout(binding = 0, offset = 24) uniform atomic_uint c6;
+layout(binding = 0, offset = 28) uniform atomic_uint c7;
+
+uniform uint data[16];
+
+void main()
+{
+    uint x = uint(gl_FragCoord.x) + 16u * uint(gl_FragCoord.y);
+
+
+    switch (x % 9u) {
+    case 0u:
+	atomicCounterAddARB(c0, data[int(gl_FragCoord.y)]);
+	break;
+    case 1u:
+	atomicCounterSubtractARB(c1, data[int(gl_FragCoord.y)]);
+	break;
+    case 2u:
+	atomicCounterMinARB(c2, data[int(gl_FragCoord.y)]);
+	break;
+    case 3u:
+	atomicCounterMaxARB(c3, data[int(gl_FragCoord.y)]);
+	break;
+    case 4u:
+	atomicCounterAndARB(c4, data[int(gl_FragCoord.y)]);
+	break;
+    case 5u:
+	atomicCounterOrARB(c5, data[int(gl_FragCoord.y)]);
+	break;
+    case 6u:
+	atomicCounterXorARB(c6, data[int(gl_FragCoord.y)]);
+	break;
+    case 7u:
+	atomicCounterExchangeARB(c7, data[int(gl_FragCoord.y)]);
+	break;
+    case 8u:
+	atomicCounterCompSwapARB(c0,
+				 data[int(gl_FragCoord.y)],
+				 data[int(gl_FragCoord.x)]);
+	break;
+    }
+
+    color = vec4(0, 1, 0, 1);
+}
+
+[test]
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
-- 
2.5.5



More information about the Piglit mailing list