Xgl y la revolución gráfica en Linux

Mucho se ha hablado sobre Xgl este ultimo tiempo, y pareciera que todos quieren instalarlo en sus escritorios, pero también veo que hay mucha confusión acerca de que se pretende con Xgl, incluso algunos creen que es una suerte de 3ddesktop pero más espectacular. Hace tiempo que quería escribir sobre el tema, y podría haber escrito varios artículos, pero como la próxima semana no voy a tener mucho tiempo, decidí escribirlo todo en uno solo. Sé que esto llegará a Planeta GNOME Hispano en donde hay gente que sabe mucho más del tema, agradezco si me envían correcciones al artículo por mail privado.

X-Server

El sistema gráfico utilizado en Linux es X-Window, este sistema asume que las aplicaciones actúan como un cliente (x-client) de un servidor X-Window (x-server). El x-server se encarga de lograr la interacción entre el usuario y la aplicación, el rol del servidor es desplegar la imagen en pantalla, y recibir los eventos de teclado, mouse y otros dispositivos. Hay distintas implementaciones de x-servers, los hay para Linux, MacOSX y también para Windows.

Mientras mejor sea el x-server, mejor es la representación de la aplicación. Para ir mejorando un servidor x-server se van proponiendo extensiones (x extensions) y con el tiempo estas extensiones se van implementando en los distintos x-server y drivers. Ejemplos de x-server son XFree86 y Xorg.

Aunque normalmente tanto los x-client y el x-server se ejecutan en un mismo computador, la separación entre x-client y x-server también permite que una aplicación que se ejecuta en un computador, pueda utilizarse desde otro computador en forma remota con un x-server corriendo en el computador local al usuario en forma independiente del sistema operativo.

X Server y X Clients
X Server y X Clients

Modelo de composición

El dibujado de las aplicaciones en pantalla se llama composición. En los sistemas tradicionales, cada ventana es un rectángulo en donde se dibuja la aplicación. Cuando una ventana cubre a otra, no es necesario dibujar el contenido de la ventana no visible. Cuando una ventana que cubre a otra se mueve, la nueva superficie visible de la ventana debe ser redibujada por la aplicación. Si ustedes mueven una ventana en el escritorio rápidamente, verán como las aplicaciones intentan redibujar las ventanas. Este es el modelo de composición utilizado tanto en Windows como en Linux

Una de las desventajas es que las aplicaciones constantemente tienen que estar redibujando las ventanas aunque no hayan sufrido cambios. Si la aplicación no responde, lo único que veremos sera un rectángulo vacío, o si la aplicación se demora en redibujar, se verá un retraso en el despliegue. Otra desventaja es que una ventana que quiera utilizar áreas no rectangulares o áreas semitransparentes, tienen «conciencia» limitada de lo que esta dibujado detrás de ellas, por lo tanto cualquier ventana que no sea 100% opaca y rectangular, no se dibujará correctamente. Si han visto como funcionan gDesklets o SuperKaramba, entenderán de lo que estoy hablando.

Comparación entre modelos de composición
Comparación entre modelos de composición

Composite Managers : xcompmgr, luminocity, looking glass

Un modelo de composición mas evolucionado consiste en dibujar las ventanas completamente fuera de pantalla (off-screen). Cada aplicación dibuja solamente cuando necesita cambiar algo de su ventana, y el contenido completo de cada ventana siempre está disponible, aunque no sea visible. Una aplicación especializada se encarga de transferir la imagen de cada ventana al área visible de video, es decir al escritorio que vemos en pantalla. En esta transferencia puede aplicar cualquier transformación, por ejemplo cambiar el tamaño, rotar, mezclar con el fondo, etc. Esta aplicación especializada es lo que se conoce como Composite Manager. Mientras que un Window Manager debe posicionar y manipular (move/resize) las ventanas en el escritorio, un Composite Manager se encarga de renderizar las ventanas en el escritorio.

