WebRender newsletter #37

Hi! Last week I mentioned picture caching landing in nightly and I am happy to report that it didn’t get backed out (never to take for granted with a change of that importance) and it’s here to stay.
Another rather hot topic but which didn’t appear in the newsletter was Jeff and Matt’s long investigation of content frame time telemetry numbers. It turned into a real saga, featuring performance improvements but also a lot of adjustments to the way we do the measurements to make sure that we get apple to apple comparisons of Firefox running with and without WebRender. The content frame time metric is important because it correlates with user perception of stuttering, and we now have solid measurements backing that WebRender improves this metric.

Notable WebRender and Gecko changes

  • Bobby did various code cleanups and improvements.
  • Chris wrote a prototype Windows app to test resizing a child HWND in a child process and figure out how to do that without glitches.
  • Matt fixed an SVG filter clipping issue.
  • Matt Enabled SVG filters to be processed on the GPU in more cases.
  • Andrew fixed a pixel snapping issue with transforms.
  • Andrew fixed a blob image crash.
  • Emilio fixed a bug with perspective transforms.
  • Glenn included root content clip rect in picture caching world bounds.
  • Glenn added support for multiple dirty rects in picture caching.
  • Glenn fixed adding extremely large primitives to picture caching tile dependencies.
  • Glenn skipped some redundant work during picture caching updates.
  • Glenn removed unused clear color mode.
  • Glenn reduced invalidation caused by world clip rects.
  • Glenn fixed an invalidation issue with picture caching when encountering a blur filter.
  • Glenn avoided interning text run primitives due to scrolled offset field.
  • Sotaro improved the performance of large animated SVGs in some cases.

Ongoing work

The team keeps going through the remaining blockers (7 P2 bugs and 20 P3 bugs at the time of writing).

Enabling WebRender in Firefox Nightly

In about:config, set the pref “gfx.webrender.all” to true and restart the browser.

Reporting bugs

The best place to report bugs related to WebRender in Firefox is the Graphics :: WebRender component in bugzilla.
Note that it is possible to log in with a github account.

11 thoughts on “WebRender newsletter #37

    1. Webrender is already part of Firefox beta for Nvidia GPU on windows desktops and can be enforced by using the environment variable MOZ_WEBRENDER=1.
      I am wondering though, how is this webrender implementation updated? Does it get updates with every beta or only once? Will picture caching be part of the next beta?

      1. As far as I understand it doesn’t get WebRender updates during a Beta cycle. I think using WebRender only really makes sense in Nightly right now.

  1. Is there a place where we could see performance benchmarks with and without WebRender ? During electrolysis and the Quantum effort that led to Firefox 57 we could see how this all evolved, it would be nice to watch that for WebRender too.

  2. > Chris wrote a prototype Windows app to test resizing a child HWND in a child process and figure out how to do that without glitches.

    Any chance you could provide a bit more context surrounding why this scenario is being tested?

    1. We have a somewhat unusual setup for how we interact with the window, where the browser process creates the window handle and the GPU process renders into it. We are getting some glitches during resizes so we are testing out different ways to fix it.

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