Support for rasterizing SVG images on WR worker threads
Categories
(Core :: Graphics: WebRender, enhancement, P3)
Tracking
()
People
(Reporter: aosmond, Assigned: aosmond)
References
(Depends on 1 open bug, Blocks 17 open bugs)
Details
Today SVG images are rasterized on the main thread in the content process during display list building. The cost to rasterize can be quite high depending on the image, and the responsiveness and load time may suffer as a result.
Blob images today are able to rasterize SVG images if we take a recording. This moves the work to WR worker threads, but requires them to be rasterized before completing scene building and won't necessarily be an improvement. Because SVG images are more analogous to raster images, we don't need or want to wait for the rasterization to complete, and prefer to display them as they become available.
There are additional complications in that we would like substitutes like we do today for raster images. If display list building decides it wants a different size, we want to keep using what we have already rasterized to avoid flickering while we wait for the new size/recording to be rasterized. Today there is no equivalent of this, because raster images will use a different image key entirely, and WR doesn't need to know the relationship between these resources.
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Updated•4 years ago
|
Comment 1•4 years ago
|
||
I'm adding a whole bunch of android bugs as blocked on this, rather than as dupes. Mainly so that I remember to profile them again after this is fixed
Comment 2•4 years ago
|
||
Another really bad case svg spritesheet reported on Fenix github: https://github.com/mozilla-mobile/fenix/issues/19461
Let's make sure we test that site again once we have a fix.
Comment 3•2 years ago
|
||
Based on bug 1773355 comment 7, I think this bug is (at least partially) about setting image.svg.blob-image
to true
and letting that ride the trains.
Before we let that ride the trains, we should be sure to triage & ideally fix the bugs that were flagged as regressions from the first pref-enabling (bug 1763643), as well as the bugs that were marked as fixed by the pref-disabling in bug 1766333 (note, this might just be the same set of bugs).
(Probably goes without saying; just noting since those bugs aren't explicitly flagged as dependencies here at this point.)
Description
•