| /* |
| * Copyright 2017 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can |
| * be found in the LICENSE file. |
| * |
| */ |
| |
| #pragma once |
| |
| // |
| // |
| // |
| |
| #include "block_pool_cl.h" |
| |
| // |
| // FIXME -- define individual structs before defining skc_config |
| // |
| |
| struct skc_config |
| { |
| struct { |
| struct { |
| skc_uint size; |
| skc_uint subbufs; |
| } host; // alignment determined by compiler |
| struct { |
| skc_uint size; |
| skc_uint subbufs; |
| } device; // alignment determined by device |
| } suballocator; |
| |
| struct { |
| skc_uint size; |
| } scheduler; |
| |
| struct { |
| skc_uint bytes; // bytes per subblock -- pow2 |
| skc_uint words; // words per subblock -- pow2 |
| // skc_uint words_log2; |
| } subblock; |
| |
| struct { |
| skc_uint bytes; // bytes per block -- pow2 |
| skc_uint words; // words per block -- pow2 |
| skc_uint subblocks; // subblocks per block -- block.bytes >= subblock.bytes |
| // skc_uint subblocks_log2; |
| } block; |
| |
| union skc_block_pool_size block_pool; |
| |
| struct { |
| cl_command_queue_properties cq_props; |
| skc_uint size; |
| } cq_pool; |
| |
| struct { |
| skc_uint size; // a large fraction of block pool size |
| skc_uint width; // determines number of launched reclamation subgroups |
| skc_uint recs; // how many in-flight width-subgroup reclamation grids |
| } handle_pool; |
| |
| struct { |
| skc_uint width; // tile width in pixels |
| skc_uint height; // tile height in pixels |
| skc_uint ratio; // subblocks per TTPB |
| } tile; |
| |
| struct { |
| struct { |
| skc_uint count; // # of subbufs in buffer |
| } buffer; |
| |
| struct { |
| skc_uint count; // # of blocks/commands in subbuf |
| } subbuf; |
| |
| struct { |
| size_t buffer; // block.bytes * subbuf.blocks * subbuf.count |
| size_t subbuf; // block.bytes * subbuf.blocks -- multiple of CL_DEVICE_MEM_BASE_ADDR_ALIGN |
| } block; |
| |
| struct { |
| size_t buffer; // sizeof(skc_uint) * subbuf.blocks * subbuf.count |
| size_t subbuf; // sizeof(skc_uint) * subbuf.blocks -- multiple of CL_DEVICE_MEM_BASE_ADDR_ALIGN |
| } command; |
| // |
| // skc_uint paths_lowat; |
| // |
| } paths_copy; |
| |
| struct { |
| struct { |
| skc_uint elem_count; |
| skc_uint snap_count; |
| } path_ids; |
| |
| struct { |
| skc_uint elem_count; |
| skc_uint snap_count; |
| } transforms; |
| |
| struct { |
| skc_uint elem_count; |
| skc_uint snap_count; |
| } clips; |
| |
| struct { |
| skc_uint elem_count; |
| skc_uint snap_count; |
| } fill; |
| |
| struct { |
| skc_uint elem_count; |
| skc_uint snap_count; |
| } raster_ids; |
| |
| struct { |
| skc_uint cmds; |
| } expand; |
| |
| struct { |
| skc_uint keys; |
| } rasterize; |
| } raster_cohort; |
| |
| struct { |
| struct { |
| skc_uint elem_count; |
| skc_uint snap_count; |
| } cmds; |
| |
| struct { |
| skc_uint elem_count; |
| } raster_ids; |
| |
| struct { |
| skc_uint elem_count; |
| } keys; |
| } composition; |
| }; |
| |
| // |
| // |
| // |