| struct main_inputs { | |
| uint tint_local_index : SV_GroupIndex; | |
| }; | |
| ByteAddressBuffer v : register(t0); | |
| RWByteAddressBuffer v_1 : register(u1); | |
| groupshared uint b[64]; | |
| void main_inner(uint tint_local_index) { | |
| { | |
| uint idx = tint_local_index; | |
| while(true) { | |
| uint v_2 = idx; | |
| if ((v_2 >= 64u)) { | |
| break; | |
| } | |
| b[((v_2 * 4u) / 4u)] = 0u; | |
| { | |
| idx = (idx + 1u); | |
| } | |
| } | |
| } | |
| GroupMemoryBarrierWithGroupSync(); | |
| { | |
| int i = int(0); | |
| while(true) { | |
| if ((i < int(64))) { | |
| } else { | |
| break; | |
| } | |
| uint v_3 = (min(uint(i), (64u - 1u)) * 4u); | |
| uint v_4 = 0u; | |
| v.GetDimensions(v_4); | |
| uint v_5 = ((v_4 / 4u) - 1u); | |
| b[(v_3 / 4u)] = v.Load((0u + (min(uint(i), v_5) * 4u))); | |
| { | |
| i = asint((asuint(i) + 1u)); | |
| } | |
| } | |
| } | |
| GroupMemoryBarrierWithGroupSync(); | |
| { | |
| int i = int(0); | |
| while(true) { | |
| if ((i < int(64))) { | |
| } else { | |
| break; | |
| } | |
| uint v_6 = 0u; | |
| v_1.GetDimensions(v_6); | |
| uint v_7 = ((v_6 / 4u) - 1u); | |
| uint v_8 = (min(uint(i), v_7) * 4u); | |
| uint v_9 = ((min(uint(i), (64u - 1u)) * 4u) / 4u); | |
| v_1.Store((0u + v_8), b[v_9]); | |
| { | |
| i = asint((asuint(i) + 1u)); | |
| } | |
| } | |
| } | |
| } | |
| [numthreads(1, 1, 1)] | |
| void main(main_inputs inputs) { | |
| main_inner(inputs.tint_local_index); | |
| } | |