extend_mode_normalized and extend_mode#974
Conversation
DJMcNab
left a comment
There was a problem hiding this comment.
One thought on testing. Once that's addressed, I'll be happy to land. I don't think this is going to be meaningfully reviewed by anyone else anytime soon.
|
It works on my local ubuntu machine but not in CI. Is this the case for |
|
The windows failure certainly would be caused by the lack of GPU support for those runners. I'm not sure what the ubuntu failure is. Unfortunately, #892 means that the "current version" uploading of the snapshots is currently broken. I'll open a PR to fix that today. |
|
And if you can rebase #1018, that would make debugging the failure on ubuntu more plausible to debug |
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
|
rebased! |
|
I'm assuming that the failure on Ubuntu is because we're using a fallback CPU implementation of Vulkan, and therefore the precision is too high. What isn't at all clear to me is why the similar test from #971 passed on that version. I think just marking the new tests as |
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
because CI uses SW which is more accurate then real GPUs Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
DJMcNab
left a comment
There was a problem hiding this comment.
One small detail then we can land this. Thanks!
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
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 linebender/vello#974) - linebender/vello#1066 (fixed) - clip layers are not working properly: linebender/vello#1061 - `/html/canvas/element/pixel-manipulation/2d.imageData.put.*` - `/html/canvas/element/path-objects/2d.path.clip.intersect.html` - linebender/vello#1056 - `/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html` - `kurbo::Cap::Butt` is defect (only visible with big lineWidth) linebender/vello#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 (linebender/vello#1063 (comment)): - `/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) linebender/vello#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>
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 linebender/vello#974) - linebender/vello#1066 (fixed) - clip layers are not working properly: linebender/vello#1061 - `/html/canvas/element/pixel-manipulation/2d.imageData.put.*` - `/html/canvas/element/path-objects/2d.path.clip.intersect.html` - linebender/vello#1056 - `/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.coloralpha.html` - `kurbo::Cap::Butt` is defect (only visible with big lineWidth) linebender/vello#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 (linebender/vello#1063 (comment)): - `/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) linebender/vello#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: servo#36823 Fixes: servo#35230 --------- Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Current
extend_modeis renamed toextend_mode_normalized(because it require normalized coordinates). To avoid rounding errors we introduceextend_modethat relaxes normalization requirement. Currently only EXTEND_PAD is implemented differently, others fallback toextend_mode_normalizedfor now.partial fix #972