WebRender newsletter #13

Greetings! Time for issue #13 of your favorite newsletter, where you can follow the progress of WebRender and its integration in Gecko. We are still busy fixing correctness issues (as you can see by the number of times the word “fixed” appears in the lists below), modulo Glenn’s usual big perf optimization.

If you are interested in looking inside of WebRender to understand how it works and/or debug it, check out Kvark’s latest blog post about the frame recording tool he just added to WebRender.

Notable WebRender changes

  • Glenn optimized box-shadow rendering using the primitive segment infrastructure (a big improvement on large primitives).
  • Kvark implemented (2, 3) a frame capture infrastructure which is great debugging tool, and wrote a blog post about it.
  • Nical fixed incorrect border radii with outset box shadows.
  • Kvark fixed a race-condition in the gpu cache data passed to the renderer.
  • Kats ensured hit-testing is computed on the most up to date scene.
  • Glenn fixed a number of small issues with the profiler.
  • Kvark fixed text UV clamping.
  • Glenn fixed anti-aliasing issues with border segments.
  • Glenn added the infrastructure for pre-rendering images to the render-task cache.
  • Glenn avoided re-rendering intermediate surfaces of a frame that has already been rendered.
  • Glenn fixed a race-condition when caching render tasks.
  • Ethan fixed a glitch caused by precision errors with zero-radius box shadows.
  • Nical converted the rest of the code to use the new transaction-based API and removed the old API.

Notable Gecko changes

  • Morris completed the support for bevel borders.
  • Lee implemented support for text writing modes.
  • Lee fixed tofu glyphs. Well, but of course this is a thing!
  • Kevin fixed a bug with text shaodw and clipping.
  • Ethan fixed an incorrect scale applied in nsDisplayZoom.
  • Lee prevented us from hitting a bad fallback path with widget backgrounds in some cases.
  • Sotaro fixed some crashes related to incompatible D3D resources when using native-gl.
  • Morris fixed missing outlines in some widgets.
  • Kats enabled more tests.
  • Kats fixed the way we handle stacking context offsets, which was causing issues with position-sticky.
  • Sotaro fixed a race-condition in the handling of video frames.
  • Sotaro prevented some over-invalidation of the display list when playing video.
  • Kats applied scrolling updates in transactions.
  • Sotaro fixed a crash.
  • Sotaro fixed a resource management issue happening during tab-switch.
  • Nical disabled WebRender for some window types, accidentally disabling it for the main window on Mac, and kats fixed it.
  • Lee fixed a memory leak.
  • Kats fixed another clipping issue.
  • Kats fixed some APZ testing issues.

Enabling WebRender in Firefox Nightly

In about:config:
– just set “gfx.webrender.all” to true.

Note that WebRender can only be enabled in Firefox Nightly.

8 thoughts on “WebRender newsletter #13

  1. I would be very interested in reading about the font rendering implementation of WebRender. Does it use Pathfinder by Patrick Walton right now? How final is the current font rendering implementation? Will the additional blur be fixed in the foreseeable future?

  2. WebRender’s font rendering doesn’t use pathfinder yet. For now we have a CPU font rasterization backend for each platform[1] in order to match the OS’s text look and feel. Glyphs are cached in a texture atlas and rendered as quads (classic font implementation).

    If the rendering looks incorrect (different than in Firefox without WR), then it’s a bug and it will eventually get fixed.

    [1] If you like reading code: https://github.com/servo/webrender/tree/master/webrender/src/platform

  3. I enabled `gfx.webrender.all` on Nightly to test it. When testing stylo, it was not necessary to restart Firefox. Since I did not see any difference, I restarted Nightly. But then still no difference. My questions:

    1. Is it neccessary to restart Nightly so that changes to `gfx.webrender.all` take effect?
    2. I heard WebRender is only enabled for certain (whitelist) graphic cards. Is there some about:* page which tells me that WebRender got in fact enabled?
    3. Since I can see no difference whatsoever (I tried twitter and various news sites), can you point me to a demo page (some really crazy css animations site or similar) where I could “feel”/see WebRender making a difference?

    All of these information should also be added to the “Enabling WebRender in Firefox Nightly” section in this or future blog posts for fellow testers or people who want to try it.

  4. I get a lot of different crashes and rendering issues with WebRender, but they don’t seem to be easily reproducible. Should I report them to bmo or better wait until I know how to reproduce them?

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