WebRender newsletter #15

03-05 23:28

I was in Toronto (where a large part of the gfx team is) last week and we used this time to make plans on various unresolved questions regarding WebRender in Gecko. One of them is how to integrate APZ with the asynchronous scene building infrastructure I have been working on for the past few weeks. Another one is how to separate rendering different parts of the browser window (for example the web content and the UI) and take advantage of APIs provided by some platforms (direct composition, core animation, etc.) to let the window manager help alleviating the cost of compositing some surfaces and improve power usage. We also talked about ways to improve pixel snapping. With these technical questions out of the way the rest of the week -just like the weeks before that- revolved around the usual stabilization and bug fixing work.

Notable WebRender changes

  • Nical implemented the infrastructure for asynchronous scene building. This will allow us to move expensive operations out of the critical path and ensure that scrolling and animations are always smooth.
  • Kats fixed a render backend shutdown bug.
  • Kvark fixed the ordering of resource cache operations furing frame capture.
  • Nical fixed some issues with the way pipeline epochs are tracked.
  • Glenn removed an optimization that had become obsolete.
  • Martin cleaned up the scene building code.
  • Glenn made drop-shadow and blur filters use the brush image shader.
  • Kvark fixed a hang with wrench on Windows.
  • Kvark properly cleaned up resources in wrench.
  • Martin fixed a clipping issue with fixed position children elements.
  • Martin relaxed the checks that detect 2D translations, to avoid a lot of expensive and unnecessary 3D transform inversions.
  • Martin optimized out more 3D transform inversions.
  • Glenn shared GPU cache entries for repeated gradient primitives.
  • Kvark fixed some issues with the YUV shader (2) .
  • Martin removed some hash map lookups (2) .
  • Glenn fixed inverted texture coordinates with the image brush shader.
  • Patrick improved anti-aliasing quality.
  • Glenn implemented clip masks for picture tasks.
  • Glenn ported the YUV shader , the radial gradient shader and the ps_composite shader to be brush primitives.
  • Glenn reduced the GPU cache size of pictures.
  • Glenn allowed selection of perspective interpolation per brush instance.
  • Glenn implemented decomposing repeated radial gradients on the CPU instead of the shader (yielding performance improvements).
  • Kvark implemented disabling perspective interpolation for blend brushes.
  • Kvark implemented default cases for shader switches. While not strictly necessary this works around driver bugs and avoid undefined behavior if an unexpected switch value is passed.
  • Kvark implemented more aggressively reusing intermediate render targets within frames.

Notable Gecko changes

  • Kats worked around a race condition preventing the window from rendering on Windows.
  • Andrew disabled D2D for content rendering when WebRender is enabled.
  • Kats enabled WebGL mochitests on Windows with WebRender.
  • Nical and Sotaro fixed a memory management issue with external images.
  • Botond fixed some APZ freezes related to auto-scrolling.
  • Kats fixed an assertion related to frame throttling.
  • Sotaro ensured webrender’s embedded profiler UI doesn’t break sanity tests.
  • Gankro implemented a fallback for non-trivieal text-combine-upright cases.
  • Kats ensured renderer wakeup notifications allow processing frame capture messages.
  • Sotaro ensured teh render thread is properly shut down.
  • Jeff disabled using D2D when painting masks on the content process.
  • Kats fixed a bug in the way we deal with shared memory when allocation fails.
  • Kats removed some unnecessary ipc traffic.
  • Kats enabled some talos tests on Windows.
  • Sotaro improved the way we initialize ANGLE’s GL context with WebRender.
  • Jeff did tons of blob-image related work.

Enabling WebRender in Firefox Nightly

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

Note that WebRender can only be enabled in Firefox Nightly.

标签: Windows
© 2014 TuiCode, Inc.