vello/piet-gpu/shader/gen
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
..
backdrop.dxil Fix blending math 2022-05-13 10:18:29 -07:00
backdrop.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
backdrop.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
backdrop.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
backdrop_lg.dxil Fix blending math 2022-05-13 10:18:29 -07:00
backdrop_lg.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
backdrop_lg.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
backdrop_lg.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
bbox_clear.dxil Fix blending math 2022-05-13 10:18:29 -07:00
bbox_clear.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
bbox_clear.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
bbox_clear.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
binning.dxil Fix blending math 2022-05-13 10:18:29 -07:00
binning.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
binning.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
binning.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
clip_leaf.dxil Fix blending math 2022-05-13 10:18:29 -07:00
clip_leaf.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
clip_leaf.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
clip_leaf.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
clip_reduce.dxil Fix blending math 2022-05-13 10:18:29 -07:00
clip_reduce.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
clip_reduce.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
clip_reduce.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
coarse.dxil First cut at split blend stack 2022-05-16 11:12:33 -07:00
coarse.hlsl First cut at split blend stack 2022-05-16 11:12:33 -07:00
coarse.msl First cut at split blend stack 2022-05-16 11:12:33 -07:00
coarse.spv First cut at split blend stack 2022-05-16 11:12:33 -07:00
draw_leaf.dxil Fix blending math 2022-05-13 10:18:29 -07:00
draw_leaf.hlsl Radial gradients 2022-03-30 20:32:13 -07:00
draw_leaf.msl Radial gradients 2022-03-30 20:32:13 -07:00
draw_leaf.spv Radial gradients 2022-03-30 20:32:13 -07:00
draw_reduce.dxil Fix blending math 2022-05-13 10:18:29 -07:00
draw_reduce.hlsl Radial gradients 2022-03-30 20:32:13 -07:00
draw_reduce.msl Radial gradients 2022-03-30 20:32:13 -07:00
draw_reduce.spv Radial gradients 2022-03-30 20:32:13 -07:00
draw_root.dxil Fix blending math 2022-05-13 10:18:29 -07:00
draw_root.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
draw_root.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
draw_root.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
kernel4.dxil First cut at split blend stack 2022-05-16 11:12:33 -07:00
kernel4.hlsl First cut at split blend stack 2022-05-16 11:12:33 -07:00
kernel4.msl First cut at split blend stack 2022-05-16 11:12:33 -07:00
kernel4.spv First cut at split blend stack 2022-05-16 11:12:33 -07:00
kernel4_gray.dxil First cut at split blend stack 2022-05-16 11:12:33 -07:00
kernel4_gray.hlsl First cut at split blend stack 2022-05-16 11:12:33 -07:00
kernel4_gray.msl First cut at split blend stack 2022-05-16 11:12:33 -07:00
kernel4_gray.spv First cut at split blend stack 2022-05-16 11:12:33 -07:00
path_coarse.dxil Fix blending math 2022-05-13 10:18:29 -07:00
path_coarse.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
path_coarse.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
path_coarse.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
pathseg.dxil Fix blending math 2022-05-13 10:18:29 -07:00
pathseg.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
pathseg.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
pathseg.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
pathtag_reduce.dxil Fix blending math 2022-05-13 10:18:29 -07:00
pathtag_reduce.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
pathtag_reduce.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
pathtag_reduce.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
pathtag_root.dxil Fix blending math 2022-05-13 10:18:29 -07:00
pathtag_root.hlsl Adjust workgroup sizes 2021-12-08 11:48:38 -08:00
pathtag_root.msl Adjust workgroup sizes 2021-12-08 11:48:38 -08:00
pathtag_root.spv Adjust workgroup sizes 2021-12-08 11:48:38 -08:00
tile_alloc.dxil Fix blending math 2022-05-13 10:18:29 -07:00
tile_alloc.hlsl Fix missing blend/clip logic 2022-03-16 14:40:58 -07:00
tile_alloc.msl Fix missing blend/clip logic 2022-03-16 14:40:58 -07:00
tile_alloc.spv Fix missing blend/clip logic 2022-03-16 14:40:58 -07:00
transform_leaf.dxil Fix blending math 2022-05-13 10:18:29 -07:00
transform_leaf.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
transform_leaf.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
transform_leaf.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
transform_reduce.dxil Fix blending math 2022-05-13 10:18:29 -07:00
transform_reduce.hlsl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
transform_reduce.msl Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
transform_reduce.spv Variable size encoding of draw objects 2022-03-14 16:32:08 -07:00
transform_root.dxil Fix blending math 2022-05-13 10:18:29 -07:00
transform_root.hlsl Adjust workgroup sizes 2021-12-08 11:48:38 -08:00
transform_root.msl Adjust workgroup sizes 2021-12-08 11:48:38 -08:00
transform_root.spv Adjust workgroup sizes 2021-12-08 11:48:38 -08:00