357 - Xorg-Eye-Candy–We-Like
I installed the Xorg 6.8 X server today. I changed over to Xorg from XFree a couple of days ago. All seemed to work fine — after all Xorg is just a fork of XFree — so I decided to upgrade from 6.7 to 6.8, a.k.a the Eye Candy Version.
Xorg 6.8 is more of a preview release than a fully stable release. The release adds new capabilities that many people want to try out, and so they decided to release 6.8 to sate peoples’ appetites. Importantly, 6.8 includes the Composite and XDamage extensions. Both of these are important improvements to the X server, especially for desktop usage.
The function of Composite is to draw each window present on the desktop to a separate buffer, rather than all windows being drawn to the same buffer (as was the case in previous X releases). This is a vast improvement for the desktop because it means that windows do not have to redraw themselves nearly as often as without Composite. The reduction in redrawing is because Composite just retrieve the version that is sitting in the buffer, already drawn. Windows only have to redraw when their content changes.
Redrawing a window takes a fair amount of time and results in the “tear” effect that occurs when you move windows around screen. This seemingly small addition makes the desktop seem far more responsive.
More interestingly, Composite allows for complicated effects to be used when windows are drawn to the screen. At the moment, effects are available for drop-shadows and so-called real window transparency. These are more eye-candy than anything. Other, more useful effects can be imagined. For instance, glowing red windows for Bad Things such as your laptop being about to run out of power.
There is the beginnings of support for the Composite extension in Gnome 2.8’s version of Metacity and a patch available for Kwin to enable some Composite functionality. Hopefully there will be greater support for Composite in the next two releases of these desktops, along with a larger take-up by other desktops. One can but imagine what Enlightenment could do with Composite support, as Enlightenment is a desktop renowned for eye-candy.
XDamage keeps track of precisely what needs to be drawn when a window needs to be redrawn. For example, if only a corner of a window needs to be redrawn, why redraw the whole window? This extension really needs support at the toolkit level — gtk, Qt and others — to fulfill its potential to speed up desktop rendering time still further. The main benefit that XDamage offers, that I can see, is of reducing the drawing that needs to be done. Drawing is a fairly processor-intensive operation, so the less of it done, the better.
Overall, these two extensions plus the others being developed for the Xorg server bring the linux desktop core technologies up to the standard of — and surpassing some — competing desktops.
See the pages on freedesktop.org for more information on the details of Xorg, XDamage and Composite.
Update : I should mention that I used the instructions here to get everything working, for anyone else who wants to try it out.