Include webrender in desktop builds on beta/release Firefox 62

RESOLVED FIXED in Firefox 62

Status

()

enhancement
P1
normal
RESOLVED FIXED
2 years ago
10 months ago

People

(Reporter: kats, Assigned: kats)

Tracking

(Blocks 1 bug)

Other Branch
mozilla62
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox62 fixed)

Details

(Whiteboard: [gfx-noted])

Attachments

(3 attachments, 1 obsolete attachment)

We want to start building webrender (so that it is preffed off, but can be enabled) into desktop builds starting in Firefox 60 and let that change ride the trains all the way to release.

So beta 60 and release 60 will allow end users to flip a pref and turn on webrender.
^ totally untested WIP but I think that should be all that's needed.
Oh actually this will include it in Android builds too. If we want to disable it there we'll need to add an extra clause or something to the same code.
Also for the record I would argue against doing this in Firefox 60. Users have a habit of randomly flipping prefs and I don't think WR is really stable enough to be user-enableable on release in 60. At the very least we should restrict it to our MVP target audience (windows 10 + good graphics cards). Even then I would be wary of doing this. I'd be happier if we just let it go to early beta on 60.
This is a bit off-topic, but there's not many subscribers here yet. For what it's worth, WebRender was faster and more stable for me on Linux than Windows 10.
Summary: Include webrender in desktop builds on beta/release Firefox 60 → Include webrender in desktop builds on beta/release Firefox 62
Bug 1455696 added the gfx.webrender.all.qualified pref which enables webrender only on qualified hardware. With that in place, I'm more comfortable having beta/release 62+ builds include webrender, as long as gfx.webrender.all.qualified is the only pref that allows enabling webrender there. This will ensure that people on beta/release with unqualified hardware don't accidentally enable it.
Depends on: 1455696
I have a concern about this. Considering how I would have reacted if I would still have a heise.de forums account:
Basically, this feels like a gift to Nvidia's marketing department.^^ It would be a little more neutral if there were a possibility to whitelist a very few recent cards from other vendors to avoid headlines/teasers like "Firefox' new graphics engine is first exclusively available for Nvidia users".

Perceived reason of the current procedure:
Ancient Nvidia cards that were not blacklisted during Nightly and Beta would lead to late bug reports from Stable users. You would then put them in real time on the blacklist. So only one vendor will be left generously activated at first in order to minimize further risks such as losing users.
Comment on attachment 8974505 [details]
Bug 1432515 - Enable QR test suites on all branches where the corresponding non-QR versions run.

https://reviewboard.mozilla.org/r/242834/#review248942
Attachment #8974505 - Flags: review?(milaninbugzilla) → review+
Comment on attachment 8974504 [details]
Bug 1432515 - Build WebRender by default on all channels.

https://reviewboard.mozilla.org/r/242832/#review248944

Do we need to give anybody a heads up on "the size of xul.dll will likely change"?
Attachment #8974504 - Flags: review?(milaninbugzilla) → review+
Comment on attachment 8974503 [details]
Bug 1432515 - Restrict gfx.webrender.{all,enabled} to nightly, and only allow enabling via .all.qualified on beta and release.

https://reviewboard.mozilla.org/r/242830/#review248962

We're still deciding if .all only works on nightly, but in case that's the conclusion we reach, that's what the code does :)
Attachment #8974503 - Flags: review?(milaninbugzilla) → review+
(In reply to Jan Andre Ikenmeyer [:darkspirit] from comment #11)
> I have a concern about this. Considering how I would have reacted if I would
> still have a heise.de forums account:
> Basically, this feels like a gift to Nvidia's marketing department.^^ It
> would be a little more neutral if there were a possibility to whitelist a
> very few recent cards from other vendors to avoid headlines/teasers like
> "Firefox' new graphics engine is first exclusively available for Nvidia
> users".
> 
> Perceived reason of the current procedure:
> Ancient Nvidia cards that were not blacklisted during Nightly and Beta would
> lead to late bug reports from Stable users. You would then put them in real
> time on the blacklist. So only one vendor will be left generously activated
> at first in order to minimize further risks such as losing users.

I don't have any strong opinions on this myself. Even if it is a gift to Nvidia's marketing department, that's not necessarily a bad thing. The fact is people with these graphics cards are the most likely to get a good benefit from WebRender in its current state. Also I'm not sure who owns this decision - I guess Milan?
It's a question of rolling this out by default.  Everybody should be able to force it, but the default setting will be a slow process of finding out which hardware works.  We don't have enough capacity to deal with a large number of different problems at once, so we are rolling it out by vendor/generation.  I expect other vendors to follow within a release (e.g., if Nvidia is 64, Intel is 65, at least modern cards), and I expect some cards never to be qualified by default.

The integrated graphics bandwidth related performance issues are the main reason we're not starting with our largest population (Intel).
Oh, and for the decision owner - that was product, and they've already asked when the other vendors/configurations will follow.
Comment on attachment 8974503 [details]
Bug 1432515 - Restrict gfx.webrender.{all,enabled} to nightly, and only allow enabling via .all.qualified on beta and release.

Jeff, do you have any opinion here, on restricting the webrender.all and webrender.enabled prefs to Nightly? My main concern is that the beta/release populations are sufficiently different from Nightly that if people there start enabling this pref on unqualified hardware they might shoot themselves in the foot and not know how to recover. It might also result in a lot of bugs getting filed that distract us from focusing on the MVP target.

Milan brought up the point on IRC that disallowing users from force-enabling WR on beta/release is different from how we deal with other features (e.g. Linux acceleration). Also disallowing this will make it harder to expand the list of qualified hardware because we won't getting a lot of data about what hardware works well and what doesn't.

Another potential concern that I just thought of is if people enable webrender via these prefs on beta/release and then forget that they have the prefs set - that might result in us having to force-reset the prefs or rename them at some point down the line. e10s had to do that with browser.tabs.remote.autostart and it got really confusing.

There's enough arguments for both sides that I'm kind of the fence now, so you can be the deciding vote :)
Attachment #8974503 - Flags: review?(jmuizelaar)
My feeling is that we don't need to allow people on beta or release turn on webrender ahead of us being enabled on those versions.
i.e. webrender.all doesn't need to work until all.qualified is true.

