A Bunch Of Interesting Cairo-Trace Benchmarks
Phoronix: A Bunch Of Interesting Cairo-Trace Benchmarks
GNOME developer Benjamin Otte has published quite a few benchmarks on his blog showing off the Cairo performance with the Xlib and OpenGL back-ends on Intel hardware and also NVIDIA hardware with the open-source Nouveau driver...
This speaks more to the tuning and quality of Cairo than the quality of the drivers or the chipsets, particularly since most Cairo development is done with Intel GPUs. The nVidia netbook case is not very revealing either, since netbook GPUs are in general underpowered compared to common desktop equivalents. The nouveau vs blob results were somewhat surprising, but can be explained by the differing focus of the blob vs Nouveau (that is, open source desktop use versus professional and gaming OpenGL use).
I forgot to mention that there are also huge differences in how memory is managed on an Intel vs nVidia GPU. Intel GPUs have the benefit of shared memory, while nVidia GPUs have to move pixel data across the PCI express bus. If Cairo is triggering a lot of CPU fallbacks that require reading data from the GPU back to system memory, those will run a lot slower on any discrete GPU as compared to an integrated Intel GPU. A graphics library designed exclusively on Intel GPUs is unlikely to take this into account.
I am not sure whether OpenGL is the right direction for 2D rendering. A dedicated API, optimized for 2D acceleration, is the way to go. We already have XRender (which is a start, but needs improvements). Other operating systems with superior 2D acceleration (for example OS X) demonstrate that a specialized API is a good design decision.
OpenGL (at least the older versions with which I am familiar) works equally well with 2D and 3D. Whether OpenGL itself is similar enough to current hardware is another matter. It seems to me the difficult tasks performed by modern graphics APIs are things like tessellating an antialiased, Bézier-defined curve into polygons. If a new API (OpenVG, perhaps) or an OpenGL extension can offload that to the video card, we might finally see the level of performance modern hardware is capable of.
Originally Posted by brent