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.
I think WebRender most obvious user experience is that resources are too expensive. I hope to see more optimizations about low memory and low power and low I/O, looking forward to tomorrow’s newsletter.