Jank and checkerboarding when scrolling https://www.waterfox.net/
Categories
(Core :: Graphics: WebRender, defect)
Tracking
()
People
(Reporter: gregp, Unassigned, NeedInfo)
References
(Blocks 2 open bugs, )
Details
(Keywords: perf:animation, perf:responsiveness, reproducible)
Attachments
(7 files, 1 obsolete file)
Steps to reproduce:
- Navigate to https://www.waterfox.net/
- Scroll the page
Actual results:
Jank and checkerboarding
Expected results:
Less jank and checkerboarding
Updated•2 years ago
|
Comment 1•2 years ago
|
||
The severity field is not set for this bug.
:gw, could you have a look please?
For more information, please visit auto_nag documentation.
Updated•2 years ago
|
Reporter | ||
Comment 2•2 years ago
|
||
Comment 3•2 years ago
|
||
Extracted SVG blob image
Reporter | ||
Comment 4•2 years ago
|
||
Reporter | ||
Comment 5•2 years ago
|
||
Reporter | ||
Comment 6•2 years ago
|
||
Comment 7•2 years ago
|
||
With the attached HTML file that draws an SVG as a blob, this seems much slower to draw in Gecko than it does in Chromium.
It's quite possible that I'm incorrectly measuring something, there's a heap of variables in play, but:
- I set
gfx.webrender.blob-tile-size
to 2048 (just for simplicity of timing). - I disabled GPU raster in chromium.
On my machine, the recorded time inside rasterize_blob
is typically 8 - 10ms. If I look at the performance profiler in chromium, there are 4 raster threads. It's hard to know which ones account for the SVG image, as there are many raster jobs, but all together they seem less than the 8-10ms we see in rasterize_blob
. There is one large raster job in chromium that takes 1.5 ms, and a heap of smaller ones.
Although it's quite a complex SVG, that time seems much higher than I would expect to raster an image of size 1000 x 500, I think? What do you think jrmuizel / nical?
Reporter | ||
Comment 8•2 years ago
|
||
Reporter | ||
Comment 9•2 years ago
|
||
Updated•2 years ago
|
Comment 10•2 years ago
|
||
We spend a lot of time allocating memory in this test case (and we have noticed that in a lot of other test cases).
It's not obvious to me whether we can easily do something about it, but if skia makes any effort to reuse allocations we probably nullify it by re-creating the SkSurface for every tile.
Bumping the tile size to 512 improves things a lot (almost halves the rasterization time and also improves the upload times), I've been meaning to do that for a long while.
Comment hidden (obsolete) |
Reporter | ||
Comment 12•2 years ago
|
||
Reporter | ||
Comment 13•2 years ago
|
||
rocket.lottie.json: https://share.firefox.dev/3Q1vUct
no_telemetry.lottie.json: https://share.firefox.dev/3pTUlhj
private_browsing.lottie.json: https://share.firefox.dev/3QYlA6v
ml_powered_translations.lottie.json: https://share.firefox.dev/3CGDI0k
tracking_protection.lottie.json: https://share.firefox.dev/3RlHCj6
Comment 14•2 years ago
|
||
(In reply to Nicolas Silva [:nical] from comment #10)
We spend a lot of time allocating memory in this test case (and we have noticed that in a lot of other test cases).
It's not obvious to me whether we can easily do something about it, but if skia makes any effort to reuse allocations we probably nullify it by re-creating the SkSurface for every tile.Bumping the tile size to 512 improves things a lot (almost halves the rasterization time and also improves the upload times), I've been meaning to do that for a long while.
That doesn't seem to match what I see in this test case on my machine. Bumping the blob size to 512 results in the same (or worse) overall raster time in the attached test case:
rasterize_blob Rect(238x512 at (512, 0)) t=3.27763 ms
rasterize_blob Rect(512x512 at (0, 0)) t=4.626926 ms
It is a relatively complex SVG but that amount of time to rasterize it at 750 x 512 seems really high, to me (on a ThreadRipper PRO 3975WX)? I don't have any real evidence to support it, but I can't help but wonder if there's something else going on rather than just some extra memory allocation that makes us much slower in this case that chromium seems to be?
Updated•2 years ago
|
Comment 15•2 years ago
|
||
The severity field for this bug is set to S3. However, the Performance Impact
field flags this bug as having a high impact on the performance.
:gw, could you consider increasing the severity of this performance-impacting bug? Alternatively, if you think the performance impact is lower than previously assessed, could you request a re-triage from the performance team by setting the Performance Impact
flag to ?
?
For more information, please visit auto_nag documentation.
Updated•2 years ago
|
Comment 16•2 months ago
|
||
The severity field for this bug is set to S3. However, the Performance Impact
field flags this bug as having a HIGH
impact on performance.
:gw, could you consider increasing the severity of this performance-impacting bug? Alternatively, if you think the performance impact is lower than previously assessed, could you request a re-triage from the performance team by setting the Performance Impact
flag to ?
?
If you have questions on this bug's impact, please reach out to the performance team or :fdoty
Updated•2 months ago
|
Comment 17•1 month ago
|
||
I don't seem to reproduce anymore, either with the website or with the attached testcase. Removing the performance impact, but leaving the decision to close the bug to the team.
Reporter | ||
Comment 18•1 month ago
|
||
The archived site still checkerboards. Of course, that lowers the real world performance impact
Comment 19•1 month ago
|
||
Mmm I only see it checkerboarding if I scroll before the site is fully loaded, but then I see the same thing in Chrome.
On the contrary if I'm waiting that the site is loaded, then there's no checkerboard (same in Firefox and Chrome).
Do you see the same Greg?
Reporter | ||
Comment 20•1 month ago
|
||
Here's a profile of scrolling up & down a few times https://share.firefox.dev/3Tb03un
There is some checkerboarding but it's not nearly as bad as the profile in comment 0. That profile is on a much worse PC tho... I think I still have that machine, so I could try testing the latest Nightly on it.
Description
•