There were a few things that I left out of my previous post about Cairo status (as a few people pointed out), and I wanted to highlight them here.
For the past two months, Antoine Azar and Frédéric Plourde have been working for Mozilla, cranking away at both Cairo and pixman. They started out with a completely unfamiliar codebase and quickly producing useful enhancements. Antoine was able to implement some missing support in pixman, allowing us to implement smooth scaling of images. This was the final missing piece that makes Firefox 3′s full-page zoom feature able to display a high quality version of the unscaled page.
Johnathan sent me some screenshots from Vista, comparing the rendering of a recent Firefox 3 beta to IE 8′s beta. He’s running in Vista’s high-DPI mode, so all the scaling was applied by default. Firefox is on the left, IE’s on the right… the difference is pretty striking (click for the full image, make sure you view it unscaled for all the gory details):
Linux users will have to wait a little longer to get higher quality image scaling; as we now rely on the X server to do image compositing through the Render extension, we’ll have to wait until the pixman patches are integrated into the X server. I’m hoping that will happen in time for the next X.org release.
Frédéric has also been working with pixman, specifically low-level optimization of the compositing routines (pixman is used on Windows for all non-trivial rendering, and used indirectly on Linux through the X server). He cleaned up the existing MMX code so that it could build with Visual C++, and is now working on further optimization and extending the existing fast paths. In Mozilla, we’ve enabled the MMX code everywhere.
At around the same time, a rapidly-progressing effort to add SSE2-optimized paths to pixman began on the Cairo mailing list, and Frederic will be joining those guys shortly. Given that most x86 computers in the past few years have full SSE2 support, it makes sense to focus work there. Early results are showing significant peformance gains, which should be a huge boon for authors taking advantage of SVG and Canvas features. Much of this additional work will not ship with Firefox 3 at release time, but it may come shortly after in a minor release. I’m pretty excited to have additional improvements already waiting in the wings… I think you’ll see Gecko continuing the past few months’ trend of rapid development even after Firefox 3′s release.