WebRender newsletter #3

WebRender work is coming along nicely. I haven’t managed to properly track what landed this week so the summary below is somewhat short. This does little justice to the great stuff that is happening on the side. For example I won’t list the many bugs that Sotaro finds and fixes on a daily basis, or the continuous efforts Kats puts into keeping Gecko’s repository in sync with WebRender’s, or Ryan’s work on cbindgen (the tool we made to auto-generate C bindings for WebRender), or the unglamorous refactoring I got myself into in order to get some parts of Gecko to integrate with WebRender without breaking the web. Lee has been working on the dirty and gory details of fonts for a while but that won’t make it to the newsletter until it lands. Morris’s work on display items conversion hasn’t yet received due credit here, nor Jerry’s work on handling the many (way too many) texture formats that have to be supported by WebRender for video playback. Meanwhile Gankro is working on changes to the rust language itself that will make our life easier when dealing with fallible allocation and Kvark, after reviewing most of what lands in the WebRender repo and triaging all of the issues, manages to find the time to add tools to measure pixel coverage of render passes, and plenty of other things I don’t even know about because following everything closely would be a full-time job. You get the idea. I just wanted to give a little shout out to the people working on very important parts of the project that may not always appear in the highlights below, either because the work hasn’t landed yet, because I missed it, or because it was hidden behind Glenn’s usual round of epic optimization.

Notable WebRender changes

  • Glenn optimized the allocation of clip masks. Improvements with this fix on a test case generated from running cnn.com in Gecko:
    GPU time 10ms -> 1.7ms.
    Clip target allocations 54 -> 1.
    CPU compositor time 2.8ms -> 1.8ms.
    CPU backend time 1.8ms -> 1.6ms.

Notable Gecko changes

  • Jeff landed tiling support for blob images. Tiling is currently only used for very large images, but when used we get parallel rasterization across tiles for free.
  • Fallback blob images are no longer manually clipped. This means that we don’t have to redraw them while scrolling anymore. This gives a large performance improvement when scrolling mozilla.org

5 thoughts on “WebRender newsletter #3

  1. I’m using Nightly on Linux with an RX460.

    Whenever I enable webrender, the more pages I browse (especialy pages with a lot of images on them), the more memory it takes up until my computer locks up. Looking at the profiler, it seems my Image Templates and all Cached pages are all at 0 MBs. Is that supposed to happen?

    1. This isn’t supposed to happen (as in, it shouldn’t happen by the time the WebRender integration gets in a shippable state), but it is not unexpected in the current state of things. The way we deal with images and masks in the integration is far from optimal currently and I am working on improving that. If you try a servo nightly build[1] where WebRender is properly integrated, the problem should not happen (if it does please file an issue[2]).

      [1] https://download.servo.org/
      [2] https://github.com/servo/webrender/issues

  2. “Fallback blob images are no longer manually clipped.” this change hasn’t actually made it into Nightlies yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s