
La comunidad Linux lleva años soñando con un controlador libre y moderno para tarjetas gráficas NVIDIA. Uno que no dependa de componentes privativos, que aproveche el hardware reciente y que no haga suspirar al intentar arrancar un entorno gráfico sin blobs cerrados. Hoy, esa esperanza tiene nombre: NOVA.
Con cada versión del kernel, ese sueño parece un poco más real. Y con Linux 6.17, estamos viendo avances importantes. No es el final del camino, pero sí una señal clara de que el rumbo es el correcto.
NOVA: un nuevo comienzo, un nuevo enfoque
Hace ya algunas versiones, en Linux 6.15, se sentaron las bases. Se incorporó el código inicial de NOVA, una suerte de sucesor espiritual y técnico del veterano Nouveau, el controlador libre que durante años ha intentado, con limitaciones, ofrecernos una alternativa a los drivers propietarios de NVIDIA.
Pero NOVA es distinto. Para empezar, está escrito completamente en Rust, el lenguaje que tantos desarrolladores adoran por su seguridad, su solidez y su enfoque moderno. Y lo más importante: está diseñado desde cero para trabajar con las GPUs NVIDIA Turing y posteriores, utilizando su arquitectura GSP (GPU System Processor). Esto es clave porque permite prescindir de muchos componentes privativos que antes eran imprescindibles.
Qué trae de nuevo NOVA en Linux 6.17
Aunque todavía no podemos decir que esté listo para el usuario final, lo cierto es que NOVA ha avanzado bastante en esta nueva versión. El código enviado a DRM-Next la semana pasada ha traído consigo una avalancha de mejoras. Algunas son visibles a nivel de infraestructura, otras son pasos necesarios para que, algún día, encendamos nuestro sistema y veamos todo funcionar… sin necesidad de instalar el driver propietario.
Cambios importantes que merece la pena destacar
En el terreno de DMA (Acceso Directo a Memoria)
Puede parecer técnico (y lo es), pero aquí se está haciendo mucho trabajo esencial:
-
Se han refinado nombres, limpiado funciones y mejorado el manejo de errores.
-
Las macros read!() y write!() ahora devuelven resultados que se pueden gestionar, lo cual es una mejora importante.
-
Nuevas funciones como as_slice() y dma_handle_with_offset() hacen que todo sea más flexible y menos propenso a errores.
-
Se exponen propiedades internas como count() y size() que permitirán un mejor control de memoria.
Todo esto hace que el controlador sea más robusto, más claro… y sobre todo, más preparado para crecer.
En el núcleo del controlador: nova-core
Aquí es donde empieza a latir el corazón de NOVA. Y sí, se nota que el trabajo va en serio:
-
Se han mejorado macros para manejar registros de hardware.
-
Se han añadido herramientas para gestionar retardos y esperas, vitales cuando se habla con dispositivos físicos.
-
Se implementaron abstracciones DMA personalizadas, fundamentales para manejar cómo la GPU accede a la memoria.
Y no solo eso:
-
Se añadió un analizador de VBIOS, búsqueda de tablas PMU y extracción de firmware.
-
Ya se puede cargar código directamente en el GSP, algo esencial para la inicialización de GPUs modernas.
-
Se está avanzando con el soporte para Falcon, el microcontrolador interno de NVIDIA, incluyendo variantes específicas como Ampere.
¿El resultado? Un controlador que ya empieza a parecerse, aunque sea de lejos, a algo funcional.
Documentación técnica… y tareas pendientes
No todo es código. También se ha escrito documentación valiosa: sobre el diseño del VBIOS, cómo funciona la inicialización del dispositivo, y cómo se organizan componentes internos como Fwsec o el Falcon. Esto es oro para quienes quieran entender cómo funciona todo esto por dentro o incluso contribuir.
Y, sí, también hay una lista de tareas pendientes… porque aún queda mucho por hacer.
Rust y DRM: una relación que crece
Otro de los aspectos interesantes es que NOVA no solo construye su propio futuro: también está ayudando a que Rust gane terreno dentro del kernel de Linux, especialmente en el subsistema gráfico (DRM). Esta versión incluye:
-
Exposición del error ETIMEDOUT, útil para depurar tiempos de espera.
-
Nuevas constantes como SZ_2G para facilitar el manejo de grandes bloques de memoria.
Pasito a pasito, Rust se está consolidando como una herramienta viable dentro del corazón del kernel.
Alexandre Courbot: un nombre que debes recordar
No se puede hablar de NOVA sin mencionar a Alexandre Courbot, ingeniero de NVIDIA y ahora co-mantenedor oficial del proyecto. Courbot lleva tiempo trabajando en controladores gráficos de código abierto y su implicación ha sido clave. Su liderazgo no solo aporta conocimiento técnico, sino también el respaldo oficial de NVIDIA, algo que durante años parecía casi imposible.
Su papel es, sin duda, una de las razones por las que muchos desarrolladores están empezando a tomarse a NOVA muy en serio.
NOVA + NVK: un futuro prometedor
Ahora bien, NOVA no funcionará solo. Para ofrecer una experiencia gráfica moderna, se apoyará en NVK, el controlador Vulkan de código abierto que también está creciendo dentro de Mesa. Juntos, NOVA y NVK podrían, en un futuro no tan lejano, darnos una alternativa libre, moderna y funcional para quienes usamos tarjetas NVIDIA en Linux.
Sí, todavía no está listo. Pero ahora, por primera vez en mucho tiempo, el futuro parece real. Y brillante.
NOVA no es solo otro controlador más. Es una declaración de intenciones. Es la prueba de que sí se puede construir un futuro mejor para el soporte gráfico en Linux. Que se puede escribir código seguro, moderno, eficiente… y libre. Todavía queda camino por recorrer, pero paso a paso —versión a versión—, ese camino se está pavimentando con trabajo sólido y bien dirigido.
Fuente: Phoronix
Añadir comentario
Comentarios