To introduce this week’s newsletter I’ll write about culling (moved to a separate post).

Notable WebRender and Gecko changes

Bobby implemented dynamically growing the shared texture cache, cutting by half the remaining regression compared to Firefox without WebRender on the AWSY test.

Dan did some profiling of the talos test, and identified large data structures being copied a lot on the stack, which led to some of Glenn’s optimizations for this week.

Dan fixed a crash with huge box shadows.

Kats fixed an issue with scrollbar dragging on some sites.

Matt landed his tiled blob image work yielding nice performance improvements on some of the talos tests (45% on tsvg_static and 31% on tsvgr_opacity).

Matt investigated the telemetry results.

Andrew fixed a crash.

Andrew improved animated image frame recycling (will land soon, improves performance).

Lee fixed related to missing font descriptors.

Glenn optimized out segment builder no-ops.

Glenn stored text run outside primitive instances to work around a recent performance regression.

Glenn moved opacity from per primitive instance to a per template to reduce the size of primitive instances.

Glenn moved the resolution of opacity bindings to the shaders in order to simplify primitive interning.

Glenn used primitive interning for text runs.

Glenn used primitive interning for clears.

Glenn refactored render task chaining.

Nical made opacity, gaussian blur, and drop shadow SVG filters use WebRender’s filter infrastructure under some conditions (instead of running on the CPU fall back).

Nical followed up with making a subset of SVG color matrix filters (the one that aren’t affected by opacity) use WebRender as well.

Nical investigated a color conversion issue when WebRender is embedded in an application that uses OpenGL in certain ways.

Sotaro switched presentation to triple buffering

Ongoing work

Bobby is further improving memory usage by tweaking cache growth and eviction heuristics.

Kats continues working on asynchronous zoom for android and on evaluating the remaining work before WebRender can be used on android.

Kvark is making progress on simplifying the clipping and scrolling APIs.

Matt keeps investigating performance in general.

Glenn continues incrementally landing patches towards picture caching.

Nical is working on blob recoordination.

Doug is making progress on document splitting.

Enabling WebRender in Firefox Nightly

In about:

config set “gfx.webrender.all” to true,

restart Firefox.