WebRender newsletter #9

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:
  • 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!

9 thoughts on “WebRender newsletter #9

  1. 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.

    1. 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.

    2. 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.

  2. 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.

  3. 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.

Leave a reply to Zhao Nicolas Cancel reply