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. 80
    ESTEBAN Says:

    franco gracias por tu comentario.me alegra muchisimo saber que nuestra musica esta llegando a esos lados ..bendiciones
    Esteban Alvarado Granja – » VOCES DEL REY »
    estebangt206@hotmail.com

  2. 79
    Drixdel Says:

    Excelente explicación, muchas gracias.

  3. 78
    Franco Says:

    A propósito, en la revista begins aparece una version actualizada de este articulo que pronto subiré. Tambien sale una entrevista 🙂

    http://www.linuxchillan.cl

  4. 77
    Franco Says:

    Es una copia descarada…. fijate que ni siquiera cambiaron los links a las imagenes que apuntan hacia aca! Incluso hay un screenshot que se alcanza a leer : fcatrin@shamancito

  5. 76
    vladimir prieto Says:

    franco :

    acabo de toparme con este artículo, y mientras lo leía, recordé que ya lo había leido antes. Claro, al buscarlo me acordé que era aquí.

    es una copia fiel de este, el tuyo. pero no hay ninguna referencia hacia a tí. entonces me pregunto yo, tu lo copiaste o fueron ellos?

  6. 75
    Borja otra vez Says:

    Por cierto, acabo de comprarme mi nuevo ordenador, un Athlon 64 3000+ con targeta integrada 3D 256 y pienso instalarle un GNU/Linux, estoy dudando entre Ubuntu, SUSE o el clasico Debian, la verdad es que no entiendo apenas de Linux y creo q esos tres son los mejores, alguien me puede recomendar alguno porfavor o sugerirme otro diferente q este mejor.

    Gracias a todos y un saludo.

  7. 74
    Borja Says:

    So good, muyyy interesante

  8. 73
    Franco Says:

    Con la nvidia te va a funcionar muy bien, de hecho con una tnt te alcanza.
    Sobre el soporte de instrucciones SSE, te engrupieron. Hasta donde tengo entendido no hay requerimientos de ese tipo.

  9. 72
    miguel Says:

    la placa que me ofrecieron es una nvidia geforce mx4000 creo. es agp 8x de 64 mb con salida a tv. con respecto a la placa onboard de mi pc es prosavage 32MB. escuche que el xgl para andar requiere soporte a instrucciones SSE de 64 bits (imagino que mi pc Duron no lo tiene), alguien podria ayudarme :'(

  10. 71
    jorge Says:

    Excelente articulo compadre esta muy bien explicado gracias por publicarlo

  11. 70
    Anyulled Says:

    Wow, excelente articulo, esta y muchas otras ventajas de linux sobre otros sistemas, me han hecho decidirme por este maravilloso sistema operativo.
    Por tanto, me gustaría saber cual distribución de linux me acomoda, soy un diseñador grafico, webmaster, con una intel 3.0 ghz ht, 80 gb de disco duro y una ram de 500 mb DDR2 (en vias de expandirla por lo menos a 1gb) y una tarjeta nvidia geforce 5200 de 512mb.

    Mi pregunta es:¿podrían darme instrucciones para descargar la distribución de linux que mejor se adapta a mis necesidades, y que pasos debo realizar para implementar el xgl con el compiz o en su defecto byrle?
    Saludos y muchas gracias por su colaboración

  12. 69
    ssh8 Says:

    En el encuentro linux me doraron la pildora con ubuntu, xgl y sus bondades, pero no he podido hecharlo a nadar, creo que es por el renderizado ya que despues del comando < # glxinfo | grep direct> el resultado es eso me tiene pegado

  13. 68
    Franco Says:

    Miguel, necesitas especificar bien cual es tu tarjeta de video para poder saber si corre o no

  14. 67
    miguel (otra vez) Says:

    hola, realmente necesito saber si mi pc es compatible con el xgl kororaa, asi puedo comprarme una placa 3d de 64 mb que me ofrecieron bastante barato…

  15. 66
    miguel Says:

    hola, necesito saber si el xgl kororaa puede correr en una pc amd duron 900 mhz con 256 ram y placa de video onboard. ademas necesito saber que placa puede ser compatible con mi maquina. muchisimas gracias, muy bueno el blog. chau

  16. 65
    miguel Says:

    esta espectacular donde lo puedo adquirir
    y que capacidad de memoria ram se nesecita y que tipode procesador nesecita tambien.

  17. 64
    Alberto Ferrer Says:

    Creo que hay una mas la cual nadie nombro…Hay muchas empresas y desarrolladores que se oponen de cierto modo a XGL, ya que hay que migrar miles y miles de lineas de código para que hagan choluladas y no tiren al aire «No anda tu aplicación en mi computadora», cito algunas:

    Zend Studio
    Sun (Java)
    Y todas las java app’s en si.

    Hay otras aplicaciones GTK y QT que tienen problemas tambien..

    Ahora lo que veo es que ningún desarrollador de X piensa en los problemas que generan.

  18. 63
    fernando Says:

    buenas me parece buensimo el reporte, pero tengo una duda, resulta q instalo fedora core 5 en un atlon xp 64 de 768mb de ram y cuando termina de instalar con los 5 cds en vez de iniciar en modo grafico me inicia en modo txt, hay alguna manera de solucionar ese problema, por que la verdad no lo entiendo.
    voy a aclarar un poco el tema, cuando pide q me loguee con el usuario root me tira un error de x server? alguien sabe si es por la placa de video o algo similar, tengo una gforce fx5200, no se q problemas puede haber.
    Agradeceria a algun alma caritativa q me diera una mano , ahi dejo mi mail, por q la verdad voy por la 5ta vez q lo instalo y no encuentro el problema o no me doy cuenta
    miles de gracias
    Fernando **Argentina**

  19. 62
    Franco Says:

    Mas que nada una tarjeta de video con soporte 3D decente. He visto Xgl con una nvidia tnt32 y funciona bien. Personalmente uso aiglx con una intel 855 de 32MB y tambien funciona bien (pero no mejor que la nvidia).
    Al menos no deberias tener problema con nvidia e intel, con ati quizas un poco de suerte, el resto de las tarjetas no lo se.

  20. 61
    leo Says:

    estuvo muy bueno el articulo cuales son los requerimientos minimos para un pc

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