From: Ian Romanick <[email protected]> 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 <[email protected]> Cc: Ilia Mirkin <[email protected]> --- .../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 _______________________________________________ Piglit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/piglit
