NVIDIA publica su driver para Linux como código abierto
La relación de NVIDIA con Linux nunca ha sido buena. La compañía, líder en el procesamiento de gráficos y en sectores como la inteligencia artificial, ha tendido a chocar con prácticamente todo el mundo por su constante negativa a adoptar los estándares. Sin embargo, la situación podría empezar a dar un giro de 180 grados, ya que NVIDIA ha publicado un driver Open Source oficial para Linux. Sí, tal y como lo estáis leyendo, pero aun así sería preferible contener la euforia.
NVIDIA ha ofrecido durante dos décadas su soporte para Linux a través de un driver privativo que ha desarrollado de forma que compartiera la mayor cantidad de código posible entre todos los sistemas operativos soportados, lo que también abarca Windows, Solaris y el espectro BSD. Dicho driver siempre ha estado muy atado a X11 y en los últimos años ha sido víctima de las malas decisiones de la compañía, unas malas decisiones que dentro del escritorio Linux la han situado como la última en términos de calidad de soporte, sobre todo cuando hablamos de Wayland.
Profundizando en el acontecimiento que nos ocupa, lo realizado por NVIDIA ha sido publicar sus módulos del kernel, comenzando con un driver llamado R515, como código abierto bajo una licencia dual. En un principio se emplea MIT, pero “cuando se enlaza para formar un módulo del kernel de Linux” esta queda convertida en una dual bajo GPLv2 estándar y MIT. De esta manera se consigue evitar cualquier tipo de conflicto con la línea oficial del kernel.
NVIDIA ha ido dando pequeños pasos hacia un modelo más afín al Open Source y compatible con la línea oficial de Linux, pero sus esfuerzos hasta ahora se han centrado sobre todo en sus soluciones basadas en ARM. Con este reciente movimiento, los usuarios de equipos x86 con las típicas gráficas NVIDIA empleadas para videojuegos y estaciones de trabajo deberían de tener un funcionamiento (y en este caso solo su arranque) out of the box como el que ofrecen Intel y AMD.
Pero tras mencionar las gráficas para escritorio, nos encontramos con la primera piedra en el camino al estar el nuevo driver limitado, al menos por ahora, a las generaciones Turing y Ampere (GTX 16, RTX 20 y RTX 30). Como consecuencia, para Pascal, Maxwell y otras generaciones anteriores habrá que seguir empleando el tradicional blob oficial o Nouveau, así que la mayoría de los usuarios Linux que utilizan una gráfica de NVIDIA no van a poder usar el nuevo driver Open Source, o al menos eso es lo que se puede deducir viendo los resultados de la encuesta de Steam.
¿Un modelo similar al de AMD?
Parece que el modelo adoptado por NVIDIA está más cerca de lo que hace AMD con AMDGPU que de Intel con sus integradas (con las futuras dedicadas veremos qué termina pasando cuando todo esté desplegado).
AMDGPU es un driver Open Source, sí, pero se apoya en un firmware privativo. NVIDIA apunta a ir en una dirección similar con GPU System Processor (GSP), un firmware solo disponible en formato binario que se carga en tiempo de ejecución. En consecuencia, las distribuciones que emplean Linux-libre podrían encontrarse con limitaciones.
El soporte de OpenGL, Vulkan, OpenCL y CUDA seguirá siendo privativo
Desgraciadamente solo podemos hablar de la apertura de los módulos del kernel Linux que permiten poner en funcionamiento una gráfica de NVIDIA, ya que los drivers del espacio de usuario, los soportes OpenGL, Vulkan, OpenCL y CUDA para que se entienda, seguirán siendo privativos.
Este es un punto es muy importante incluso para los usuarios de escritorio debido a que la aceleración por hardware es algo común en Linux desde hace algo más de una década. El uso de OpenGL y Vulkan se ha vuelto tan habitual que todo el mundo lo da por hecho y espera disponer de ello con facilidad.
Sin soporte de OpenGL y Vulkan es imposible ejecutar la inmensa mayoría de los videojuegos actuales, incluidos muchos de los que están publicados como software libre. La carencia de soporte de OpenGL también supone una limitación a la hora de tener una experiencia plena con escritorios como GNOME y KDE Plasma, así que uno ya puede hacerse una idea de lo normalizado que está su uso en el escritorio Linux desde hace tiempo. OpenCL y CUDA, por su parte, están más orientadas a sectores profesionales en los que se trabaja con soluciones como Blender y no tanto al usuario común.
Por si no había quedado claro, lo liberado por NVIDIA abarca solo la parte que atañe al kernel Linux y que permite hacer funcionar (algunas de) sus GPU. Sin duda es un avance importante, pero insuficiente al guardarse la compañía demasiadas cartas viendo la situación actual de la industria del procesamiento de gráficos (incluso dentro del software libre).
Habrá que ver si lo publicado como Open Source allana el camino para la creación de drivers alternativos de OpenGL (o reimplementar el usado por Nouveau) y Vulkan que también sean de código abierto y ofrezcan un buen rendimiento. Teniendo en cuenta que RADV es oficialmente un proyecto comunitario y no un producto de AMD y que es uno de los motores de la Steam Deck, igual en un futuro nos llevamos una sorpresa.
¿Cuál es el estado en torno a Linux y las distribuciones?
Gracias al uso de licencias compatibles, los módulos de código abierto liberados por NVIDIA pueden ser reempaquetados y redistribuidos por las distribuciones sin ninguna restricción. El gigante verde ha dicho que ha trabajado junto a Red Hat, Canonical y SUSE “para mejorar los modelos de empaquetado, implementación y soporte para nuestros clientes mutuos”.
Por parte de Canonical y SUSE se están moviendo los hilos para incorporar cuanto antes los módulos a los repositorios de Ubuntu 22.04 LTS y SUSE Linux Enterprise 15 SP4, mientras que desde Red Hat se han limitado a decir que esperan “llevar estas capacidades a nuestros clientes y mejorar la interoperabilidad con el hardware de NVIDIA”. Obviamente, no debería de haber problemas para el resto de distribuciones salvo posiblemente las que funcionan con Linux-libre.
Debido a que NVIDIA ha desarrollado sus drivers con la intención de compartir la mayor cantidad de código posible en todos los sistemas operativos soportados, el driver R515 no se ajusta a las convenciones de diseño de Linux, así que no será candidato para el upstream del kernel. Dicho con otras palabras, que de momento el driver Open Source no será incluido en el kernel Linux debido a que no cumple con las convenciones de diseño de este último. A pesar de ello, la compañía tiene la intención de colaborar con la comunidad responsable del kernel Linux, Canonical, Red Hat y SUSE para corregir eso.
Por otro lado tenemos a Nouveau, el patito feo de los controladores gráficos de código abierto si solo tenemos en cuenta a los tres grandes del espectro x86 (siendo realistas, a día de hoy es una broma al lado de lo que ofrecen Intel y AMD). En teoría Nouveau debería de poder beneficiarse tanto del código publicado como del firmware GSP, pero el proceso podría requerir de tiempo.
En cuanto al estado actual de los módulos, NVIDIA ha dicho que son opcionales y están listos para producción para las GPU empleadas en centros de datos, mientras que los considera en fase alfa para los modelos de gráficas GeForce y las orientadas a estaciones de trabajo. Su instalación puede hacerse a través de los repositorios de las distribuciones que lo incluyan o del instalador oficial de la compañía añadiendo un parámetro adicional a la hora de ejecutarlo.
Un detalle importante es que, en comparación con el driver privativo, R515 ya cuenta con soporte de DMA-BUF, así que tiene los cimientos para tener en un futuro un buen soporte para la compartición y la captura de la pantalla desde una sesión de Wayland.
NVIDIA da un importante paso hacia adelante, pero insuficiente
No se puede negar que la liberación del driver R515 por parte de NVIDIA es un paso importante para Linux, pero el hecho de que se haya reservado la parte del espacio del usuario (OpenGL, Vulkan, OpenCL y CUDA) es un tanto decepcionante.
Veremos si en un futuro el gigante verde se anima a liberar los drivers de OpenGL y Vulkan para al menos ofrecer un buen soporte para los usuarios finales que emplean sus equipos para tareas de oficina, gaming y otras que no requieran de tener una gráfica potente (como por ejemplo desarrollo web).