Hi everyone! This week’s highlight is Glenn’s picture caching work which almost landed about a week ago and landed again a few hours ago. Fingers crossed! If you don’t know what picture caching means and are interested, you can read about it in the introduction of this newsletter’s season 01 episode 28.
On a more general note, the team continues focusing on the remaining list of blocker bugs which grows and shrinks depending on when you look, but the overall trend is looking good.
Without further ado:
Notable WebRender and Gecko changes
- Bobby fixed unbounded interner growth.
- Bobby overhauled the memory reporter.
- Bobby added a primitive highlighting debug tool.
- Bobby reduced code duplication around interners.
- Matt and Jeff continued investigating telemetry data.
- Jeff removed the minimum blob image size, yielding nice improvements on some talos benchmarks (18% raptor-motionmark-animometer-firefox linux64-qr opt and 7% raptor-motionmark-animometer-firefox windows10-64-qr opt).
- kvark fixed a crash.
- kvark reduced the number of vector allocations.
- kvark improved the chasing debugging tool.
- kvark fixed two issues with reference frame and scrolling.
- Andrew fixed an issue with SVGs that embed raster images not rendering correctly.
- Andrew fixed a mismatch between the size used during decoding images and the one we pass to WebRender.
- Andrew fixed a crash caused by an interaction between blob images and shared surfaces.
- Andrew avoided scene building caused by partially decoded images when possible.
- Emilio made the build system take care of generating the ffi bindings automatically.
- Emilio fixed some clipping issues.
- Glenn optimized how picture caching handle world clips.
- Glenn fixed picture caching tiles being discarded incorrectly.
- Glenn split primitive preparation into a separate culling pass.
- Glenn fixed some invalidation issues.
- Glenn improved display list correlation.
- Glenn re-landed picture caching.
- Doug improved the way we deal with document splitting to allow more than two documents.
Ongoing work
The team keeps going through the remaining blockers (14 P2 bugs and 29 P3 bugs at the time of writing).
Enabling WebRender in Firefox Nightly
In about:config, set the pref “gfx.webrender.all” to true and restart the browser.
Reporting bugs
The best place to report bugs related to WebRender in Firefox is the Graphics :: WebRender component in bugzilla.
Note that it is possible to log in with a github account.
What happens when the blockers are resolved? Can WebRender ride the trains for the defined population or are there other metrics that need to be satisfied first?
All required metrics are filed as blocker bugs so once the list is clear we can ride the trains and ship.
Why was there a minimum blob size limit in the first place ( bug1519444)? Also are really small things like tooltips drawn with WR?
The mercurial history points to https://bugzilla.mozilla.org/show_bug.cgi?id=678859 which was an issue with a very large amount of tiny layers causing the allocation of a very large amount of small textures and that tends to have memory and CPU overhead (depending on the hardware/drivers).
In WebRender, blobs and images in general are packed into larger textures so creating many tiny blobs won’t have this problem.
Are there any news regarding Android?
No news this week but we’ll get there eventually.
Nicely done!