Un Composite Manager radical podría por ejemplo dibujar las ventanas como una textura sobre un polígono a través de OpenGL, y pedirle a la tarjeta de video que dibuje el polígono en pantalla, considerando que hoy en dia las tarjetas de video son hábiles en renderizar polígonos en un entorno 3D, se podría delegar gran parte del trabajo a una tarjeta con aceleración 3D. Si por ejemplo se quisiera obtener una vista minituarizada o ampliada de la ventana, bastaría simplemente con cambiar el tamaño del polígono y la tarjeta de video se encargaría de hacer el render, y Uds. saben: «sí, son rápidas». Al mover una ventana sobre otra, son simplemente dos polígonos que se superponen, y se pueden mover «como si nada».

Keith Packard trabajó en una nueva x-extension llamada Composite. Esta extensión permite cambiar el modelo de composición tradicional en donde cada ventana dibuja solo las áreas visibles, y redibuja las que se van «descubriendo», por el descrito en el párrafo anterior en donde las ventanas se dibujan siempre off-screen. El trabajo se inicio en el x-server experimental kdrive, también conocido como el x-server de freedesktop.org, y posteriormente se implementó en el servidor Xorg, que es el que viene con la mayoría de las distribuciones de Linux. Hay un paper sobre los cambios necesarios para cambiar al nuevo modelo de composición.

X Server de FreeDesktop
X Server de FreeDesktop

El primer Composite Manager conocido se llama xcompmgr, y era un Composite Manager de ejemplo que implementaba cosas simples como agregar sombras y transparencias a las ventanas. Para realizar estas sombras y transparencias se utilizaron funciones de la extensión XRender (también de K.P.), un obstáculo es que prácticamente ningún driver de Xorg acelera(ba) correctamente la extensión XRender, a excepción del driver propietario de nvidia. El problema es que la arquitectura de aceleración de Xorg (XAA) no es muy adecuada para tener XRender acelerado por hardware, mientras que la arquitectura de kdrive (KAA) si permite una buena implementación de XRender pero no hay muchos drivers compatibles con kdrive. Por lo tanto, xcompmgr solo era usable si eras propietario de una nvidia, o bien utilizabas kdrive pero sin aceleración por hardware.

Para solucionar este problema, surgió la iniciativa de EXA, que vendría siendo algo así como KAA aplicado a Xorg. La idea era que lentamente los drivers XAA se fueran convirtiendo en EXA, y el usuario puede escoger si usar EXA o el modelo tradicional XAA. Mientras tanto, en RedHat se comenzó a experimentar modificando Metacity, que es el Window Manager de GNOME, para que incluyera funciones de un Composite Manager. Este desarrollo tomo el nombre de Luminocity. Este Composite Manager era mas ambicioso que xcompmgr e incluía funciones de transformación de ventanas, uso inteligente de transparencias para destacar ventanas en transición, y un selector de escritorios en donde se podia ver cada ventana minituarizada en tiempo real.

Luminocity
Luminocity

Si buscamos otra aplicación de Composite conocida, tenemos el famoso proyecto Looking Glass de Sun. Ellos aprovecharon la extensión composite para poder hacer un Window Manager/Composite Manager que pudiera manipular las ventanas en un entorno 3D.

Looking Glass de Sun Microsystems

Xgl y Compiz

Otro camino posible para obtener buenos resultados era olvidarse de Xorg y crear un nuevo x-server que facilitara el trabajo considerando el nuevo modelo de composición, y aprovechando las características de las tarjetas de video modernas que han sido diseñadas para utilizar operaciones gráficas 3D aceleradas por hardware. Es ahi donde aparece el x-server Xgl, publicado recientemente por Dave Reveman de Novell. Este x-server realiza sus operaciones de render no utilizando un driver propio, sino que utilizando un driver OpenGL. El x-server Xgl mas común es el Xglx, y lo que hace es conectarse a otro servidor X que tenga soporte de OpenGL a través de la extensión GLX (OpenGL/X). Entonces si levantamos Xorg + Xglx tendremos un x-server con operaciones OpenGL aprovechándose de la infraestructura de otro x-server con drivers OpenGL a través de GLX. Es esta combinación la que hemos tenido oportunidad de ver últimamente en los alucinantes videos.

