Red Hat ha anunciado a través de las listas de correo del kernel Linux la creación de Nova, un nuevo driver dirigido a las gráficas de NVIDIA y que aspira a suceder a Nouveau. Como Nova acaba de ser anunciado, todavía queda todo el trabajo por delante para verlo en producción, y eso si Red Hat consigue llevarlo a puerto. Las intenciones en torno a él son escribirlo en Rust, que solo funcione con el firmware GSP y reducir con su diseño la complejidad que arrastra Nouveau.
Danilo Krummich, la persona que ha anunciado la creación de Nova, ha explicado sobre Nouveau que su arquitectura histórica, “especialmente en torno a nvif/nvkm, es bastante complicada e inflexible y requiere una revisión importante para resolver ciertos problemas (como el bloqueo de la jerarquía en el código VMM/MMU para VM_BIND que actualmente se está resolviendo con una solución alternativa). En segundo lugar, con un controlador que solo funciona sobre GSP no sería necesario mantener la compatibilidad con el código anterior a GSP”.
Sobre la elección de Rust como lenguaje, nos encontramos con una historia repetida muchas veces: la seguridad que ofrece a nivel de la memoria, a lo cual se suma la intención de darle más protagonismo dentro de Linux. Este enfoque pretende proporcionar un mejor mantenimiento y un impulso para que más personas se involucren en el desarrollo.
Y continuando con más cosas relacionadas con la elección Rust, los responsables de Nova se han encontrado con el problema de la falta de abstracciones del binding de C para la infraestructura integral del kernel Linux, por lo que de momento están recurriendo a árboles downstream que al menos tienen muchas de dichas abstracciones. Viendo que Nova es un desarrollo prácticamente en fase inicial, esto no es algo que en un principio deba preocupar, más que nada porque debido a esa circunstancia hay cosas que habrá que adaptar.
Sobre las aspiraciones de suceder a Nouveau, hay que tener en cuenta que el firmware GSP fue introducido en la generación Turing de gráficas de NVIDIA (RTX 20 y GTX 16), por lo que Nova estaría centrado en las generaciones de GPU más recientes. Esto traería como consecuencia que Nouveau y Nova convivirían, con el primero estando más centrado en modelos antiguos y el segundo en los más recientes.
La situación que podríamos ver con Nouveau y Nova se da en AMD, ya que AMDGPU está asentado desde hace tiempo y soporta en estos momentos un buen puñado de generaciones de gráficas Radeon, pero las más antiguas, sobre todo las previas a la aparición de la arquitectura GCN, usan el viejo driver Radeon (sí, se llama igual que la división de gráficas), el cual es semioficial, no cuenta con soporte de Vulkan y está más centrado en soportar un escritorio que en en exprimir la GPU, por lo que no es muy ideal para jugar salvo a títulos que usan OpenGL y no tengan una carga gráfica elevada.
En resumidas cuentas, Nova es en estos momentos poco más que una promesa, pero puede abrir la puerta a mejorar el soporte para las generaciones de gráficas más recientes de NVIDIA. Sin embargo, que nadie espere mucho más aparte de soporte para escritorio y en el mejor de los casos ciertos videojuegos, y aquí entraríamos en si este nuevo driver para el kernel Linux soportará NVK, cosa que por ahora parece que sí, pero afirmar algo así en estos momentos es demasiado precipitado.