2020-12-12 01:01:48 +11:00
|
|
|
// SPDX-License-Identifier: Apache-2.0 OR MIT OR Unlicense
|
|
|
|
|
2020-04-25 06:06:47 +10:00
|
|
|
// Various constants for the sizes of groups and tiles.
|
|
|
|
|
|
|
|
// Much of this will be made dynamic in various ways, but for now it's easiest
|
|
|
|
// to hardcode and keep all in one place.
|
|
|
|
|
2020-09-13 20:58:47 +10:00
|
|
|
// A LG_WG_FACTOR of n scales workgroup sizes by 2^n. Use 0 for a
|
|
|
|
// maximum workgroup size of 128, or 1 for a maximum size of 256.
|
|
|
|
#define LG_WG_FACTOR 1
|
|
|
|
#define WG_FACTOR (1<<LG_WG_FACTOR)
|
|
|
|
|
2020-04-25 06:06:47 +10:00
|
|
|
#define TILE_WIDTH_PX 16
|
|
|
|
#define TILE_HEIGHT_PX 16
|
|
|
|
|
2020-08-29 23:02:45 +10:00
|
|
|
#define PTCL_INITIAL_ALLOC 1024
|
2020-05-14 08:35:19 +10:00
|
|
|
|
|
|
|
// These should probably be renamed and/or reworked. In the binning
|
|
|
|
// kernel, they represent the number of bins. Also, the workgroup size
|
|
|
|
// of that kernel is equal to the number of bins, but should probably
|
|
|
|
// be more flexible (it's 512 in the K&L paper).
|
|
|
|
#define N_TILE_X 16
|
2020-09-13 20:58:47 +10:00
|
|
|
#define N_TILE_Y (8 * WG_FACTOR)
|
2020-05-14 08:35:19 +10:00
|
|
|
#define N_TILE (N_TILE_X * N_TILE_Y)
|
2020-09-13 20:58:47 +10:00
|
|
|
#define LG_N_TILE (7 + LG_WG_FACTOR)
|
2020-05-14 08:35:19 +10:00
|
|
|
#define N_SLICE (N_TILE / 32)
|
2020-12-12 04:30:20 +11:00
|
|
|
|
|
|
|
struct Config {
|
|
|
|
uint n_elements; // paths
|
|
|
|
uint n_pathseg;
|
2020-12-18 10:55:21 +11:00
|
|
|
uint width_in_tiles;
|
|
|
|
uint height_in_tiles;
|
2020-12-12 04:30:20 +11:00
|
|
|
uint tile_base;
|
|
|
|
uint bin_base;
|
|
|
|
uint ptcl_base;
|
|
|
|
uint pathseg_base;
|
|
|
|
uint anno_base;
|
|
|
|
};
|