Cómo funciona el desarrollo de los drivers de NVIDIA para Linux

Hace un tiempo atrás, el sitio especializado Phoronix comenzó a recolectar preguntas que sus lectores quisieran realizar a NVIDIA sobre su soporte para el sistema operativo Linux.  Las preguntas fueron repondidas por Andy Ritger, quien lidera el equipo de drivers gráficos NVIDIA para UNIX en GPU’s de estaciones de trabajo, escritorio y netbooks.

Sorprendentemente, Andy fue bastante completo y directo en sus respuestas, lo que produjo una entrevista imperdible para todo aquel que quiera conocer el punto de vista de NVIDIA respecto a la plataforma Linux y otros sistemas Unix como Solaris y FreeBSD.

En este artículo publicamos un extracto de lo que nos pareció más interesante.

Andy dice que la mayoría de los ingenieros trabajando en el equipo de Linux usan emacs y/o vim en forma diaria, el código fuente se mantiene a través de Perforce (como en Google) aunque algunos de ellos usan git en forma personal, antes de aplicar los cambios en Perforce.

Cuando llega la hora de poner a prueba el driver, usan un conjunto interno de tests que se encarga de asegurar una correcta implementación de OpenGL. Además usan algunas aplicaciones como Maya, Viewperf, Unigine Tropics, ETQW, Doom 3, Quake 3 y por su puesto, Compiz.

Más del 90% del código es multiplataforma

Se estima que más del 90% del código que está en el driver para Linux es el mismo que se usa para el resto de las plataformas. La compañía ha realizado un esfuerzo para tener una arquitectura en donde gran parte del código sea independiente de la plataforma, lo que hace que el código específico sea muy reducido.

Tanto así, que el módulo que se carga a nivel de kernel es casi completamente independiente del sistema operativo subyacente. La mayor parte del código es el mismo para Windows XP, Vista, 7, MacOSX, Solaris, FreeBSD y Linux.  De hecho, el binario nv-kernel.o es el mismo para Solaris, FreeBSD y Linux. La única parte que es específica para cada sistema es la que tiene que interactuar finalmente con el kernel y esa fracción es bastante pequeña.

En la implementación de OpenGL, la única parte que cambia es la que tiene que interactuar con el sistema de ventanas (WGL en Windows y GLX en Unix).  Por el lado del código que interactúa con el sistema gráfico X, obviamente es más específico de Unix, aunque no se comparte mucho entre los distintos sistemas. Finalmente, el driver para acelerar la decodificación de video por hardware (VDPAU) usa gran parte del código que fue escrito para Windows (PureVideo).

El segmento de mercado Linux para NVIDIA

Para NVIDIA, el mercado Linux siempre ha sido bastante fuerte, y éste se encuentra principalmente en estaciones de trabajo de gama alta para segmentos específicos de mercado, como por ejemplo la industria energética, automotriz y de producción cinematográfica.  Es aquí en donde el impacto de Linux como plataforma para su negocio es medible para NVIDIA.

Aunque no se tienen porcentajes concretos, del total de las estaciones de trabajo de gama alta que se ocupan para visualización, prácticamente la mitad son Linux, y en la creación de contenido digital, como ya se sabe, es principalmente Linux.

Las estaciones de trabajo 3D con Linux son una proporción importante para NVIDIA y es por ahí en donde se han explorado nuevas tecnologías, como por ejemplo el caso de CUDA, en donde la proporción de usuarios con Linux es alta.

Desde el punto de vista de las descargas del driver desde su sitio web, las cifras no reflejan esta realidad, ya que respecto al driver para Windows, las descargas del driver de Linux son sólo un 0,5%.  Como muchos usuarios obtienen en driver a través de la misma distribución o en el caso de los segmentos industriales, a través de instalaciones OEM, se sabe que este porcentaje no es muy representativo, y medir de esta forma siempre ha sido un desafío.

Abrir el código fuente del driver: imposible

Abrir el código fuente del driver de NVIDIA es algo que probablemente nunca sucederá, y Andy indica tres razones para ello:

  • La competencia en otras plataformas, ya que más del 90% es código compartido con esas plataformas también.  Las piezas específicas para Linux son tan pocas y tienen tan poca influencia que no sería práctico liberarlas.
  • Hay propiedad intelectual de NVIDIA que está contenida en el driver y no quieren exponer.
  • La documentación que mantienen está pensada para ser distribuida en forma interna. Si en algún momento quisieran hacer pública esa documentación, requerirían de un esfuerzo monumental para transformar esos documentos en algo que sea entendible por gente externa a la compañía.

X no es un problema, sino que una oportunidad

Mirando hacia adelante, en NVIDIA creen que las oportunidades de crecimiento están en X, no porque sea malo (de hecho la arquitectura es bastante buena), sino porque la evolución del escritorio Linux está sucediendo ahí e involucra tanto a X, drivers, gestores de ventanas y de composición.

Afortunadamente, X está implementado de tal forma que se puede extender con la flexibilidad necesaria para enfrentar los desafíos que impone el escritorio moderno en Linux.

Link: NVIDIA Developer talks openly about Linux support (Phoronix)