|  | struct ComputeInputs { | 
|  | [[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>; | 
|  | [[builtin(local_invocation_index)]] local_invocation_index : u32; | 
|  | [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>; | 
|  | [[builtin(workgroup_id)]] workgroup_id : vec3<u32>; | 
|  | [[builtin(num_workgroups)]] num_workgroups : vec3<u32>; | 
|  | }; | 
|  |  | 
|  | [[stage(compute), workgroup_size(1)]] | 
|  | fn main(inputs : ComputeInputs) { | 
|  | let foo : u32 = | 
|  | inputs.local_invocation_id.x + | 
|  | inputs.local_invocation_index + | 
|  | inputs.global_invocation_id.x + | 
|  | inputs.workgroup_id.x + | 
|  | inputs.num_workgroups.x; | 
|  | } |