Newsletter #11 is finally here, even later than usual due to an intense week in Austin where all of Mozilla’s staff and a few independent contributors gathered, followed by yours truly taking two weeks off.
Our focus before the Austin allhands was on performance, especially on Windows. We had some great results out of this and are shifting priorities back to correctness issues for a little while.
Notable WebRender changes
- Martin added some clipping optimizations in #2104 and #2156.
- Ethan improved the performance of rendering large ellipses.
- Kvark implemented different texture upload strategies to be selected at runtime depending on the driver. This has a very large impact when using Windows.
- Kvark worked around the slow depth clear implementation in ANGLE.
- Glenn implemented splitting rectangle primitives, which allows moving a lot of pixels to the opaque pass and reduce overdraw.
- Ethan sped up ellipse calculations in the shaders.
- Morris implemented the drop-shadow() CSS filter.
- Gankro introduced deserialize_from in serde for faster deserialization, and added it to WebRender.
- Glenn added dual-source blending path for subpixel text when supported, yielding performance improvements when the text color is different between text runs.
- Many people fixed a lot of bugs, too many for me to list them here.
Notable Gecko changes
- Sotaro made Gecko use EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE for WebRender. This avoids a full screen copy when presenting. With this change the peak fps of http://learningwebgl.com/lessons/lesson03/index.html on P50(Win10) was changed from 50fps to 60fps.
- Sotaro prevented video elements from rendering at 60fps when they have a lower frame rate.
- Jeff removed two copies of the display list (one of which happens on the main thread).
- Kats removed a performance cliff resulting from linear search through clips. This drastically improves MazeSolver time (~57 seconds down to ~14 seconds).
- Jeff removed a copy of the glyph buffer
- Lots and lots of more fixes and improvements.
Enabling WebRender in Firefox Nightly
- set “gfx.webrender.enabled” to true,
- set “gfx.webrender.blob-images” to true,
- set “image.mem.shared” to true,
- if you are on Linux, set “layers.acceleration.force-enabled” to true.
Note that WebRender can only be enabled in Firefox Nightly.