From: Conor McCarthy cmccarthy@codeweavers.com
--- tests/hlsl/uav-atomics.shader_test | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+)
diff --git a/tests/hlsl/uav-atomics.shader_test b/tests/hlsl/uav-atomics.shader_test index 1acb1adda..31477fcc8 100644 --- a/tests/hlsl/uav-atomics.shader_test +++ b/tests/hlsl/uav-atomics.shader_test @@ -81,3 +81,41 @@ uniform 0 int4 -3 1 0 0 todo(sm<6) dispatch 1 1 1 probe uav 2 (0) ri (1) probe uav 2 (1) ri (-3) + + +[uav 1] +format r32 uint +size (2d, 8, 1) + +0xd 5 6 0x10 4 4 7 2 + +[compute shader todo] +RWTexture2D<uint> u : register(u1); + +uniform uint4 v; + + [numthreads(3, 1, 1)] +void main() +{ + uint old; + InterlockedAnd(u[uint2(0, 0)], v.x); + InterlockedCompareStore(u[uint2(1, 0)], v.y, v.x); + InterlockedAdd(u[uint2(2, 0)], v.x); + InterlockedOr(u[uint2(3, 0)], v.x); + InterlockedMax(u[uint2(4, 0)], v.x); + InterlockedMin(u[uint2(5, 0)], v.x); + InterlockedXor(u[uint2(6, 0)], v.x); + InterlockedExchange(u[uint2(7, 0)], v.x, old); +} + +[test] +uniform 0 uint4 3 5 0 0 +todo(sm<6) dispatch 1 1 1 +probe uav 1 (0) rui (1) +probe uav 1 (1) rui (3) +probe uav 1 (2) rui (15) +probe uav 1 (3) rui (0x13) +probe uav 1 (4) rui (4) +probe uav 1 (5) rui (3) +probe uav 1 (6) rui (4) +probe uav 1 (7) rui (3)