El Composite Manager creado para aprovechar las características de Xgl se llama Compiz, además de ser un Composite Manager también es un Window Manager. Una de las cosas interesantes de Compiz es que funciona en base a plugins, entonces cada plugin agrega un nuevo efecto especial a Compiz. Los plugins que existen a la fecha permiten hacer fade de las ventanas al aparecer/desaparecer, rotar los escritorios virtuales como un cubo, visualizar las ventanas como Exposé de MacOSX, mover las ventanas como si fueran de papel. etc.

Xgl + Compiz
Xgl + Compiz

Aiglx y Xair

No todos eran partidarios de construir un nuevo x-server como se hizo con Xgl, porque era harto trabajo. Entonces surgió un proyecto alternativo llamado Aiglx, publicado por RedHat. Aiglx permite utilizar aceleración OpenGL para realizar la composición, pero modificando suavemente Xorg. Aiglx se apoya en un Composite Manager llamado Xair, que al parecer es una evolución de Luminocity.

Soporte de Hardware

Para utilizar el nuevo modelo de composición en nuestros computadores, necesitamos hardware que sea compatible con las distintas combinaciones de x-servers y composite managers. Hoy en día la mejor alternativa es utilizar alguna tarjeta de video que utilice un chip de nvidia. El soporte va a ir mejorando a medida que se implementen las funciones necesarias por cada x-server y composite manager, específicamente el soporte de EXA, y la nueva extensión GLX_EXT_texture_from_pixmap son claves para la expansión de estas nuevas tecnologías.

El cambio en la forma en que se perciben las ventanas, y el hecho de que las aplicaciones ya no tienen que redibujar, hacen que el cambio realmente valga la pena, inclusive si solamente se utiliza xcompmgr en su forma mas básica.

Las esperanzas son altas, por ejemplo tengo una tarjeta de video integrada Intel i855 de 64MB, xcompmgr funciona perfectamente con Xorg, es suficientemente usable como para tenerlo diariamente en mi escritorio. Compiz+Xgl funcionan bien, pero con algunos «glitches», y hay cosas que funcionan lentas debido a la falta de soporte de GLX_EXT_texture_from_pixmap en la versión actual de mi driver.

¿Como estan los otros sistemas?

MacOSX cambió el modelo de composición hace bastante tiempo, a través de Quartz Extreme . Windows cambiará el modelo de composición en Windows Vista, pero requerirán un hardware mucho mas potente para poder aprovechar estas características.

119 Responses to “Xgl y la revolución gráfica en Linux”

