Archivo

Posts Tagged ‘Controladores’

El escritorio multimedia en Linux – Drivers de Video

20 mayo 2010 Los comentarios están cerrados

En los últimos años, el ecosistema Linux ha abarcado rápidamente equipos personales como PCs, netbook’s, smartphones, etc. Estas tecnologías abiertas han permitido a empresas como Canonical y Google ofrecer excelentes productos como Ubuntu 10.04 y Android respectivamente. Pero ¿Hasta donde ha llegado el escritorio Linux? ¿Ya es posible tener una experiencia multimedia completa? ¿Qué más falta por hacer?.

Durante algún tiempo Linux fue desarrollado principalmente pensando en grandes equipos de cómputo como servidores y supercomputadoras, además de pequeños sistemas embebidos como routers, electrodomésticos, etc. Y aunque hoy en día Linux domina todos estos mercados, existe un componente que no es necesario para ninguna de estas aplicaciones y que durante mucho tiempo no fue relevante para Linux: el entorno gráfico.

Cuando usas una computadora personal o un teléfono celular, la pantalla gráfica es uno de los componentes más importantes para obtener información de tu equipo. Las interfaces gráficas actuales son sumamente amigables, utilizando una serie de elementos como botones, menús, ventanas etc., así como la presencia de imágenes, audio, video y entornos 3D interactivos, han enriquecido enormemente la funcionalidad de estos sistemas.

Durante muchos años, el entorno gráfico y el sistema de audio han sido los puntos débiles de los sistemas Linux. Anteriormente era común ver a los usuarios correr despavoridos al ver que el sistema fallaba al iniciar el modo gráfico, el audio no se escuchaba, o su laptop se calentaba demasiado. Y aunque hoy en día estos problemas se han logrado resolver en su mayoría, aún se llegan a presentar.

Estos problemas están asociados con tres componentes: los drivers de video, el servidor X y el sistema de audio.

Drivers de video

Linux vs. drivers propietarios

La naturaleza abierta del kernel de Linux (GPL) – la cual lo ha impulsado enormemente –  solo permite que drivers de software libre sean integrados y distribuidos junto con éste. Esto significa que aquellos que son propietarios no pueden ser incluidos en las distribuciones de Linux y deben ser instalados y configurados por el usuario final. Afortunadamente, algunas distribuciones como Ubuntu ofrecen una forma fácil y sencilla de instalarlos.

Actualmente Nvidia, ATI (AMD), S3 (VIA) (e Intel en ocasiones) ofrecen drivers propietarios para Linux, mientras algunas de estas empresas ofrecen también drivers open-source, Nvidia y S3 únicamente proveen drivers propietarios. Finalmente estos drivers en ocasiones no pueden aprovechar los últimos avances que se dan en el kernel (como KMS) o en el servidor X, debido a su naturaleza propietaria.

Drivers propietarios

Debido a que muy pocos clientes usaban Linux en sistemas de escritorio, los fabricantes de tarjetas de video ofrecían un soporte muy pobre (o ninguno) de drivers para Linux, al mismo tiempo que no proveían información del hardware o de sus drivers que permitiera a los programadores arreglar o desarrollar drivers alternativos. En ocasiones usar el driver propietario era la única opción  y muy frecuentemente se encontraban en un estado muy pobre. Para los dueños de estas tarjetas de video usar Linux simplemente no era una opción.

Afortunadamente en los últimos años el soporte de drivers propietarios a mejorado considerablemente, aquellos provistos por Nvidia son considerablemente buenos, ofreciendo un gran soporte para lo último en tecnología de gráficos en Linux. El soporte de ATI ha ido mejorando lentamente, aunque aún falta un buen camino por recorrer. En general los drivers propietarios en Linux son casi tan buenos como los de otros sistemas operativos.

Drivers de código abierto.

El kernel de Linux no fué diseñado originalmente para trabajar con entornos gráficos avanzados, sin embargo ha ido evolucionando poco a poco en esta dirección, algunos de los eventos más importantes han sido:

  • Diciembre 2008, con la versión 2.6.28 comienza una lenta integración de componentes para ofrecer un mejor soporte de gráficos (KMS, GEM), los chips de video de Intel son los primeros en tomar ventaja de estas tecnologías.
  • Diciembre 2008, ATI comienza la liberación de documentación que permitirá el desarrollo de drivers open-source con aceleración 2D y 3D para sus tarjetas de video.
  • Septiembre 2009, en el kernel 2.6.31 se integra soporte inicial para algunos chips de video de ATI.
  • Diciembre 2009, kernel 2.6.32, se agrega soporte de aceleración 2D y 3D para todos los chips de ATI.
  • Febrero 2010, con el kernel 2.6.33 se integran drivers open-source con soporte 2D y 3D para tarjetas de video Nvidia desarrollados por el proyecto nouveau.

