Hi there! I first published this newsletter episode on May 21st and hitting the publish button at the same time as Jessie who wrote an excellent announcement post about WebRender on the stable channel. We decided to unpublish the newsletter for a couple of days to avoid shadowing the other post.
🎉 WebRender enabled by default for a subset of users on stable 🎉
Firefox users on the stable channel are starting to use WebRender without opting into it manually.
This is a huge milestone for everyone involved! The initial target configuration is Windows 10 with nvidia desktop GPUs and recent enough drivers. A very specific and small set of users for sure, and this is so that we can progressively roll out this massive change to Firefox’s graphics engine and appropriately react to the bugs that went unnoticed during all these months of testing and polish (and I am sure there will be). On the nightly channel, we’ve already started enabling WebRender by default on some AMD and Intel configurations on Windows and Linux.
Congratulations and big thanks to everyone who helped pushing WebRender forward, mozilla staff and volunteers alike. In particular, I would like to highlight the tremendous amount help provided by volunteer contributors Darkspirit and Alice0775 White in filing, reproducing and triaging bugs.
Bug triage is an often underapreciated, yet absolutely vital part of the process of making Firefox. Without it developers would not know about important bugs that need fixing. It is crucial to our ability to see and react to problems in the wild and impacts priorities and other decision making. Bug Triage is time consuming and requires a lot of knowledge about the project. So once again, many thanks to Alice0775 White, Darkspirit and many other volunteers who’s help and impact on the project is really appreciated.
What’s new in WebRender
- Glenn landed a number of changes towards generating separate batches per dirty region. The goal is to improve the performance of incremental updates.
- Glenn fixed external scroll offsets for perspective elements.
- Kvark fixed a backfrace-visibility issue.
- Kvark fixed a texture cache reallocation crash.
- Kvark fixed a transform flattening bug.
- Kvark added support for using the KHR_blend_equation_advanced GL extension for mix-blend modes.
- Kats added support for WebRender’s builtin debugging and profiling features on Android.
- Doug fixed a number of document splitting bugs.
- Nical finished turning the render task tree into a more powerful render task graph, and integrated the debug visualization into frame captures.
- On top of this Nical started implementing render graph optimizations for items with many shadows.
- Nical increased the amount of blob tiles that are rendered asynchronously.
- Gankro landed the refactoring to how we represent webrender display items, reducing the size of lots of items, eliminating lots of meaningless states, and making it easier to read webrender captures.
- Gankro got cbindgen to work with rust 2018
extern crateidioms, unlocking the ability for us to bump webrender and other gecko crates to Rust 2018.
- Andrew improved pixel snapping.
- Andrew fixed a crash caused by primitives with empty clips in some situations.
- Jamie is improving glyph zooming on Android.
- Jamie fixed a border rendering bug.
- Jeff fixed a number of bugs with “clipped drawtargets”, a way to better represent the work for tiled blob images and deduplicate work.
- Jeff and Nical reduced memory allocation overhead in during blob image rasterization.
- Sotaro landed a lot of improvements to the texture sharing code.
- Sotaro enabled the shader cache on android.
- Lee reduced lock contention when rendering text on Windows.
- Lee improved dual-source blending.
- Miko landed many improvements to displaylist building performance.
Enabling WebRender manually
about:config, enable the pref
gfx.webrender.all and restart the browser.
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.