Closed Bug 1479757 Opened Last year Closed 10 months ago

Turn on containerless scrolling for WR in GeckoView

Categories

(Core :: Graphics: WebRender, enhancement, P3)

Other Branch
enhancement

Tracking

()

RESOLVED FIXED
mozilla64
Tracking Status
firefox64 --- fixed

People

(Reporter: kats, Assigned: kats)

References

(Blocks 1 open bug)

Details

(Whiteboard: [gfx-noted])

Attachments

(1 file)

Android currently uses containerful scrolling, and that means that the call at [1] can return a Nothing() for the root scrollframe, because mIsScrollableLayerInRootContainer will be true at [2]. This causes an assertion failure/crash in ClipManager when enabling WR on android.

We either need to handle this scenario more gracefully, or get bug 1459312 done so that Android switches to containerless scrolling. Note that we might need the graceful-handling scenario anyway to fix bug 1471671 so it's probably worth just doing that as a short-term solution anyway.

[1] https://searchfox.org/mozilla-central/rev/033d45ca70ff32acf04286244644d19308c359d5/gfx/layers/wr/ClipManager.cpp#265
[2] https://searchfox.org/mozilla-central/rev/033d45ca70ff32acf04286244644d19308c359d5/layout/generic/nsGfxScrollFrame.cpp#3910
Assignee: nobody → bugmail
Priority: -- → P3
I think bug 1471671 is probably unrelated, and so I'll deal with that separately. For this bug, I think we should force containerless scrolling on in the GeckoView+WR configuration. For one thing, when WR is enabled, there are no container layers (or layers of any kind) so the containerful vs containerless distinction makes a lot less difference. We'll need to hook up zooming specifically for the WR codepath anyway, so we might as well do it in a "containerless" way.
Summary: Make WR work with containerful scrolling → Turn on containerless scrolling for WR in GeckoView
This changes the containerful scrolling pref to be an override pref
such that it is:
- always false on desktop (i.e. always use containerless there)
- always true in Fennec (i.e. never use containerless there)
- true in GeckoView if WebRender is disabled (i.e. only use
  containerless with WebRender).

The first two cases are the same as before; the last case is new.
Because we don't create layers with WR, the containerless vs
containerful distinction doesn't make much sense there, and we need to
implement a bunch of zooming glue in either case. So it makes sense to
go with the "way of the future" and keep it containerless.
Pushed by kgupta@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/835e3524a6ca
Switch to containerless scrolling for GeckoView+WR. r=botond
https://hg.mozilla.org/mozilla-central/rev/835e3524a6ca
Status: NEW → RESOLVED
Closed: 10 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla64
No longer depends on: 1459312
You need to log in before you can comment on or make changes to this bug.