Hoy en día Intel y ATI son los mayores fabricantes de chips de video que ofrecen documentación sobre estos, permitiendo el rápido desarrollo de drivers open-source. Actualmente el kernel de Linux integra drivers para la mayoría de las tarjetas de video disponibles en el mercado, en su mayoría ofreciendo soporte de aceleración 2D y 3D.

Apesar de estos grandes avances, los drivers de código abierto aún no pueden competir con drivers propietarios en algunas áreas como aceleración 3D y aceleración de codecs de video. Aún carecen de soporte de APIs relativamente nuevos como OpenGL 3.0, 3.2 o 4.0. Pero tal vez la mayor limitación actual en drivers open-source, sea el alto consumo de energía que presentan algunos de estos, afectando principalmente equipos portátiles, en muchos casos por la falta de una administración de energía o la falta de aceleración de códecs de video. Se espera que la administración de energía de los chips de Intel y ATI mejore en las versiones 2.6.34 y 2.6.35 del kernel.

Gallium3D y el futuro de los drivers de video en Linux

Las tarjetas de video actuales ofrecen una gran cantidad de funcionalidades:

  • Aceleración 2D (EXA, Textured Xv)
  • Aceleración 3D (OpenGL)
  • Aceleración general (OpenCL)
  • Aceleración de códecs de video (XvMC, VDPAU, VA-API)
  • Administración de consumo de energía (ACPI,..)

Desarrollar un driver por cada chip de video que cubra todas estas necesidades/especificaciones es realmente un arduo trabajo, incluso los fabricantes de hardware mantienen un driver común para toda una familia de chips. Esta gran cantidad de trabajo también se ve reflejada en el  retraso de los drivers open-source. Sería muy bueno encontrar una forma de hacer más eficiente el trabajo para cada uno de los equipos que desarrollan drivers para el kernel.

Gallium3D es la mayor apuesta de la comunidad de software libre para lograr drivers open-source competitivos. Uno de sus principales objetivos es permitir que programadores de drivers compartan la mayor cantidad de software posible, reduciendo la necesitdad de programar una y otra vez la misma funcionalidad por cada driver. Pero ¿Cómo funciona Gallium3D? La arquitectura base se puede ver en el siguiente diagrama:

Básicamente se puede pensar en Gallium3D como una capa intermedia entre el API y el driver de video. Cada implementación de un API sobre Gallium3D es llamada state tracker, Los state trackers pueden ser APIs 3D como OpenGL o incluso Direct3D, pero también es posible tener otro tipo de API’s por ejemplo API’s de aceleración 2D como OpenVG o aceleración GPGPU como OpenCL. Una vez que el state tracker esta listo, todos los drivers desarrollados para Gallium3D (que cubran ciertos requisitos) pueden tomar ventaja de este. De esta forma se puede reducir el tiempo de programación para cada driver, acelerando el desarrollo de los mismos.

La versión 7.5 de Mesa3D (Julio 2009) fué la primera en incluir Gallium3D, en Mayo 2009 se incluyó el state tracker OpenVG, permitiendo aceleración de SVG y Flash. Actualmente programadores de drivers de Intel, ATI y nouveau están enfocando sus esfuerzos en Gallium3D. Se han hecho diversas propuestas para la creacion de state trackers en Gallium3d, incluyendo OpenGL 3.2 y Cairo (usado en gtk+).

Los drivers de video juegan un papel muy importante en equipos de computo personal, tanto en tareas comunes como navegar en Internet, editar textos o ver videos, así como en el uso de aplicaciones avanzadas para edición, animación, ingenieria, videojuegos, etc. Linux no podrá competir con otros sistemas operativos en este mercado sino cuenta con los drivers de video adecuados.

Puedes seguir los avances de Gallium3D y los drivers de video en Linux en los siguientes links:

GalliumStatus

Radeon Feature Matrix (drivers para chips ATI)

Nouveau Feature Matrix (drivers para chips Nvidia)

En la siguiente sección revisaré el Servidor X y el sistema de sonido en Linux.