Your favorite WebRender newsletter is ready. TL;DR: “fixed […], fixed […], fixed […], Glenn makes things even faster, fixed […], ad-lib”. Still mostly focusing on conformance and stability, although there is some performance work in progress as well.

Without further ado:

Notable WebRender changes

Glenn impemented mip-mapping to get high quality down-sampling of large images.

Marting cleaned some code up.

Martin made some changes to how clip ids are assigned in order to make it possible to reduce the amount of hashing we do and improve performance.

Glenn wrote the initial implementation of an image brush shader which allows us to segment some images and improve performance in common cases (when there’s no tiling, spacing and repetition).

Lee improved the precision of text shadow with sub-pixel anti-aliasing.

Martin improved something about how hit testing and clipping interact (I don’t quite understand the ins and outs of this but it fixed a hit testing issue).

Glenn avoided requesting images from the texture cache if they are already present in the pre-render cache (saves wasted work and memory).

Kats fixed an issue in the yaml serializer.

Lee implemented passing variation dictionaries on CTF font creation.

Kvark updated wrench and the sample apps to use an up to date version of glutin instead of an old fork.

Glenn implemented partial rendering of off-screen pictures and render tasks.

Glenn fixed z-ordering of transformed content inside preserve-3d contexts.

Martin made hit testing consistent between frames.

Kats avoided rendering frames that are generated only for hit testing.

Nical implemented tracking removed pipelines to facilitate managing externally owned memory.

eeejay implemented color matrix filters, useful for accessibility and SVG color matrix filters.

Notable Gecko changes

Jeff and Gankro enabled blob images by default.

Kats enabled WebRender hit testing by default, and it fixed a whole lot of bugs.

Lee worked around a sub-pixel glyph positioning issue.

Sotaro fixed an issue with windowed plugins such as flash.

Sotaro tweaked the swap chain type on Windows, and then fixed an issue with this specific configuration not allowing us to do a graceful compositor fallback when the driver fails.

Heftig fixed some text being rendered with the wrong metrics with some OpenType font collections by making sure we pass the proper face index to WebRender.

Jamie removed a limitation on the size of recording DrawTargets we use with blob images.

Gankro fixed a very bad rendering corruption by ensuring we make the right context current before rendering.

Andrew improved the way shared memory is handled to avoid creating many file descriptors (and void running into the limit).

Kats fixed a deadlock in the APZ code.

Kvark fixed a crash with the capture debugging tool, and another one.

Kvark automated including WebRender’s revision hash in the generated captures.

Kats fixed an assertion happening when transaction ids don’t increase monotonically (can happen when we reuse a pres context from the back-forward cache).

Martin fixed a bug in the way scroll ids are assigned and handled when building the display list for the root scroll frame.

Emilio fixed a memory leak.

Kats fixed an issue in the frame throttling logic which was messing with hit-testing.

Kats auditted the reftests and marked new tests as passing.

Lee ensured the ClearType usage setting isn’t ignored when WebRender is enabled.

Sotaro fixed a memory leak.

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.