Closed
Bug 1373802
Opened 7 years ago
Closed 7 years ago
Make layout/reftests/async-scrolling/fixed-pos-scrolled-clip-1.html pass on linux64-qr with APZ enabled
Categories
(Core :: Graphics: WebRender, enhancement, P1)
Core
Graphics: WebRender
Tracking
()
RESOLVED
FIXED
mozilla58
Tracking | Status | |
---|---|---|
firefox56 | --- | unaffected |
firefox57 | --- | unaffected |
firefox58 | --- | fixed |
People
(Reporter: kats, Assigned: kats)
References
Details
(Whiteboard: [wr-mvp] [gfx-noted])
Attachments
(1 file, 3 obsolete files)
With WR+APZ enabled, the layout/reftests/async-scrolling/fixed-pos-scrolled-clip-1.html reftest fails. This bug is for the patches that make it pass, without regressing any "earlier" tests.
Assignee | ||
Comment 1•7 years ago
|
||
I investigated this, and the problem is that at some point we have a (scroll_id, clip_id) of (0, 9) pushed on the stack. From there we want to define a new clip "10" which is a child of "9" and then end up at (scroll_id, clip_id) = (0, 10). Right now the code just goes ahead and defines "10" and pushes it. But that puts us at (10, _) where "10" a child of "0" because of the way the API works [1]. That's totally not what we want. So instead what we need to do is re-push ClipAndScrollInfo::simple(9) temporarily, then define "10" so that it has "9" as a parent. Then we can pop the 9 that we temporarily pushed, and do a PushClipAndScrollInfo(0, 10). I started doing this but am having trouble with some of the offsets not being correct. I'll finish it up on Monday. @mrobinson: If you're tweaking the API, this case would be nice to make easier (assuming it makes sense). In order to implement this I need to add a bunch of state-tracking on the caller side of the API which is not really great. [1] http://searchfox.org/mozilla-central/rev/20d16dadd336e0c6b97e3e19dc4ff907744b5734/gfx/webrender_traits/src/display_list.rs#874
Assignee | ||
Comment 2•7 years ago
|
||
Ok, so I got this working locally. My fix unfortunately doesn't fix any of the other fixed-pos-scrolled-clip-* tests. I started looking at the next one (fixed-pos-scrolled-clip-2.html) and to be honest I'm not really sure how to represent this in WR. Martin, if you get a chance, could you take a look at the test at layout/reftests/async-scrolling/fixed-pos-scrolled-clip-2.html, observe how it behaves in gecko, and let me know if it's possible to represent using the WR API? Even better would be a standalone example app that demonstrates the behaviour in this page. I can start on that tomorrow if you don't get a chance before then.
Flags: needinfo?(mrobinson)
Assignee | ||
Comment 3•7 years ago
|
||
Here's a try push with my fix for fixed-pos-scrolled-clip-1.html: https://treeherder.mozilla.org/#/jobs?repo=try&revision=0fa6923ffadaa92a8512f0a06a34e7bbf6004bbc
Assignee | ||
Comment 4•7 years ago
|
||
Actually it'll be easier for me to create the example app that demonstrates what the gecko code is currently doing in this case and we can go from there. I'll do that tomorrow.
Flags: needinfo?(mrobinson)
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Assignee | ||
Comment 9•7 years ago
|
||
I talked to Markus today and it sounds like the fixed-pos-scrolled-clip-2.html case cannot currently be handled by WebRender. So I might as well land these patches and punt the rest into a follow-up bug for now. The case that's fixed here might help rendering in the wild.
Assignee | ||
Updated•7 years ago
|
Blocks: clipping-rewrite
Assignee | ||
Comment 10•7 years ago
|
||
Rebased patches: https://treeherder.mozilla.org/#/jobs?repo=try&revision=26e33aac4b13e7c07b0025b291503a0aacae14da
Assignee | ||
Comment 11•7 years ago
|
||
Urgh, looks like it causes a couple of failures now (and an unexpected-pass!). I'll investigate.
Updated•7 years ago
|
Blocks: stage-wr-next
Updated•7 years ago
|
status-firefox56:
--- → unaffected
status-firefox57:
--- → unaffected
Assignee | ||
Comment 12•7 years ago
|
||
I rebased the fix here onto latest m-c and did a try push: https://treeherder.mozilla.org/#/jobs?repo=try&revision=1086aed99ec650eff0f2afbc104f88a5de164291 The fix makes fixed-pos-scrolled-clip-1.html and fixed-pos-scrolled-clip-4.html pass. It also fixes the reduced test case in bug 1411249, but doesn't seem to fix the original page in that bug. It also doesn't fix bug 1408792.
Comment hidden (mozreview-request) |
Assignee | ||
Updated•7 years ago
|
Attachment #8880874 -
Attachment is obsolete: true
Assignee | ||
Updated•7 years ago
|
Attachment #8880875 -
Attachment is obsolete: true
Assignee | ||
Updated•7 years ago
|
Attachment #8880876 -
Attachment is obsolete: true
Assignee | ||
Comment 14•7 years ago
|
||
Try push which includes the fix here and the fix for bug 1411249: https://treeherder.mozilla.org/#/jobs?repo=try&revision=5bbe693d58de7972add965cdda0b55dc092f43f9
Updated•7 years ago
|
Status: NEW → ASSIGNED
Priority: P3 → P1
Whiteboard: [gfx-noted] → [wr-mvp] [gfx-noted]
Comment 15•7 years ago
|
||
mozreview-review |
Comment on attachment 8880873 [details] Bug 1373802 - Handle more clipping cases. https://reviewboard.mozilla.org/r/152234/#review199098 I'm glad we have so many tests for this stuff. This code is getting out of hand.
Attachment #8880873 -
Flags: review?(mstange) → review+
Assignee | ||
Comment 16•7 years ago
|
||
(In reply to Markus Stange [:mstange] from comment #15) > > I'm glad we have so many tests for this stuff. This code is getting out of > hand. Yeah no kidding. If you have any suggestions on a better approach for dealing with this I'm all ears.
Comment 17•7 years ago
|
||
Maybe we should try to make Gecko's structures closer to what we need for webrender. E.g. have explicit connections between clip chains through container display items instead of implicit ones, create clip chain items for masks, create ASRs for sticky items...
Assignee | ||
Comment 18•7 years ago
|
||
If we can pull that off it would certainly help a lot. Would it make things more complicated in the non-WR codepaths (e.g. FrameLayerBuilder)?
Comment 19•7 years ago
|
||
Probably, a bit. It would need some serious thought.
Comment 20•7 years ago
|
||
Pushed by kgupta@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/d76b2163ba1a Handle more clipping cases. r=mstange
Comment 21•7 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/d76b2163ba1a
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
status-firefox58:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla58
You need to log in
before you can comment on or make changes to this bug.
Description
•