Peng Huang | c00ff7f | 2023-03-31 17:55:19 +0000 | [diff] [blame] | 1 | RWByteAddressBuffer sb_rw : register(u0); |
Antonio Maiorano | 08f4b55 | 2022-05-31 13:20:28 +0000 | [diff] [blame] | 2 | |
Ben Clayton | 1a1b527 | 2023-02-24 17:16:55 +0000 | [diff] [blame] | 3 | int sb_rwatomicAdd(uint offset, int value) { |
Ben Clayton | e027e81 | 2021-07-09 16:50:14 +0000 | [diff] [blame] | 4 | int original_value = 0; |
Ben Clayton | 1a1b527 | 2023-02-24 17:16:55 +0000 | [diff] [blame] | 5 | sb_rw.InterlockedAdd(offset, value, original_value); |
Ben Clayton | e027e81 | 2021-07-09 16:50:14 +0000 | [diff] [blame] | 6 | return original_value; |
| 7 | } |
| 8 | |
Ben Clayton | 6a77236 | 2021-06-18 18:56:13 +0000 | [diff] [blame] | 9 | |
Ben Clayton | 77a90cb | 2023-03-06 18:25:08 +0000 | [diff] [blame] | 10 | RWByteAddressBuffer prevent_dce : register(u0, space2); |
| 11 | |
Ben Clayton | e6d171a | 2021-06-18 18:56:13 +0000 | [diff] [blame] | 12 | void atomicAdd_d32fe4() { |
Ben Clayton | 1a1b527 | 2023-02-24 17:16:55 +0000 | [diff] [blame] | 13 | int res = sb_rwatomicAdd(0u, 1); |
Ben Clayton | 77a90cb | 2023-03-06 18:25:08 +0000 | [diff] [blame] | 14 | prevent_dce.Store(0u, asuint(res)); |
Ben Clayton | e6d171a | 2021-06-18 18:56:13 +0000 | [diff] [blame] | 15 | } |
Ben Clayton | 6a77236 | 2021-06-18 18:56:13 +0000 | [diff] [blame] | 16 | |
Ben Clayton | e6d171a | 2021-06-18 18:56:13 +0000 | [diff] [blame] | 17 | void fragment_main() { |
| 18 | atomicAdd_d32fe4(); |
| 19 | return; |
| 20 | } |
| 21 | |
| 22 | [numthreads(1, 1, 1)] |
| 23 | void compute_main() { |
| 24 | atomicAdd_d32fe4(); |
| 25 | return; |
| 26 | } |