WebRender newsletter #30

Hi! This is the 30th issue of WebRender’s most famous newsletter. At the top of each newsletter I try to dedicate a few paragraphs to some historical/technical details of the project. Today I’ll write about blob images (moved to a separate post).

Notable WebRender and Gecko changes

  • Bobby keeps improving the texture cache heuristics to reduce peak GPU memory usage.
  • Bobby improved the texture cache’s debug display.
  • Jeff fixed a pair of blob image related crashes.
  • Jeff investigated content frame time telemetry data.
  • Dan improved our score on the dl_mutate talos benchmark by 20%.
  • Kats landed the async zooming changes for WebRender on Android.
  • Kats fixed a crash.
  • Kvark simplified some of the displaylist building code.
  • Matt Fixed a crash with tiled blob images.
  • Lee fixed a bug causing fonts to use the wrong DirectWrite render mode on Windows.
  • Emilio fixed a box-shadow regression.
  • Emilio switched the CI to an osmesa version that works with clang 7.
  • Glenn landed the picture caching work for text shadows.
  • Glenn refactored some of the plane splitting code to move it into the picture traversal pass.
  • Glenn removed some dead code.
  • Glenn separated brush segment descriptors form clip mask instance.
  • Glenn refactored the none-patch segment generation code.
  • Glenn removed the local_rect from PictureState.
  • Sotaro improved the frame synchronization yielding a nice performance improvement on the glterrain talos benchmark.
  • Sotaro recycled the D3D11 Query object, which improved the glterrain, tart and tscrollx talos scores on Windows.
  • Sotaro simplified some of the image sharing code.
  • The gfx team has a new manager, welcome Jessie!

Ongoing work

  • Matt and Dan are investigating performance.
  • Doug is investigating the effects of document splitting on talos scores.
  • Lee is fixing font rendering issues.
  • Kvark is making progress on the clip/scroll API refactoring.
  • Kats keeps investigating WebRender on Android.
  • Glenn is incrementally working towards picture caching for scrolled surfaces.

Enabling WebRender in Firefox Nightly

In about:config

  • set “gfx.webrender.all” to true,
  • restart Firefox.

5 thoughts on “WebRender newsletter #30

  1. Is it possible to note every week (or once was relevant changes) about how close WebRender to the release build of Firefox?

    1. At a minimum, you can always keep track of the number of release blockers week over week (I got the link from newsletter #25): https://bugzilla.mozilla.org/buglist.cgi?f1=blocked&f2=blocked&f3=blocked&f4=blocked&j_top=OR&known_name=gfx-webrender-v1-p1&o1=substring&o2=substring&o3=substring&o4=substring&priority=P2&resolution=—&v1=1386669
      Right now there are 46 bugs but I’m sure this number bounces up and down all the time as bugs are reported/fixed.

  2. I have a question, when we enable WebRender in FireFox does WebRender work with Gecko ?
    if it works with Gecko then would we get better performance if WebRender worked alone and by how much ?
    Thank you for the great work.

    1. The goal is to have WebRender work alone and replace Gecko (as far as I know). But that’s not possible right now because WebRender can’t render every possible scenario since it’s not complete yet. And of course, the goal is for WebRender to be faster than Gecko by rendering at 60fps all the time (realistically the fastest any monitor can/needs to display at).

      1. To be more precise, Gecko is the whole browser engine (including, layout, networking, DOM, etc), while WebRender is (only) a graphics rendering component. So WebRender doesn’t have vocation of replacing Gecko entirely.
        It does intend to replace some parts of Gecko such as a big chunk of the painting and compositing systems. In it’s current form, WebRender’s integration in Gecko already bypasses a lot of that, and over time I hope that it will gradually fully deprecate more of these pieces. As Pluto said there are things that aren’t supported by WebRender yet and for those we use a somewhat hybrid system that uses parts of Gecko’s other painting code.

Leave a comment