vello/piet-gpu/shader
Raph Levien e73049fe98 First cut at split blend stack
Split the blend stack into register and memory segments. Do blending in registers up to that size, then spill to memory if needed.

This version may regress performance on Pixel 4, as it uses common memory for the blend stack, rather than keeping that memory read-only in fine rasterization, and using a separate buffer for blend stack. This needs investigation. It's possible we'll want to have single common memory as a config option, as it pools allocations and decreases the probability of failure.

Also a flaw in this version: there is no checking of memory overflow.

For understanding code history: this commit largely reverts #77, but there were some intervening changes to blending, and this commit also implements the split so some of the stack is in registers.

Closes #156
2022-05-16 11:12:33 -07:00
..
gen First cut at split blend stack 2022-05-16 11:12:33 -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 Fix blending math 2022-05-13 10:18:29 -07:00
build.ninja Fix blending math 2022-05-13 10:18:29 -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 First cut at split blend stack 2022-05-16 11:12:33 -07:00
draw_leaf.comp Radial gradients 2022-03-30 20:32:13 -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 Radial gradients 2022-03-30 20:32:13 -07:00
kernel4.comp First cut at split blend stack 2022-05-16 11:12:33 -07: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 Radial gradients 2022-03-30 20:32:13 -07:00
scene.h Initial implementation of blend modes 2022-02-28 12:38:14 -05:00
setup.h First cut at split blend stack 2022-05-16 11:12:33 -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