Update on what happened in WebKit in the week from September 14 to September 21.
Following up to last week, we have a handful of exciting fixes to WebKitGTK and WPE WebKit covering Sysprof, rendering of CSS "filter" and "backdrop-filter", and the Layer-Based SVG Engine. We also have optimizations, stable releases, and new blog posts!
Cross-Port 🐱
Fixed the pairing of begin and end marks in SysprofAnnotator, which kept only one begin per mark and therefore mistimed recursive, concurrent and overlapping marks, so Sysprof traces of WebKitGTK and WPE WebKit now show correct durations for nested work.
Graphics 🖼️
Fixed CSS filter and backdrop-filter rendering on transformed elements in the Skia compositor used by WebKitGTK and WPE WebKit, where drop-shadow always fell in the same direction on screen instead of turning with the element, blur was scaled by neither the transform nor the device scale factor, and perspective was not handled at all. The filtered subtree is now painted with the layer transform on the canvas into a surface in the layer's own plane at a fixed scale, with the filter applied there and the result drawn back through the layer transform, as Chromium does.
Stopped rasterizing the parts of a tile that the clip discards in the Skia backing store used by the GTK and WPE ports. Both the drawn quad and its source rectangle are now cut down to the clip first, so the rasterizer no longer fills pixels that are immediately thrown away when a tile is larger than the clip.
Fixed the transform attribute on the outermost <svg> element, which the legacy SVG engine ignored entirely and the Layer-Based SVG Engine (LBSE) wrongly applied inside viewBox space. The attribute is now turned into the CSS transform property, one CSS function per SVG function, so that it transforms the element's CSS box, matching the behaviour of Chromium and Firefox.
Releases 📦️
After another six-month development cycle, WebKitGTK 2.54.0 and WPE WebKit 2.54.0 have been published. These are the first stable releases of the 2.54 series, that as a highlight include a completely new compositor based on Skia. As it is becoming tradition with each major release, two blog posts go into details of what's new in WPE WebKit 2.54, and in WebKitGTK 2.54.
This release is a milestone for WPE WebKit: after a couple of years in the incubator, the new WPEPlatform embedding API is now considered stable and recommended for new developments. As part of the stabilization, the WPEPlatform manual now includes not one, but two introductory tutorials, and a migration guide to aid migration from the (now) legacy libwpe-based embedding API.
Note that the libwpe-based legacy API is still available and will be kept in light maintenance mode for the foreseeable future.
Community & Events 🤝
Coinciding with the first stable releases, Carlos García has written about the new Skia compositor that is debuting in the 2.54 series. It includes plenty of details on why and how the new compositor has been built to replace the aging TextureMapper, and measurements that demonstrate how it is bringing graphics performance improvements across the board.
At the same time, Nikolas Zimmermann published a companion article about damage handling in the new Skia compositor that explains how the feature it has been rewritten with a focus on correctness while ensuring that it saves doing unnecessary work without incurring on excessive busywork that would cancel the benefits.
That’s all for this week!