# GFX Newsletter Staging Area moz://gfx newsletter #54 Bonjour à tous et à toutes, this is episode 54 of your favorite and only Firefox graphics newsletter. From now on instead of peeling through commit logs, I will be simply gathering notes sent to me by the rest of the team. This means the newsletter will be shorter, hopefully a bit less overwhelming with only the juicier bits. It will also give yours-truly more time to fix bugs instead of writing about it. Lately we have been enabling WebRender for a lot more users. For the first time, WebRender is enabled by default in Nightly for [Windows 7](https://bugzilla.mozilla.org/show_bug.cgi?id=1636482) and [macOS](https://bugzilla.mozilla.org/show_bug.cgi?id=wr-mac) users with modern GPUs. Today 78% of Nightly users have WebRender, 40% on beta, 22% release enabled. Not all of these configurations are ready to ride the trains yet, but the numbers are going to keep going up over the next few releases. We have started looking into shipping WebRender on some flavors of [Linux](https://bugzilla.mozilla.org/show_bug.cgi?id=1614523) as well. Worth highlighting also is the ongoing work by Martin Stránský and Robert Madder to switch Firefox on Linux from GLX to EGL. EGL is a more modern and better supported API, it will also let us share more code between Linux and Android. Lee and Jim continued work on WebRender's software backend. It has had a bunch of correctness improvements, works properly on Windows now and has more performance improvements in the pipeline. It works on all desktop platforms and can be enabled via the pref "gfx.webrender.software". ## WebRender ### Performance One of the projects that we worked on the last little while has been improving performance on lower-end/older Intel GPUs. - Glenn [fixed](https://bugzilla.mozilla.org/show_bug.cgi?id=1637953) a picture caching issue while scrolling gmail - Glenn [fixed](https://bugzilla.mozilla.org/show_bug.cgi?id=1635610) some over-invalidation on small screen resolutions. - Glenn [reduced](https://bugzilla.mozilla.org/show_bug.cgi?id=1636616) extra invalidations some more. - Dzmitry [switched](https://bugzilla.mozilla.org/show_bug.cgi?id=1629693) webrender to a different CPU-to-GPU transer strategy on Intel hardware on Windows. This avoid stalls during rendering. Some other performance improvements that we made are: - Nical [reduced](https://bugzilla.mozilla.org/show_bug.cgi?id=1635472) CPU usage by re-building the scene a lot less often during scrolling. - Nical [removed](https://bugzilla.mozilla.org/show_bug.cgi?id=1648703) a lot of costly vector reallocation during scene building. - Nical [reduced](https://bugzilla.mozilla.org/show_bug.cgi?id=1635153) the amount of synchronous queries submitted to the X server on Linux, removing a lot of stalls when the GPU busy. - Nical [landed](https://bugzilla.mozilla.org/show_bug.cgi?id=1642629) a series of frame building optimizations. - Glenn [improved](https://phabricator.services.mozilla.com/D78216) texture cache eviction handling. This means lower memory usage and better performance. - Jeff [enabled](https://bugzilla.mozilla.org/show_bug.cgi?id=1650475) GPU switching for WebRender on Mac in Nightly. Previously WebRender only used the GPU that Firefox was started with. If the GPU was switched Firefox would have very bad performance because we would be drawing with the wrong GPU. - Markus [finished](https://bugzilla.mozilla.org/show_bug.cgi?id=1592739) and [preffed on](https://bugzilla.mozilla.org/show_bug.cgi?id=1592016) the OS compositor configuration of WR on macOS, which uses CoreAnimation for efficient scrolling. ### Driver bugs - Dzmitry [worked around a driver bug](https://phabricator.services.mozilla.com/D78705) causing visual artifacts in Firefox's toolbar on Intel Skylake and re-enabled direct composition on these configurations. ## Desktop zooming - Botond [announced on dev-platform](https://groups.google.com/forum/#!topic/mozilla.dev.platform/DR01L7wAXxQ) that desktop zooming is ready for dogfooding by Nightly users who would like to try it out by flipping the pref. - Botond landed a [series of patches](https://bugzilla.mozilla.org/show_bug.cgi?id=1556556) that re-works how main-thread hit testing accounts for differences between the visual and layout viewports. This fixes a number of scenarios involving the experimental **desktop zooming** feature (enabled using `apz.allow_zooming=true`), including allowing scrollbars to be dragged with desktop zooming enabled. - Timothy [landed](https://bugzilla.mozilla.org/show_bug.cgi?id=1630912) support for DirectManipulation preffed off. It allows users to pinch-zoom on touchpads on Windows. It can be enabled by setting apz.windows.use_direct_manipulation=true =========================== moz://gfx newsletter # # What's new in gfx # What's new in WebRender [WebRender](https://github.com/servo/webrender/) is a GPU based 2D rendering engine for the web written in [Rust](https://www.rust-lang.org/), currently powering [Firefox](https://www.mozilla.org/en-US/firefox/new/)‘s rendering engine as well as Mozilla's research web browser [Servo](https://github.com/servo/servo). To enable WebRender in Firefox, in the about:config page, enable the pref `gfx.webrender.all` and restart the browser. WebRender is available under the [MPLv2 license](https://www.mozilla.org/en-US/MPL/2.0/) as a standalone crate on [crates.io](https://crates.io/crates/webrender) ([documentation](https://docs.rs/webrender/)) for use in your own rust projects. # What's new in WebGPU [WebGPU](https://www.w3.org/community/gpu/) is a new Web API to access graphics and compute capabilities of the hardware. [Firefox](https://www.mozilla.org/en-US/firefox/new/) and [Servo](https://github.com/servo/servo) have implementations in progress that are based on [wgpu](https://github.com/gfx-rs/wgpu) project written in [Rust](https://www.rust-lang.org/). To enable WebGPU, follow the steps in [webgpu.io](https://github.com/gpuweb/gpuweb/wiki/Implementation-Status#firefox), which also shows the current implementation status in all browsers.