Hace ya un tiempo Apple le robaría la idea a alguien de que las aplicaciones en vez de pintar directamente en las ventanas lo hiciesen en un mapa de memoria, y que el gestor de ventanas las tratase como simples bitmaps y así aprovechar las fantásticas prestaciones ofrecidas por las tarjetas gráficas actuales para añadirle espectaculares efectos especiales.
La mayoría de los que lo vieron se quedaron con la boca abierta y los frikis se masturbaban con el MacOS/X aunque seguían follandose al XP. Microsoft prometió ponerle unos implantes de silicona al XP para que entrara por la Vista, algunos cuantos chalados del software libre se preguntaron cómo se hacía eso a lo que otros cuantos todavía más chalados respondieron con dos soluciones diferentes.
La primera solución que apareció fue una propuesta de Novell: XGL. Se trata de añadir una capa más a la arquitectura gráfica (que a estas alturas, ya poco importa una más). Se trata de usar un servidor X-Window con GLX (por ejemplo x.org) y que éste tenga un único cliente X, que a la vez sería otro servidor X-Window pero que implementaría todas las primitivas gráficas usando llamadas a OpenGL. Además se usaría un gestor de ventanas que tuviese esto en cuenta y se aprovechase de todas estas características. Parece lógico que añadir una nueva capa software encima de las ya excesivas capas software no es una buena idea, pero resulta que funciona, y además lo hace muy rápido. La verdad es que vuela.
He probado esta solución con una nVidia GeForce FX 5200 con 128MB de VRAM y con una ATI Raedon 9600 con 64MB de VRAM, y en las dos funciona increíblemente bien. Para comparar lo bien hecha que esta esta implementación, el sistema del Vista, con unos efectos mucho más pobres, no soporta mi tarjeta ATI, ya que requiere que como mínimo se tengan 128MB de VRAM.
La segunda implementación para hacer lo mismo, AIGLX, quiere evitar el tener que añadir capas intermedias, y simplemente lo que han hecho es añadir una extensión a x.org, llamada Composite, que añade las funciones que necesita el gestor de ventanas para hacer los espectaculares efectos (la verdad es que no se porqué no usar directamente la extensión glx, pero ¿qué voy a saber yo?). La extensión emplea la arquitectura DRI para su implementación.
Resulta que AIGLX no funciona en las tarjetas nVidia, supongo porque el driver de nVidia no implementa DRI, sino que se lo monta por su cuenta. En cambio el driver ATI si que funciona. Lamentablemente al activarlo en mi Mandriva 2007 RC2 me encuentro con que el servidor x.org se come el 98% del procesador (el servidor xgl suele consumir alrededor de un 2% o menos incluso). No se si se trata de un error de configuración, de una de las tradicionales cagadas de Mandriva, pero la cuestión es que AIGLX de momento no me es usable.
Aparte del hecho del consumo de procesador, lo cierto es que usando XGL se ve mejor que usando AIGLX, y da la sensación de estar más trabajado. Creo que el diseño de AIGLX tiene más futuro que el de XGL, pero hoy por hoy, XGL funciona mucho mejor.
Ahora la cuestión es ¿pero vale la pena tener los efectos chorras? en mi opinión, si. No he apreciado ninguna sobrecarga por usar XGL, puede que si me ponga a cronometrar encuentre algo, pero a simple vista va todo a la misma velocidad, excepto el dibujado en pantalla, que va mejor. Además usar estas nuevas tecnologías no sólo añade pijadas, sino que mejora la calidad de la imagen. Da una mayor sensación de fluidez, por ejemplo el permutar dos ventanas es mucho más rápido, puesto que la aplicación no tiene que repintar su ventana, ya que se encuentra perfectamente pintada en su framebuffer, y por tanto no aparecen nunca las típicas ventanas en blanco o a medio dibujar por culpa de una aplicación colgada o "muy ocupada".
La única desventaja es que cada ventana requiere de un framebuffer própio, con lo que aumenta el consumo de RAM, pero si usamos una resolución de 1024x768 a 32 bits de color, eso supone 3MB de RAM por ventana como máximo, y a estas alturas para los PC eso ya no es memoria.