Another late newsletter as I was side-tracked by conference travel, followed by a holiday and then a training. My apologies. Brace yourselves though, there has been a lot of good stuff landing in WebRender and Gecko during that time.
Enabling WebRender in Firefox Nightly
The set of prefs to enable WebRender changes every now and then. From now on, I will do recap of the current steps at the top of each newsletter.
In about:config:
– set “gfx.webrender.enabled” to true,
– set “gfx.webrender.blob-images” to true,
– if you are on Linux, set “layers.acceleration.force-enabled” to true.
Note that WebRender can only be enabled in Firefox Nightly.
Notable WebRender changes
- Glenn mitigated the performance impact of the new box shadows somewhat, and followed it up with another improvement. This drops the GPU time on bugzilla from ~20ms to ~8ms. There’s still quite a bit of potential for improvement (#1894 among others), but this is probably the most noticeable performance change of the last few days.
- Lee added communication of Gecko font settings (anti-aliasing, hinting, variations, etc.) to WebRender.
- Hovering over tabs no longer causes the chrome to flash, thanks to some debugging work by Markus and a fix by Glenn.
- Glenn fixed a visual glitch with rounded corners of invisible borders.
- Lee and Markus fixed a ton of correctness issues related to text rendering: #1767, #1876, #1953, #1969.
- Further improvements to serialization performance.
- Glenn fixed the brightness and invert filters.
- Kvark worked around a shader compiler bug.
- subsevenx2001 fixed a very annoying border radius glitch.
Notable Gecko changes
- Sotaro and Nical fixed a bug that caused video frames to use all of the memory.
- Kats rewrote the way Gecko assembles clipping and scrolling information before it gets sent to WebRender, in a way that is more direct and faster (bugs 1409446 and 1405359).
- Various people increased the number of display items that utilize WebRender for rendering:
- more types of borders (Ethan, Kevin and Kats in bugs 1394309, 1396491 and 1407752)
- box shadows with non-uniform border radii (Michael and Kats in bugs 1393383 and 1407749)
- CSS blur filters (Morris in bugs 1370564 and 1411813)
- list bullets (Gankro in bug 1407767)
- image selections (Markus in bug 1414097)
- Ethan fixed video centering.
- Jeff shared fonts between blob images and WebRender. This means we can reuse fonts across different blob images. Not sharing fonts was one of the most noticeable performance problems with blob images. Sharing fonts will also mean that we can break blob images into smaller tiles which will rasterize in parallel.
- Sotaro fixed various glitches and crashes on Windows (bugs 1410304, 1403439 and 1409594).
- Sotaro fixed canvases that stopped to update (bugs 1401609 and 1411395).
- Sotaro increased parallelism between slow frames, by making the different stages of frame rendering overlap more.
- Ethan improved the memory usage for SVG significantly, by grouping all elements of an SVG image into one layer.
- Markus enabled vibrancy on macOS and fixed text rendering on top of vibrancy. The text in the tab bar with the default theme is now readable again.
- Andrew implemented decoding raster/vector images directly into shared memory, avoiding a copy into webrender. It may be enabled by turning on the image.mem.shared pref.
- Gankro fixed the way text decoration is drawn across element boundaries.
Also, Thanks a lot Markus for helping with gathering info for the newsletter!
Those changes made it to 58b1? Or we should wait for 59-ish betas before actually trying to use it daily?
PS: thanks for wiriting this blog, I’ve became more interested in Firefox lately and somehow information is very scarse even on simple topic “what’s coming in next release” not to mention something more in-depth.
For me WebRender seems usable for daily use but only if I disable smoothscroll (general.smoothScroll in about:config). Otherwise everything feels a bit sluggish.
WebRender integration is disabled at compile time on all channels except Firefox Nightly at the moment. So you need to grab a nightly build to try it out.
Things are starting to get to a point where adventurous people with the right hardware and drivers can start using it daily (It works well on one of my linux+intel laptops but not so much on another linux+nvidia one).
I wouldn’t advise enabling it yet if not for curiosity’s sake and/or testing and reporting bugs.
It looks like some WebRender issues are posted on Github, some on Bugzilla. If I find some issues, like those I listed at https://discourse.mozilla.org/t/have-you-tested-webrender/16137/20 would the developers like feedback? If so, where should I report the issues I came across?
Bugzilla is probably the best place to file the issues you run into. Some of them will then be mirrored to github issues by the people doing triage if the bug is in WebRender itself rather than in the Firefox integration.
In bugzilla, you can file bugs in the WebRender component: https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=Graphics%3A%20WebRender
Ever since it landed in Nightly I enabled WR occasionaly. Never usable for more than a few minutes. Last time I tried it on Tuesday. Forgotten to turn it off since then.
How often is the Webrender updated in the Nightly? Every day/release or?
WebRender is usually updated in nightly about twice per week.
Hello here, I’m on linux and changed the about:config according to the instructions but strangely i get :
“unavailable by runtime: WebRender initialization failed” on about:support.
I use the tar.bz2 provided by the official mozilla website.