Páginas: « 6 [5] 4 3 2 1 » os Enlaces Pe

  1. 100
    tuxams297 Says:

    Me ha gustado mucho el looking glass! vaya efectos!

    SAlu2 😉 😉 😉
    http://linuxalpoder.es

  2. 99
    Franco Says:

    Jota, afortunadamente te equivocas 😀

    Cuando la aplicación es local se usan algunos atajos, como pipes locales y memoria compartida. Si el área de video está en la misma máquina se accede directamente desde el cliente y el servidor, no hay que transmitir nada. Los sistemas graficos de Windows (Vista) y Mac OSX usan esquemas similares de cliente/servidor. Piensa en una separación lógica y no física.

    Lo que sí puede afectar la velocidad de despliegue de una aplicación es la latencia por roundtrips entre cliente y servidor, o entre aplicación y sistema gráfico, como lo quieras llamar. Si quieres saber mas del tema, te recomiendo estos links:

    MIT-SHM Extension

    X Window System Network Performance (ojo que es un paper antiguo)

    X Window System

    Why Apple didn\’t use X for the window system

    Roundtrip delay time

  3. 98
    Jota Says:

    de cualquier manera, creo que el sistema cliente-servidor si merma el desempeño
    ya que, aunque ambos corran concurrentemente en la maquiena, los mensajes son empoaquetados, enviados y desempacados para «renderizar» en la pantalla.
    Claro que este sistema tiene sentido cuando se plantea una configuración como en el Linux terminal server project, pero en el caso de un sistema tradicional, debe tener repercuciones.

    Por favor corrijanme si me equivoco.
    GRAXXXXXX

  4. 97
    Franco Says:

    Estas confundido, la separacion entre clientes y servidor X no tiene ninguna influencia sobre el performance. Tengo un contraejemplo, toma un computador de potencia media como puede ser un PIV de 1.5Ghz, 512MB en ram y una nvidia geforce 4 mmx (antigua) . Ponle Linux y activa la aceleracion gráfica, luego ponle windows vista, activa aero y compara. Para ahorrarte el trabajo, mira este par de videos:


    Linux en EEE PC

    Windows en EEE PC

    Por cierto, Cairo es el sistema grafico actual para todas las aplicaciones de GNOME, como puedes ver en el primer video.

    Por otra parte, cuando tienes un sistema de 64 bits las unicas aplicaciones que pueden sacar provecho son las que manejan grandes volumenes de datos como por ejemplo una base de datos, un sistema CAD, o post-procesamiento de video. Asi que incluso si inviertes tu configuracion no vas a ver mayor diferencia en aplicaciones de escritorio.

  5. 96
    zaryus =john gonzalez rojo= Says:

    hola, pensaba que por fin podriamos deshacernos del sistema cliente=servidor que parece ser el talon de aquiles de GNU/Linux. Ralentiza el funcioamiento del pc, ppor que en mi maquina Sempron tengo instalado WinXP 32 Bits y Ubuntu GNU/Linux AMD64 y no es gran la diferencia sobre todo cuando uso programas graficos, que no los de consola.
    Parece que Cairo no prospero.
    Saludos

  6. 95
    Franco Says:

    Hola Balam. No hay problema en que uses los articulos de este blog siempre que respetes la licencia… no la tengo especificada en el sitio pero es Creative Commons Atribución-No Comercial-Compartir:

    http://creativecommons.org/licenses/by-nc-sa/3.0/

  7. 94
    Balam Castillo Páramo Says:

    Que tal Franco, mi nombre es Balam Castillo director de la revista Get N\’ Post.

    Esta es una revista que distribuimos de forma gratuita en algunas de las Universidades de mi país México, además de poderla descargar también de forma gratuira de nuestra página web
    http://www.getandpost.com, sin ningun costo para nadie.

    Los temas que tratamos son sobre software libre enfocado al aprendizaje de estas herramientas.

    Checando la información que manejas es tu blog leí varios de los artículos y me intereza publicar algunos de ellos para la revista, y por este motivo te escribo para pedirte una autorización de publicación de los articulos de tu blog.

    De antemano te doy las gracias, por tomarte el tiempo de leer estas líneas, te invitamos a visitar nuestro sitio Web y a participar con nosotros, recibe un cordial saludo.

    Atte Balam Castillo Páramo
    Director de la Revista Get N\’ Post

  8. 93
    Franco Says:

    Claro, me encantaría. Escríbeme a fcatrin en tuxpan.com

  9. 92
    Maria Beszlej Says:

    Franco,
    Acabo de leer tu artículo y te tengo que decir que me intereso muchísimo, por eso me
    pongo en contacto contigo para preguntarte si no estarías interesado escribir
    un artículo para nuestra revista (Linux+DVD). El numero que estamos preparando en este
    momento será sobre gráfica y por eso pensé que puede ser de tu interés.
    Por favor, deja me saber que opinas sobre mi propuesta. =)
    Saludos,
    Maria

  10. 91
    alfonso Says:

    que tal me encanto el articulo solo quiero saver sobre un problema que tengo
    tengo una laptop dell inspiron 1521 con amd turion 64×2 con una ati radeon xpress1270 el problema esque no puedo instalar ubuntu 7.04 me sale una pantalla azul y me dice de un error de las Xs he intentado con alternate y consigo instalarlo pero al iniciar no me abre el modo grafico, solo he podido instalar ubuntu 6.10 y con nvye instale la tarjeta grafica y tengo aceleracion grafica porfin pero el punto es que aun asi nome permite utilizar el compiz me dice que mi tarjeta grafica no lo soporta de nuevo mi tarjeta es una ati radeon express 1270 de 64MB dedicados y compartidos con la ram hasta 256 de antemano muchas gracias, espero que alguien me pueda ayudar y felicidades por el articulo esta muy bueno

  11. 90
    Omar Says:

    Yo instale el xgl en mi maquina de casualidad saven pro que me tumba X al iniciar el beryl?

  12. 89
    carla Says:

    Les falta màs photos del sistema

  13. 88
    edvil Says:

    exelente referencias, gracias por subir información resumida para seguir investigando.

  14. 87
    Francisco Javier Guerra Montero. Says:

    Gracias Franco por tus palabras. Con mucho agrado responderé tus consultas.

  15. 86
    Franco Says:

    Francisco Javier, muchas gracias por tus palabras. Tu blog esta SUPER, es justo el tipo de información que necesito.

    Aprovechando el contacto, te puedo escribir para hacerte unas consultas?

  16. 85
    Francisco Javier Guerra Montero. Says:

    Franco, gracias por tu dedicación y esmero. La entrega de conocimiento libera el alma.
    Sé de tu existencia desde que te vi con Sebastián Beeche en el programa de culto…TVNAUTA.
    Quiero comentar que aunque no soy usuario de ninguna distribución de Linux, me interesan mucho los avances que existen en lo referente a sistemas operativos y sus entornos gráficos.
    Por otra parte, te felicito por tus pasos en lo que ha grabación de audio y midi se refiere. Yo hace muchísimos años que estoy involucrado en la grabación multipista.
    El problema respecto ha esto, es que Linux aún no se enfoca ha dar un completo soporte para los músicos profesionales. El problema radica en los drivers y en las decisiones corporativas respecto a la compatibilidad universal de aplicaciones profesionales de audio.
    Como podrás darte cuenta soy un usuario de Mac y Windows utilizando Parallels. (Falta muy poco para Coherence…el cielo en la tierra.)
    Y por ultimo, como sé que estás recién empezando en el mundo de la producción musical, te dejo mi link de técnicas de grabación, softwares y hardware dedicado, para que vayas conociendo otros mundos.
    http://fcojav.blogspot.com/

    Gracias nuevamente por todo.

  17. 84
    manolo Says:

    Enhorabuena!! Muy buen artículo. Realmente esclarecedor.

  18. 83
    Mario Says:

    Muy bueno el articulo, felicitaciones. Este es un tema muy escabroso y complejo, y el hecho de llevarlo a los mortales no es menor.

  19. 82
    federico Says:

    exelente

  20. 81
    Anibal Avelar Says:

    Muy buen articulo. Aclara muchas dudas de las varias arquitecturas graficas que han surgido ultimamente.

    Por cierto, en los comentarios leí que alguien quería saber si había alguien usando Intel (chip i915) con Aixgl.

    Yo tengo esto:

    Beryl (0.1.4) +Xorg (7.1) + Aixgl (que ya vienen integrado al Xorg desde la version 7.x) + Debian Sid/Etch

    Todo sobra una Laptop compaq nx6120 con tarjeta grafica Intel 955 (driver i915) de 64 MB y 512 de memoria RAM. Funciona bien en un kernel 2.6.17 y 2.6.19 (no lo probe con otros).

    Funciona de maravilla a 24 bits. Quien tenga un Debian Unstable sabra la dificultad que represntaba hacer esto sobre un chip Intel.

    Estoy preparando un mini articulo de todo lo que tuve que hacer para que funcionara en mi Blog (en la seccion en español). Lo libero en una semana.

    Saludos.

    FixXxeR

Páginas: « 6 [5] 4 3 2 1 » os Enlaces Pe