WebRender newsletter #12

Hi there, your 12th WebRender newsletter has arrived. As I mentioned in the previous newsletter, the biggest theme in the last two weeks has been fixing correctness bugs and adding missing features. I keep learning new and scary things about text while Lee digs up more and more features that we need to add support for.
If you are testing on Windows and WebRender makes rendering flicker horribly, worry not Kvark has landed a fix in WebRender that will make it in nightly soon.

Notable WebRender changes

  • Glenn is making progress (1),(2) in the conversion to segmented primitives which lets us move more content to the opaque pass and improves batching.
  • Glenn removed the need to re-build the scene when a dynamic property changes. This saves a lot of CPU time during scrolling and animations.
  • Glenn added support for caching render tasks across frames and display lists, and added support for it in box shadows. This nice because it will let us avoid re-doing some of the same potentially expensive things every frame (like blurs).
  • Morris fixed a drop-shadow rendering issues (#2243 and #2261).
  • Lee fixed/implemented various text rendering features (1) (2).
  • Kvark fixed edge mask decoding in the shaders.
  • Martin fixed/improved the clipping logic (1) (2) (3).
  • Nical added the concept of transactions to the API (allows us to express certain constraints important for correctness and avoid redundant work).
  • Ethan fixed some glitches when box-shadow parameters are close to zero.
  • Glenn switched travis off for mac builds, we are now using taskcluster. Travis is great but it couldn’t sustain the load on Mac. Testing turnaround times are going to be much better now!
  • Kats resurrected support for non-premultiplied images (We need it for canvas).
  • Glenn ported line primitives to the brush infrastructure.
  • Martin implemented a more expressive API for clipping.
  • Ethan fixed a glitch when mixing edges with and without borders.
  • Lee implemented support for glyph transforms for writing modes.
  • Markus fixed a bug in the calculation of corner radius overlap.
  • Ethan fixed a bug in with inset box-shadow offsets.
  • Glenn moved alpha targets from using the A8 format to R8 on all platforms which avoids slow paths on ANGLE and some drivers.

Notable Gecko changes

  • Lee implemented the plumbing for synthetic italic.
  • Nical updated the gecko integration to use the transaction API and take advantage of it.
  • Nical implemented a simple shared memory recycling scheme for blob images and fonts (improves the performance of display list building).
  • Gankro fixed sub-pixel aa for some bullet display items.
  • Andrew fixed a bug causing images to disappear after dragging a tab to a different window.
  • Kats sped up display list building by removing duplicated work for adjacent items with equivalent clip chains.
  • Ethan fixed a text rendering issue.
  • Milan added the “gfx.webrender.all” pref to simplify enabling the most up to date WebRender prefs on all platforms.
  • Sotaro fixed a memory leak and a lot of smaller things (too many for me to link them here).
  • Vincent and Jerry fixed a bug with video on unfocused tabs freezing.

Enabling WebRender in Firefox Nightly

In about:config:
– just set “gfx.webrender.all” to true (no other prefs needed anymore \o/)

Note that WebRender can only be enabled in Firefox Nightly.

13 thoughts on “WebRender newsletter #12

  1. Do you want Nightly users to enable WebRender in order to get more bug reports, or is there enough low-hanging fruit that that wouldn’t be particularly helpful?

    1. We’d be happy to get as much feedback as possible. If WebRender works on your configuration, don’t hesitate to give it a go, and if it doesn’t, please let us know why on bugzilla.

    1. gfx.webrender.all is equivalent to all of the prefs that we use for manual testing at once:

      – “gfx.webrender.enabled”
      – “gfx.webrender.blob-images”
      – “image.mem.shared”
      – “layers.acceleration.force-enabled”

    1. Yes, in fact we removed gfx.webrendest.enabled a little while ago (it doesn’t have any effect anymore), and gfx.webrender.all is filling a similar role now.

    1. WebRender related bugs should go to the Core :: Graphic: WebRender component. Please list all of the prefs that you changed in the bug and also copy-paste the graphics section of the about:support page in the bug so that we can more easily narrow down the source of the issue and how to reproduce it.

  2. Is it enough for you if I activate WebRender and let Nightly reports crashes when they happen ? I do not have enough time to track bugs and report them on bugzilla, I can live with a few crashes from time to time.

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