WebRender newsletter #38

Greetings! WebRender’s best and only newsletter is here. The number of blocker bugs is rapidly decreasing, thanks to the efforts of everyone involved (staff and volunteers alike). The project is in a good enough shape that some people are now moving on to other projects and we are starting to experiment with webrender on new hardware. WebRender is now enabled by default in Nightly for some subset of AMD GPUs on Windows and we are looking into Intel integrated GPUs as well. As usual we start with small subsets with the goal of gradually expanding in order to avoid running into an overwhelming amount of platform/configuration specific bugs at once.

Notable WebRender and Gecko changes

  • Bobby improved the test infrastructure for picture caching.
  • Jeff added restrictions to filter inputs.
  • Jeff enabled WebRender for a subset of AMD GPUs on Windows.
  • Matt fixed a filter clipping issue.
  • Matt made a few improvements to blob image performance.
  • Emilio fixed perspective scrolling.
  • Lee worked around transform animation detection disabling sub-pixel AA on some sites.
  • Lee fixed fixed the dwrote font descriptor handling so we don’t crash anymore on missing fonts.
  • Lee, Jeff and Andrew fixed how we handle snapping with the will-change property and animated transforms.
  • Glenn improved the accuracy of sub-pixel box shadows.
  • Glenn fixed double inflation of text shadows.
  • Glenn added GPU timers for scale operations.
  • Glenn optimized drawing axis-aligned clip rectangles into clip masks.
  • Glenn used down-scaling more often to avoid large blur radii.
  • Glenn and Nical fixed uneven rendering of transformed shadows with fractional offsets.
  • Nical rewrote the tile decomposition logic to support negative tile offsets and arbitrary tiling origins.
  • Nical surveyed the available GPU debugging tools and documented the workarounds.
  • Sotaro fixed a bug with the lifetime of animations.
  • Sotaro skipped a test which is specific to how non-webrender backends work.
  • Sotaro fixed another test that was specific to the non-webrender rendering logic.
  • Sotaro fixed a bug in the iteration over image bridges when dispatching compositing notifications.
  • Doug made APZ document-splitting-aware.
  • Kvark fixed a perspective interpolation issue.

Ongoing work

The team keeps going through the remaining blockers (3 P2 bugs and 11 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.

10 thoughts on “WebRender newsletter #38

  1. i have a laptop that is always on it’s charging cable and even though i added gfx.webrender.all and set it to enabled i still get the message saying blocked env: Has battery I am using the latest stable build btw.

    1. WebRender cannot be enabled on stable builds yet. You need to use Firefox Nightly, Beta or Developer Edition to enable it (agreed, the message you got is a bit confusing).

  2. I have two questions :
    1. Whats the next big thing the WR team will focus on? For example, for the first release, picture-caching was a big item to fix.
    2. Do you plan to fix all fuzzing bugs before shipping? Recently, there doesnt seem to be much effort into fuzz testing.

    1. Some of the bugs I have looked at recently were found by fuzzers, so there is at least some amount of effort there. I haven’t followed that closely, though.

      About the next big thing, I think that a lot of effort will go into getting WebRender shipped on more platforms and configuration. Some platforms will require more work than others, but that’ll keep us busy for a bit I think.

      Document splitting is still in the work and it’s in my opinion a pretty important change, so that would probably qualify as Next in the list of big things if support for more platforms isn’t what you are interested in. On top of document splitting, using direct composition, core animation and similar APIs to save a composition step (saving memory bandwidth and power usage) will hopefully be impactful too. There’s also a bunch of exciting plans around pathfinder and gfx-rs but that’s definitely not short term.

    1. Pathfinder is a research project and research projects tend to get rewritten a bunch.
      The new version (#3) of pathfinder reuses pathfinder’s font rendering approach for larger SVG drawings, using a tiling scheme for culling instead of using the hardware z-buffer with geometry like in the previous version. The hope is that this approach will be simpler and less sensible to floating point inaccuracies.
      Hopefully this version is what will make its way into WebRender eventually.

      1. Pathfinder is two things: a font render and a more general purpose vector graphics renderer. The current rewrite is only about the latter. FontKit is presumably how WebRender will interact with the font rendering part.

  3. > The project is in a good enough shape that some people are now moving on to other projects

    Is that the reason why most pull requests for WebRender have been “Sync changes from mozilla-central” as of late?

    1. Development of WR has shifted from github to bugzilla. Which means all new bugs are filed, discussed, patches reviewed on bugzilla, and then landed on mozilla-central first. There is an automated bot (with some manual guidance) that posts patches from m-c to github.
      So anyone who wants to follow WR development should now look at the Graphics:Webrender component of bugzilla.mozilla.org

Leave a Reply to NiLSPACE Cancel 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