struct Alloc { uint offset; }; struct Config { uint n_elements; uint n_pathseg; uint width_in_tiles; uint height_in_tiles; Alloc tile_alloc; Alloc bin_alloc; Alloc ptcl_alloc; Alloc pathseg_alloc; Alloc anno_alloc; Alloc trans_alloc; Alloc path_bbox_alloc; Alloc drawmonoid_alloc; Alloc clip_alloc; Alloc clip_bic_alloc; Alloc clip_stack_alloc; Alloc clip_bbox_alloc; Alloc draw_bbox_alloc; Alloc drawinfo_alloc; uint n_trans; uint n_path; uint n_clip; uint trans_offset; uint linewidth_offset; uint pathtag_offset; uint pathseg_offset; uint drawtag_offset; uint drawdata_offset; }; static const uint3 gl_WorkGroupSize = uint3(512u, 1u, 1u); ByteAddressBuffer _21 : register(t1, space0); RWByteAddressBuffer _45 : register(u0, space0); static uint3 gl_GlobalInvocationID; struct SPIRV_Cross_Input { uint3 gl_GlobalInvocationID : SV_DispatchThreadID; }; void comp_main() { uint ix = gl_GlobalInvocationID.x; if (ix < _21.Load(76)) { uint out_ix = (_21.Load(40) >> uint(2)) + (6u * ix); _45.Store(out_ix * 4 + 8, 65535u); _45.Store((out_ix + 1u) * 4 + 8, 65535u); _45.Store((out_ix + 2u) * 4 + 8, 0u); _45.Store((out_ix + 3u) * 4 + 8, 0u); } } [numthreads(512, 1, 1)] void main(SPIRV_Cross_Input stage_input) { gl_GlobalInvocationID = stage_input.gl_GlobalInvocationID; comp_main(); }