Ben Clayton | bd8449f | 2022-06-25 00:55:59 +0000 | [diff] [blame] | 1 | groupshared uint wg[3][2][1]; |
| 2 | |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 3 | void tint_zero_workgroup_memory(uint local_idx) { |
Ben Clayton | bd8449f | 2022-06-25 00:55:59 +0000 | [diff] [blame] | 4 | { |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 5 | for(uint idx = local_idx; (idx < 6u); idx = (idx + 1u)) { |
Antonio Maiorano | 144ebed | 2024-01-30 16:30:15 +0000 | [diff] [blame] | 6 | uint i = (idx / 2u); |
| 7 | uint i_1 = (idx % 2u); |
| 8 | uint i_2 = (idx % 1u); |
Ben Clayton | bd8449f | 2022-06-25 00:55:59 +0000 | [diff] [blame] | 9 | uint atomic_result = 0u; |
| 10 | InterlockedExchange(wg[i][i_1][i_2], 0u, atomic_result); |
| 11 | } |
| 12 | } |
| 13 | GroupMemoryBarrierWithGroupSync(); |
Ben Clayton | 9dc42ad | 2024-02-05 18:01:33 +0000 | [diff] [blame] | 14 | } |
| 15 | |
| 16 | struct tint_symbol_1 { |
| 17 | uint local_invocation_index : SV_GroupIndex; |
| 18 | }; |
| 19 | |
| 20 | void compute_main_inner(uint local_invocation_index) { |
| 21 | tint_zero_workgroup_memory(local_invocation_index); |
Ben Clayton | bd8449f | 2022-06-25 00:55:59 +0000 | [diff] [blame] | 22 | uint atomic_result_1 = 0u; |
| 23 | InterlockedExchange(wg[2][1][0], 1u, atomic_result_1); |
| 24 | } |
| 25 | |
| 26 | [numthreads(1, 1, 1)] |
| 27 | void compute_main(tint_symbol_1 tint_symbol) { |
| 28 | compute_main_inner(tint_symbol.local_invocation_index); |
| 29 | return; |
| 30 | } |