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.