Collabora ha lanzado NVK, un nuevo controlador de código abierto para Mesa que implementa la API de gráficos Vulkan para tarjetas gráficas NVIDIA. El controlador está escrito desde cero utilizando archivos de encabezado oficiales y módulos de kernel abiertos publicados por NVIDIA.
Al desarrollar un nuevo controlador, los componentes básicos del controlador Nouveau OpenGL se usan en algunos lugares, pero debido a las diferencias en los nombres de los archivos de encabezado de NVIDIA y los nombres de ingeniería inversa en Nouveau, el poder reutilizar código es difícil y en su mayor parte fue necesario repensar muchas cosas e implementarlas con cero.
El desarrollo también está en marcha con miras a la creación de un nuevo controlador Vulkan de referencia para Mesa, cuyo código se puede tomar prestado al crear otros controladores.
La compatibilidad con el hardware de NVIDIA en los controladores de código abierto siempre ha faltado un poco. Los controladores nouveau existen, pero a menudo les faltan funciones, tienen errores o simplemente no son compatibles con ciertas tarjetas. Esto se debe a una combinación de factores. A diferencia de los controladores Intel y AMD, la pila de controladores nouveau se ha desarrollado con poca o ninguna documentación oficial o ayuda de NVIDIA. Ocasionalmente brindan pequeños apoyos aquí. Históricamente, se ha centrado principalmente en habilitar nouveau lo suficiente como para que pueda instalar su distribución de Linux, acceder a un navegador web y descargar su pila de controladores patentada.
Para hacer esto, se menciona que durante el trabajo del controlador NVK, se intentó tener en cuenta toda la experiencia disponible en el desarrollo de controladores Vulkan, mantener la base de código en una forma óptima y minimizar la transferencia de código de otros controladores Vulkan, haciendo lo que debería hacerse para un trabajo óptimo y de alta calidad.
El controlador NVK solo ha estado en desarrollo durante unos meses, por lo que su funcionalidad es limitada. El controlador pasa con éxito el 98 % de las pruebas cuando ejecuta el 10 % de las pruebas de Vulkan CTS (Compatibility Test Suite).
En general, la preparación del conductor se estima en un 20-25 % de la funcionalidad de los controladores ANV y RADV. En términos de soporte de hardware, el controlador está actualmente limitado a tarjetas basadas en microarquitecturas Turing y Ampere. Se está trabajando en parches para admitir GPU Kepler, Maxwell y Pascal, pero aún no están listos.
Probablemente, la mayor área de lucha técnica ha sido la conducción adecuada del hardware desde el espacio del kernel. El hardware NVIDIA depende del firmware firmado para todo, desde la visualización hasta la ejecución del trabajo y la administración de energía. Los blobs de firmware que NVIDIA proporcionó en el pasado fueron versiones recortadas que crearon solo para controladores de código abierto.
A largo plazo, se espera que el controlador NVK para tarjetas gráficas NVIDIA alcance un nivel de calidad y funcionalidad similar al controlador RADV para tarjetas AMD. Una vez que el controlador NVK está listo, las bibliotecas compartidas creadas durante su desarrollo se pueden usar para mejorar el controlador Nouveau OpenGL para tarjetas de video NVIDIA.
También se está considerando la posibilidad de usar el proyecto Zink para implementar un controlador OpenGL completo para tarjetas de video NVIDIA que funcione a través de la traducción de llamadas a la API de Vulkan.
A largo plazo, la esperanza es que NVK sea para el hardware de NVIDIA lo que RADV es para el hardware de AMD
Finalmente, para los interesados en el proyecto, se menciona que está siendo desarrollado por un equipo que incluye a Karol Herbst (desarrollador de Nouveau en Red Hat), David Airlie (mantenedor de DRM en Red Hat) y Jason Ekstrand (desarrollador activo de Mesa en Collabora).
En cuanto al código del controlador, deben saber que es de código abierto bajo la licencia MIT. El controlador solo admite GPU basadas en microarquitecturas Turing y Ampere lanzadas desde septiembre de 2018. Si quieres conocer más al respecto, puedes consultar los detalles en el siguiente enlace.