vkd3d-shader/hlsl: Support interlocked operations on non-indexed groupshared variables.

This commit is contained in:
Shaun Ren
2025-06-24 20:25:29 -04:00
committed by Henri Verbeet
parent 8d0d8d106b
commit 4bb880f9ed
Notes: Henri Verbeet 2025-08-05 16:40:26 +02:00
Approved-by: Elizabeth Figura (@zfigura)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1605
5 changed files with 36 additions and 10 deletions

View File

@@ -82,7 +82,7 @@ size (raw_buffer, 4)
1 0 0 0
[compute shader todo]
[compute shader]
RWByteAddressBuffer u : register(u1);
groupshared uint m;
@@ -99,7 +99,7 @@ void main(uint local_idx : SV_GroupIndex, uint group_id : SV_GroupID)
}
[test]
todo(sm<6 | msl) dispatch 4 1 1
todo(glsl | msl) dispatch 4 1 1
probe uav 1 (0) u32(0)
probe uav 1 (1) u32(33)
probe uav 1 (2) u32(66)
@@ -112,7 +112,7 @@ size (raw_buffer, 4)
1 0 0 0
[compute shader todo]
[compute shader]
RWByteAddressBuffer u : register(u1);
groupshared int m;
@@ -129,7 +129,7 @@ void main(uint local_idx : SV_GroupIndex, uint group_id : SV_GroupID)
}
[test]
todo(sm<6 | msl) dispatch 4 1 1
todo(glsl | msl) dispatch 4 1 1
probe uav 1 (0) i32(0)
probe uav 1 (1) i32(-31)
probe uav 1 (2) i32(-62)
@@ -216,7 +216,7 @@ size (raw_buffer, 1)
0
[compute shader todo]
[compute shader]
RWByteAddressBuffer u : register(u1);
groupshared uint m;
@@ -234,7 +234,7 @@ void main(uint local_idx : SV_GroupIndex)
}
[test]
todo(sm<6 | msl) dispatch 1 1 1
todo(glsl | msl) dispatch 1 1 1
probe uav 1 (0) u32(39)
[uav 0]