mirror of
https://github.com/italicsjenga/vello.git
synced 2024-10-18 07:21:30 +11:00
3b67a4e7c1
This PR reworks the clip implementation. The highlight is that clip bounding box accounting is now done on GPU rather than CPU. The clip mask is also rasterized on EndClip rather than BeginClip, which decreases memory traffic needed for the clip stack. This is a pretty good working state, but not all cleanup has been applied. An important next step is to remove the CPU clip accounting (it is computed and encoded, but that result is not used). Another step is to remove the Annotated structure entirely. Fixes #88. Also relevant to #119
135 lines
6.4 KiB
GLSL
135 lines
6.4 KiB
GLSL
# Build file for shaders.
|
|
|
|
# You must have Vulkan tools in your path, or patch here.
|
|
|
|
glslang_validator = glslangValidator
|
|
spirv_cross = spirv-cross
|
|
dxc = dxc
|
|
|
|
# See https://github.com/KhronosGroup/SPIRV-Cross/issues/1248 for
|
|
# why we set this.
|
|
msl_flags = --msl-decoration-binding
|
|
|
|
rule glsl
|
|
command = $glslang_validator $flags -V -o $out $in
|
|
|
|
rule hlsl
|
|
command = $spirv_cross --hlsl --shader-model 60 $in --output $out
|
|
|
|
rule dxil
|
|
command = $dxc -T cs_6_0 $in -Fo $out
|
|
|
|
rule msl
|
|
command = $spirv_cross --msl $in --output $out $msl_flags
|
|
|
|
build gen/binning.spv: glsl binning.comp | annotated.h bins.h drawtag.h setup.h mem.h
|
|
build gen/binning.hlsl: hlsl gen/binning.spv
|
|
build gen/binning.dxil: dxil gen/binning.hlsl
|
|
build gen/binning.msl: msl gen/binning.spv
|
|
|
|
build gen/tile_alloc.spv: glsl tile_alloc.comp | annotated.h tile.h setup.h
|
|
build gen/tile_alloc.hlsl: hlsl gen/tile_alloc.spv
|
|
build gen/tile_alloc.dxil: dxil gen/tile_alloc.hlsl
|
|
build gen/tile_alloc.msl: msl gen/tile_alloc.spv
|
|
|
|
build gen/path_coarse.spv: glsl path_coarse.comp | annotated.h pathseg.h tile.h setup.h
|
|
build gen/path_coarse.hlsl: hlsl gen/path_coarse.spv
|
|
build gen/path_coarse.dxil: dxil gen/path_coarse.hlsl
|
|
build gen/path_coarse.msl: msl gen/path_coarse.spv
|
|
|
|
build gen/backdrop.spv: glsl backdrop.comp | annotated.h tile.h setup.h
|
|
build gen/backdrop.hlsl: hlsl gen/backdrop.spv
|
|
build gen/backdrop.dxil: dxil gen/backdrop.hlsl
|
|
build gen/backdrop.msl: msl gen/backdrop.spv
|
|
|
|
build gen/backdrop_lg.spv: glsl backdrop.comp | annotated.h tile.h setup.h
|
|
flags = -DBACKDROP_DIST_FACTOR=4
|
|
build gen/backdrop_lg.hlsl: hlsl gen/backdrop_lg.spv
|
|
build gen/backdrop_lg.dxil: dxil gen/backdrop_lg.hlsl
|
|
build gen/backdrop_lg.msl: msl gen/backdrop_lg.spv
|
|
|
|
build gen/coarse.spv: glsl coarse.comp | annotated.h bins.h ptcl.h setup.h
|
|
build gen/coarse.hlsl: hlsl gen/coarse.spv
|
|
build gen/coarse.dxil: dxil gen/coarse.hlsl
|
|
build gen/coarse.msl: msl gen/coarse.spv
|
|
|
|
build gen/kernel4.spv: glsl kernel4.comp | ptcl.h setup.h
|
|
build gen/kernel4.hlsl: hlsl gen/kernel4.spv
|
|
build gen/kernel4.dxil: dxil gen/kernel4.hlsl
|
|
build gen/kernel4.msl: msl gen/kernel4.spv
|
|
|
|
build gen/kernel4_gray.spv: glsl kernel4.comp | ptcl.h setup.h
|
|
flags = -DGRAY
|
|
build gen/kernel4_gray.hlsl: hlsl gen/kernel4_gray.spv
|
|
build gen/kernel4_gray.dxil: dxil gen/kernel4_gray.hlsl
|
|
build gen/kernel4_gray.msl: msl gen/kernel4_gray.spv
|
|
|
|
# New element pipeline follows
|
|
|
|
build gen/transform_reduce.spv: glsl transform_reduce.comp | scene.h setup.h mem.h
|
|
build gen/transform_reduce.hlsl: hlsl gen/transform_reduce.spv
|
|
build gen/transform_reduce.dxil: dxil gen/transform_reduce.hlsl
|
|
build gen/transform_reduce.msl: msl gen/transform_reduce.spv
|
|
|
|
build gen/transform_root.spv: glsl transform_scan.comp | setup.h
|
|
flags = -DROOT
|
|
build gen/transform_root.hlsl: hlsl gen/transform_root.spv
|
|
build gen/transform_root.dxil: dxil gen/transform_root.hlsl
|
|
build gen/transform_root.msl: msl gen/transform_root.spv
|
|
|
|
build gen/transform_leaf.spv: glsl transform_leaf.comp | scene.h tile.h setup.h mem.h
|
|
build gen/transform_leaf.hlsl: hlsl gen/transform_leaf.spv
|
|
build gen/transform_leaf.dxil: dxil gen/transform_leaf.hlsl
|
|
build gen/transform_leaf.msl: msl gen/transform_leaf.spv
|
|
|
|
build gen/pathtag_reduce.spv: glsl pathtag_reduce.comp | pathtag.h setup.h mem.h
|
|
build gen/pathtag_reduce.hlsl: hlsl gen/pathtag_reduce.spv
|
|
build gen/pathtag_reduce.dxil: dxil gen/pathtag_reduce.hlsl
|
|
build gen/pathtag_reduce.msl: msl gen/pathtag_reduce.spv
|
|
|
|
build gen/pathtag_root.spv: glsl pathtag_scan.comp | pathtag.h setup.h
|
|
flags = -DROOT
|
|
build gen/pathtag_root.hlsl: hlsl gen/pathtag_root.spv
|
|
build gen/pathtag_root.dxil: dxil gen/pathtag_root.hlsl
|
|
build gen/pathtag_root.msl: msl gen/pathtag_root.spv
|
|
|
|
build gen/bbox_clear.spv: glsl bbox_clear.comp | setup.h mem.h
|
|
build gen/bbox_clear.hlsl: hlsl gen/bbox_clear.spv
|
|
build gen/bbox_clear.dxil: dxil gen/bbox_clear.hlsl
|
|
build gen/bbox_clear.msl: msl gen/bbox_clear.spv
|
|
|
|
build gen/pathseg.spv: glsl pathseg.comp | tile.h pathseg.h pathtag.h setup.h mem.h
|
|
build gen/pathseg.hlsl: hlsl gen/pathseg.spv
|
|
build gen/pathseg.dxil: dxil gen/pathseg.hlsl
|
|
build gen/pathseg.msl: msl gen/pathseg.spv
|
|
|
|
build gen/draw_reduce.spv: glsl draw_reduce.comp | scene.h drawtag.h setup.h mem.h
|
|
build gen/draw_reduce.hlsl: hlsl gen/draw_reduce.spv
|
|
build gen/draw_reduce.dxil: dxil gen/draw_reduce.hlsl
|
|
build gen/draw_reduce.msl: msl gen/draw_reduce.spv
|
|
|
|
build gen/draw_root.spv: glsl draw_scan.comp | drawtag.h setup.h
|
|
flags = -DROOT
|
|
build gen/draw_root.hlsl: hlsl gen/draw_root.spv
|
|
build gen/draw_root.dxil: dxil gen/draw_root.hlsl
|
|
build gen/draw_root.msl: msl gen/draw_root.spv
|
|
|
|
build gen/draw_leaf.spv: glsl draw_leaf.comp | scene.h drawtag.h annotated.h setup.h mem.h
|
|
build gen/draw_leaf.hlsl: hlsl gen/draw_leaf.spv
|
|
build gen/draw_leaf.dxil: dxil gen/draw_leaf.hlsl
|
|
build gen/draw_leaf.msl: msl gen/draw_leaf.spv
|
|
|
|
build gen/clip_reduce.spv: glsl clip_reduce.comp | mem.h setup.h annotated.h
|
|
build gen/clip_reduce.hlsl: hlsl gen/clip_reduce.spv
|
|
build gen/clip_reduce.dxil: dxil gen/clip_reduce.hlsl
|
|
build gen/clip_reduce.msl: msl gen/clip_reduce.spv
|
|
|
|
build gen/clip_leaf.spv: glsl clip_leaf.comp | mem.h setup.h annotated.h
|
|
build gen/clip_leaf.hlsl: hlsl gen/clip_leaf.spv
|
|
build gen/clip_leaf.dxil: dxil gen/clip_leaf.hlsl
|
|
build gen/clip_leaf.msl: msl gen/clip_leaf.spv
|
|
|
|
build spv: phony gen/backdrop_lg.spv gen/backdrop.spv gen/bbox_clear.spv gen/binning.spv gen/clip_leaf.spv gen/clip_reduce.spv gen/coarse.spv gen/draw_leaf.spv gen/draw_reduce.spv gen/draw_root.spv gen/kernel4.spv gen/kernel4_gray.spv gen/path_coarse.spv gen/pathseg.spv gen/pathtag_reduce.spv gen/pathtag_root.spv gen/tile_alloc.spv gen/transform_leaf.spv gen/transform_reduce.spv gen/transform_root.spv
|
|
build dxil: phony gen/backdrop.hlsl gen/backdrop_lg.hlsl gen/bbox_clear.hlsl gen/binning.hlsl gen/clip_leaf.hlsl gen/clip_reduce.hlsl gen/coarse.hlsl gen/draw_leaf.hlsl gen/draw_reduce.hlsl gen/draw_root.hlsl gen/kernel4.hlsl gen/kernel4_gray.hlsl gen/path_coarse.hlsl gen/pathseg.hlsl gen/pathtag_reduce.hlsl gen/pathtag_root.hlsl gen/tile_alloc.hlsl gen/transform_leaf.hlsl gen/transform_reduce.hlsl gen/transform_root.hlsl
|
|
build msl: phony gen/backdrop_lg.msl gen/backdrop.msl gen/bbox_clear.msl gen/binning.msl gen/clip_leaf.msl gen/clip_reduce.msl gen/coarse.msl gen/draw_leaf.msl gen/draw_reduce.msl gen/draw_root.msl gen/kernel4.msl gen/kernel4_gray.msl gen/path_coarse.msl gen/pathseg.msl gen/pathtag_reduce.msl gen/pathtag_root.msl gen/tile_alloc.msl gen/transform_leaf.msl gen/transform_reduce.msl gen/transform_root.msl
|