Closed
Bug 1485314
Opened 6 years ago
Closed 6 years ago
Moving the scrollbar thumb, but not scroll the page content for the first frame
Categories
(Core :: Graphics: WebRender, enhancement, P1)
Core
Graphics: WebRender
Tracking
()
RESOLVED
FIXED
mozilla63
Tracking | Status | |
---|---|---|
firefox63 | --- | fixed |
People
(Reporter: sotaro, Assigned: botond)
References
(Blocks 1 open bug)
Details
(Whiteboard: [gfx-noted])
Attachments
(6 files)
This bug is created based on :mattwoodrow's mail.
--------------------------
One other interesting bit is that the first frame of scrolling shows us moving the scrollbar thumb, but not the page content. Not sure why that is, or if it's related (could we be one frame behind for the scrolled content for the entire scroll?).
The other possibility is that we got the layer tree updated message after sampling (5ms later according to the log) and ended up putting that new content into the same screen presentation
Reporter | ||
Comment 1•6 years ago
|
||
Reporter | ||
Comment 2•6 years ago
|
||
I used VLC media player for frame by frame video playback.
Reporter | ||
Comment 3•6 years ago
|
||
attachment 9003087 [details] seems to use Windows 10 Video Capture Tool by pressing Win+G.
Reporter | ||
Comment 4•6 years ago
|
||
I also confirmed the problem. The video was captured by Win10 capture tool by pressing Win+G.
Reporter | ||
Comment 5•6 years ago
|
||
Assignee: nobody → sotaro.ikeda.g
Reporter | ||
Updated•6 years ago
|
Assignee: sotaro.ikeda.g → nobody
Reporter | ||
Comment 6•6 years ago
|
||
The log was taken when attachment 9003089 [details] was captured with attachment 9003090 [details] [diff] [review].
Reporter | ||
Comment 7•6 years ago
|
||
In attachment 9003092 [details], when scrollbar thumb had
[ 1 0 0 0 ;
0 1 0 0 ;
0 0 1 0 ;
0 4.98831 0 1 ]
scroll node was "id ExternalScrollId(2, PipelineId(1, 6)) origin (0,-0.33120728)". It might be related to the problem.
Reporter | ||
Updated•6 years ago
|
Reporter | ||
Comment 8•6 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #4)
> Created attachment 9003089 [details]
> another captured video
>
> I also confirmed the problem. The video was captured by Win10 capture tool
> by pressing Win+G.
Hmm, Win10 Game DVR seemed not good for capturing, since it seemed to drop frames even when 60fps was set.
Reporter | ||
Comment 9•6 years ago
|
||
In APZCTreeManager::SampleForWebRender(), content scroll and thumb scroll used different EffectiveScrollOffset values. AsyncPanZoomController::AdvanceAnimations() was called after content scroll offset calculation and then calculated thumb scroll.
Within AsyncPanZoomController::AdvanceAnimations(), AsyncPanZoomController::SampleCompositedAsyncTransform() was called. And it updated EffectiveScrollOffset values.
Reporter | ||
Comment 10•6 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro PTO 31/Aug-7/Sep] from comment #9)
> In APZCTreeManager::SampleForWebRender(), content scroll and thumb scroll
> used different EffectiveScrollOffset values.
> AsyncPanZoomController::AdvanceAnimations() was called after content scroll
> offset calculation and then calculated thumb scroll.
It could happen when "apz.frame_delay.enabled:true" is set.
Reporter | ||
Comment 11•6 years ago
|
||
rough diagram related to apz and WebRender
Updated•6 years ago
|
Priority: -- → P1
Updated•6 years ago
|
Blocks: wr-stability, stage-wr-trains
Whiteboard: [gfx-noted]
Assignee | ||
Comment 12•6 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro PTO 31/Aug-7/Sep] from comment #9)
> In APZCTreeManager::SampleForWebRender(), content scroll and thumb scroll
> used different EffectiveScrollOffset values.
> AsyncPanZoomController::AdvanceAnimations() was called after content scroll
> offset calculation and then calculated thumb scroll.
>
> Within AsyncPanZoomController::AdvanceAnimations(),
> AsyncPanZoomController::SampleCompositedAsyncTransform() was called. And it
> updated EffectiveScrollOffset values.
Thanks, this analysis makes the problem really clear!
AsyncCompositionManager does things in this order:
- sample transforms for scrollable layers and scroll thumb layers
- advance animations
SampleForWebRender does things in this order:
- sample transforms for scrollable layers
- advance animations
- sample transforms for scroll thumb layers
With the APZ frame delay enabled, the "advance animations" step rolls over the effective scroll offset from its old value to its new value, so it matters whether we sample a transform before or after it.
Assignee: nobody → botond
Assignee | ||
Comment 13•6 years ago
|
||
Assignee | ||
Comment 14•6 years ago
|
||
(Kats, I flagged you because you know this code best and this is an easy review, but let me know if I should redirect.)
Comment 15•6 years ago
|
||
Comment on attachment 9005707 [details]
Bug 1485314 - Only advance animations in SampleForWebRender() after all async transforms have been sampled. r=kats
Kartikaya Gupta (email:kats@mozilla.com) (parental leave) has approved the revision.
Attachment #9005707 -
Flags: review+
Comment 16•6 years ago
|
||
Pushed by bballo@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/254a11648e89
Only advance animations in SampleForWebRender() after all async transforms have been sampled. r=kats
Comment 17•6 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 6 years ago
status-firefox63:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
You need to log in
before you can comment on or make changes to this bug.
Description
•