Need to implement AddPendingScrollUpdateForNextTransaction
Categories
(Core :: Panning and Zooming, defect, P3)
Tracking
()
People
(Reporter: hiro, Assigned: hiro)
References
(Regression)
Details
(Keywords: regression)
Attachments
(4 files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
Bug 1803713 - Add assertions for functions to apply a ScrollPositionUpdate in FrameMetrics. r?botond
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review |
The WebRender backend doesn't override it.
Assignee | ||
Comment 1•2 years ago
|
||
Assignee | ||
Comment 2•2 years ago
|
||
There were .orig files when I was trying to implement this and hoped it fixes bug 1801098, but it didn't fix the bug.
Comment 3•2 years ago
|
||
I believe this is a regression from bug 1727682, which copied the mPendingScrollUpdates
field from LayerManager
to WebRenderLayerManager
, but did not copy the override of the function which populates the field.
Comment 4•2 years ago
|
||
One thing I don't understand is: why was this regression not caught by this assertion in helper_scrollto_tap.html
? The check is supposed to assert that paint skipping does happen.
Comment 5•2 years ago
|
||
Set release status flags based on info from the regressing bug 1727682
Updated•2 years ago
|
Updated•2 years ago
|
Assignee | ||
Comment 6•3 months ago
|
||
With D167628, the paint-skip test which will be landed in bug 1826476 significantly improves. Though, I don't quite understand the reason, some of tests with apz.paint_skipping.enabled=false
are also affected/regressed. Theoretically D167628 should not have any impacts on apz.paint_skipping.enabled=false
code path, so I guess it just means it's because less numbers of trials?
Updated•3 months ago
|
Assignee | ||
Comment 7•3 months ago
|
||
(In reply to Hiroyuki Ikezoe (:hiro) from comment #6)
Though, I don't quite understand the reason, some of tests with
apz.paint_skipping.enabled=false
are also affected/regressed. Theoretically D167628 should not have any impacts onapz.paint_skipping.enabled=false
code path, so I guess it just means it's because less numbers of trials?
I did trigger more runs on the affected ones, indeed D167628 affects there, but only on Linux/Windows opt builds. Oddly it doesn't affect shippable builds. I suppose shippable builds are PGO builds, thus the pref apz.paint_skipping.enabled
pref should be default, true. It's surprising PGO builds is optimized for the cases of apz.paint_skipping.enabled=false
.
Comment 9•3 months ago
|
||
Backed out for causing failures at z-index-blend-will-change-overlapping-layers.html.
Backout link: https://hg.mozilla.org/integration/autoland/rev/ed73389dc1446f8dbff980d67f6fb78ffdd4c4dc
Failure logs:
https://treeherder.mozilla.org/logviewer?job_id=484684808&repo=autoland&lineNumber=17875
https://treeherder.mozilla.org/logviewer?job_id=484684772&repo=autoland&lineNumber=4551
Assignee | ||
Comment 10•3 months ago
|
||
There's definitely a bug related our paint-skipping code. The reason why the test fails is that we apply a scrollBy(0,100)
twice there because of this FrameMetrics::UpdatePendingScrollInfo call. I don't quite understand why we need to update the FrameMetrics' visual scroll offsets, specifically the fix for bug 1685009.
From https://bugzilla.mozilla.org/show_bug.cgi?id=1685009#c4
(In reply to Botond Ballo [:botond] from comment #4)
Based on the Pernosco session, what seems to be happening is, a paint-skip transaction is taking the is-first-paint branch of
NotifyLayersUpdated()
.In the is-first-paint branch, APZ accepts the layer's FrameMetrics wholesale, including both the visual and layout scroll offsets. However, when applying a paint-skipped scroll to the layer's FrameMetrics on the content side, we only update the layout scroll offset, resulting in the two scroll offsets being out of sync in the layer's FrameMetrics copy. When APZ then accepts the layer's FrameMetrics wholesale, it is stuck with the out-of-sync offsets.
My best guess is the the is-first-paint in question was skipped because of the race we fixed in bug 1845646 so that the APZC's FrameMetrics were out of date? (Note that there are multiple is-first-paint updates happen, I don't know the reason but I observed it in bug 1845646)
^ this guess was wrong. Even without the fix for bug 1845646, I can't see bug 1685009 at all.
Assignee | ||
Comment 11•3 months ago
|
||
These functions are only used for instant scroll updates, for smooth
cases we never update FrameMetrics directly, rather we create a smooth
scroll animation.
Assignee | ||
Comment 12•3 months ago
|
||
In the case of paint skipping, each APZC's FrameMetrics are not in sync
with the metrics on the main-thread actually, but specifically for the
visual scroll offset of sub scroll containers it doesn't matter since
we will process each scroll position update in the order in which each
scroll positon update happened on the main-thread, thus the final
destination of the visual scroll offset should reach to the correct
position.
Assignee | ||
Updated•3 months ago
|
Updated•3 months ago
|
Assignee | ||
Comment 13•2 months ago
|
||
Updated•2 months ago
|
Comment 14•2 months ago
|
||
Comment 15•2 months ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/702bf1b90a3a
https://hg.mozilla.org/mozilla-central/rev/e496cbbef08d
https://hg.mozilla.org/mozilla-central/rev/320e8130aa77
https://hg.mozilla.org/mozilla-central/rev/01fb02e222a0
https://hg.mozilla.org/mozilla-central/rev/8e8305f85074
Comment 16•2 months ago
|
||
70%-80% improvement on all "skip*" Talos tests on all the 3 platforms.
(A perf alert has not yet been filed and validated by the perf-sheriffs, so take this with a grain of salt)
Updated•2 months ago
|
Comment 17•2 months ago
|
||
Perfherder has detected a talos performance change from push 8e8305f85074074769f6d51a556f210132f2c25b.
Improvements:
Ratio | Test | Platform | Options | Absolute values (old vs new) |
---|---|---|---|---|
75% | tscrollx_paint_skip | linux1804-64-shippable-qr | e10s fission stylo webrender-sw | 0.61 -> 0.15 |
75% | tscrollx_paint_skip | windows11-64-shippable-qr | e10s fission stylo webrender-sw | 0.60 -> 0.15 |
74% | tscrollx_paint_skip | macosx1470-64-shippable | e10s fission stylo webrender-sw | 0.47 -> 0.12 |
74% | tscrollx_paint_skip | linux1804-64-shippable-qr | e10s fission stylo webrender | 0.96 -> 0.25 |
70% | tscrollx_paint_skip | macosx1470-64-shippable | e10s fission stylo webrender | 0.53 -> 0.16 |
... | ... | ... | ... | ... |
45% | tp5o_scroll_paint_skip | windows11-64-shippable-qr | e10s fission stylo webrender-sw | 1.07 -> 0.59 |
Details of the alert can be found in the alert summary, including links to graphs and comparisons for each of the affected tests.
If you need the profiling jobs you can trigger them yourself from treeherder job view or ask a sheriff to do that for you.
You can run these tests on try with ./mach try perf --alert 43203
For more information on performance sheriffing please see our FAQ.
Description
•