mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
canvas: Add vello backend (#36821)
Add vello backend by implementing Backend traits in canvas crate (so this lives in canvas_paint_thread - embedded process). Current implementation uses normal wgpu, so we block on GPU work. Vello backend is gated behind `vello` feature and `dom_canvas_vello_enabled` pref. Feature-wise this backend is on on par with raqote (sometimes better sometimes worse), but performance wise it's worse. ## Known vello problems: - image roundtrip does not work (fixed in https://github.com/linebender/vello/pull/974) - https://github.com/linebender/vello/issues/1066 (fixed) - clip layers are not working properly: https://github.com/linebender/vello/issues/1061 - `/html/canvas/element/pixel-manipulation/2d.imageData.put.*` - `/html/canvas/element/path-objects/2d.path.clip.intersect.html` - https://github.com/linebender/vello/issues/1056 - `/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html` - `kurbo::Cap::Butt` is defect (only visible with big lineWidth) https://github.com/linebender/vello/issues/1063 - `/html/canvas/element/line-styles/2d.line.cross.html` - `/html/canvas/element/line-styles/2d.line.miter.acute.html` - other lack of strong correct problems (https://github.com/linebender/vello/issues/1063#issuecomment-2998084736): - `/html/canvas/element/path-objects/2d.path.rect.selfintersect.html` - There is currently no way to do put image properly in vello as we would need to ignore all clips and other stuff (we try to work around this on best effort basis) https://github.com/linebender/vello/issues/1088 - `/html/canvas/element/pixel-manipulation/2d.imageData.put.*` - precision problems - `/html/canvas/element/path-objects/2d.path.stroke.scale2.html` - `/html/canvas/element/path-objects/2d.path.arc.scale.1.html` ## Known servo problems - bad performance due to blocking on GPU work - some get/put intensive tests `TIMEOUT` - proper shadow support (non-blocker as we already are living without it now) - support for rect shadow is there but unimplemented currently as that's the state in raqote Testing: `mach try vello` will run normal WPT (with raqote) + vello_canvas subsuite that runs only on `/html/canvas/element`. All subsuite expectations are stored separately. Fixes: #36823 Fixes: #35230 --------- Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This commit is contained in:
parent
c2ed599eb1
commit
d678901122
49 changed files with 1779 additions and 165 deletions
|
@ -104,7 +104,7 @@ def handle_preset(s: str) -> Optional[JobConfig]:
|
|||
return JobConfig(
|
||||
"WebGPU CTS",
|
||||
Workflow.LINUX,
|
||||
wpt=True, # reftests are mode for new layout
|
||||
wpt=True,
|
||||
wpt_args="_webgpu", # run only webgpu cts
|
||||
profile="production", # WebGPU works to slow with debug assert
|
||||
unit_tests=False,
|
||||
|
@ -125,6 +125,20 @@ def handle_preset(s: str) -> Optional[JobConfig]:
|
|||
unit_tests=False,
|
||||
number_of_wpt_chunks=2,
|
||||
)
|
||||
elif any(word in s for word in ["vello"]):
|
||||
return JobConfig(
|
||||
"Vello WPT",
|
||||
Workflow.LINUX,
|
||||
wpt=True,
|
||||
wpt_args=" ".join(
|
||||
[
|
||||
"--subsuite-file ./tests/wpt/vello_canvas_subsuite.json",
|
||||
"--subsuite vello_canvas",
|
||||
"--processes 1",
|
||||
]
|
||||
),
|
||||
build_args="--features 'vello'",
|
||||
)
|
||||
elif any(word in s for word in ["lint", "tidy"]):
|
||||
return JobConfig("Lint", Workflow.LINT)
|
||||
else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue