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!