vello/piet-gpu/shader
Raph Levien acb3933d94 Variable size encoding of draw objects
This patch switches to a variable size encoding of draw objects.

In addition to the CPU-side scene encoding, it changes the representation of intermediate per draw object state from the `Annotated` struct to a variable "info" encoding. In addition, the bounding boxes are moved to a separate array (for a more "structure of "arrays" approach). Data that's unchanged from the scene encoding is not copied. Rather, downstream stages can access the data from the scene buffer (reducing allocation and copying).

Prefix sums, computed in `DrawMonoid` track the offset of both scene and intermediate data. The tags for the CPU-side encoding have been split into their own stream (again a change from AoS to SoA style).

This is not necessarily the final form. There's some stuff (including at least one piet-gpu-derive type) that can be deleted. In addition, the linewidth field should probably move from the info to path-specific. Also, the 1:1 correspondence between draw object and path has not yet been broken.

Closes #152
2022-03-14 16:32:08 -07:00
..
gen Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
.clang-format shaders: Add .clang-format and reformat 2022-01-30 16:33:14 +09:00
annotated.h Initial implementation of blend modes 2022-02-28 12:38:14 -05:00
backdrop.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
bbox_clear.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
binning.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
bins.h all: add optional memory checks 2021-02-15 16:07:45 +01:00
blend.h Initial implementation of blend modes 2022-02-28 12:38:14 -05:00
build.ninja Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
clip_leaf.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
clip_reduce.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
coarse.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
draw_leaf.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
draw_reduce.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
draw_scan.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
drawtag.h Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
kernel4.comp Initial implementation of blend modes 2022-02-28 12:38:14 -05:00
mem.h avoid non-uniform barrier control flow when exhausting memory 2021-04-20 10:15:29 +02:00
path_coarse.comp shaders: Add .clang-format and reformat 2022-01-30 16:33:14 +09:00
pathseg.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
pathseg.h collapse FillCubic and StrokeCubic into Cubic with flags for fill mode 2021-03-19 12:50:12 +01:00
pathtag.h Path stream processing 2021-12-01 07:33:24 -08:00
pathtag_reduce.comp Adjust workgroup sizes 2021-12-08 11:48:38 -08:00
pathtag_scan.comp shaders: Add .clang-format and reformat 2022-01-30 16:33:14 +09:00
ptcl.h Initial implementation of blend modes 2022-02-28 12:38:14 -05:00
scene.h Initial implementation of blend modes 2022-02-28 12:38:14 -05:00
setup.h Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
state.h ensure consistent path segment transformation 2021-03-19 12:45:23 +01:00
tile.h ensure consistent path segment transformation 2021-03-19 12:45:23 +01:00
tile_alloc.comp Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
transform_leaf.comp shaders: Add .clang-format and reformat 2022-01-30 16:33:14 +09:00
transform_reduce.comp Adjust workgroup sizes 2021-12-08 11:48:38 -08:00
transform_scan.comp shaders: Add .clang-format and reformat 2022-01-30 16:33:14 +09:00