Once we're in a position to ship it on some hardware it should be good enough that it won't be a total disaster if people keep it enabled by mistake.

Does that sounds reasonable?
Flags: needinfo?(bugmail)
Yup that sounds reasonable to me. So I'll land the patches as-is, and then once we flip all.qualified to true I'll also remove the NIGHTLY_BUILD ifdef that restricts webrender.all and webrender.enabled.
Flags: needinfo?(bugmail)
Pushed by kgupta@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/a9d2c77dfa14
Restrict gfx.webrender.{all,enabled} to nightly, and only allow enabling via .all.qualified on beta and release. r=milan
https://hg.mozilla.org/integration/autoland/rev/c593385aff7a
Build WebRender by default on all channels. r=milan
https://hg.mozilla.org/integration/autoland/rev/9394d679cfed
Enable QR test suites on all branches where the corresponding non-QR versions run. r=milan
I do appreciate the concerns about marketing for Nvidia and it would be nice to not restrict it to just them but there are real advantages to only having to worry about a single driver. My hope would be that we could avoid making a big marketing splash about WebRender until we have it available on more devices.

Jan, do you have a machine with a modern AMD card?
Flags: needinfo?(jan)
(In reply to Jeff Muizelaar [:jrmuizel] from comment #22)
> Jan, do you have a machine with a modern AMD card?

Yes. Both cards are about the same age (21-23 months): http://gpu.userbenchmark.com/Compare/Nvidia-GTX-1060-3GB-vs-AMD-RX-480/3646vs3634 From my perception they perform identically.

> $ lspci -nnk | grep -iA3 vga
> 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480] [1002:67df] (rev c7)
>        Subsystem: Micro-Star International Co., Ltd. [MSI] Radeon RX 480 [1462:3413]
>        Kernel driver in use: amdgpu
>        Kernel modules: amdgpu
https://wiki.gentoo.org/wiki/AMDGPU

My desktop:
* (Disabled: ancient integrated Radeon HD 3000 on which WebRender showed some wrong colors)
* discrete: https://www.msi.com/Graphics-card/Radeon-RX-480-GAMING-X-8G.html
* Debian Testing and Win10

Reference machine:
* https://support.hp.com/us-en/product/hp-pavilion-power-580-000-desktop-pc-series/16425610/model/17345625/document/c05638874
* (Disabled: Integrated Intel HD Graphics)
* discrete: GTX 1060 3GB
* Win10, Win7, (coming weekend: Ubuntu 18.04)
* quiet AF ^__^
Flags: needinfo?(jan)
So, is this gonna be available for both Nvidia and AMD or just Nvidia?
(In reply to ExE Boss from comment #25)
> So, is this gonna be available for both Nvidia and AMD or just Nvidia?

I'm just a community member, everything is non-official:

Everyone is able to manually enable WebRender (gfx.webrender.all) on Nightly on Windows, Linux and Mac. There are still some correctness issues.

gfx.webrender.all.qualified will be available on Nightly, Beta and Release (but is currently hidden):
Only Nvidia on Win10 would be "qualified" at first to let Nightly and Beta users run into driver bugs (of usually older cards).
They'll continuously increase the percentage of Nightly users who'll have this pref gotten set to true.

I had a concern about how "Nvidia at first for one release" would look like, even if other vendors would directly follow.
Sure, it would be nice if the first release would cover modern discrete Nvidia+AMD and as many as possible older Nvidia cards. Maybe there aren't so many driver bugs that this would be possible.

---

Question: What would happen if many Nightly users have gotten all.qualified set to true and you wanted to begin with a small percentage of AMD users (maybe to avoid a storm of duplicate reports)? Would you downgrade some Nvidia users on Nightly to non-WR then?
You need to log in before you can comment on or make changes to this bug.