| struct Params { | |
| offset : u32, | |
| length : u32, | |
| pattern : u32, | |
| }; | |
| @binding(0) @group(0) var<uniform> params: Params; | |
| struct OpaqueBuffer { | |
| data : array<u32>, | |
| }; | |
| @binding(0) @group(1) var<storage, read_write> buffer: OpaqueBuffer; | |
| @compute @workgroup_size(64, 1, 1) | |
| fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) { | |
| var element_index : u32 = GlobalInvocationID.x; | |
| var element_range_start : u32 = element_index * 64u; | |
| var element_range_end : u32 = min(element_range_start + 64u, params.length / 4u); | |
| for (var i : u32 = element_range_start; i < element_range_end; i = i + 1u) { | |
| buffer.data[i] = params.pattern; | |
| } | |
| } |