NVK ya está listo para su uso en general y totalmente compatible con Vulkan 1.3
En el pasado mes de octubre hablamos aquí en el blog sobre el controlador NVK, un controlador de código abierto para Mesa que implementa la API de gráficos Vulkan para tarjetas gráficas NVIDIA en el cual ha estado trabajando Collabora desde cero utilizando archivos de encabezado oficiales y módulos de kernel abiertos publicados por NVIDIA.
Durante su desarrollo NVK tuvo la etiqueta de «experimental» y ahora, en noticias más recientes Collabora ha anunciado que NVK ha pasado a ser estable y recomendado para uso en general ya que se ha probado su total compatibilidad con la especificación Vulkan 1.3. Este controlador ha superado exitosamente todas las pruebas de CTS (Khronos Conformance Test Suite) y está incluido en la lista de controladores certificados.
La certificación abarca las GPU NVIDIA basadas en microarquitecturas Turing, Ampere y Ada, incluyendo desde las series GeForce GTX 16xx a RTX 4xxx y RTX 4000, RTX A2000 a 6000. Estas pruebas se realizaron en entornos con kernel Linux 6.5 y 6.8rc1.
Se menciona que el obtener el certificado oficialmente declara la compatibilidad con los estándares gráficos y permite el uso de las marcas comerciales Khronos asociadas. Los cambios ya han sido incorporados en el código base de Mesa y estarán disponibles en la versión Mesa 24.1.
Además de los avances en NVK, también se han realizado mejoras significativas en el soporte OpenGL para tarjetas de video NVIDIA. Mesa ha adoptado un cambio que permite el uso del controlador Zink para brindar soporte para OpenGL 4.6 en sistemas con nuevas series de tarjetas de video NVIDIA, que podrían experimentar problemas con el controlador OpenGL estándar Nouveau (NVC0).
Hemos trabajado arduamente durante los últimos meses para terminar los últimos bits necesarios para que DXVK ahora se ejecute de manera inmediata en Mesa ascendente. No se garantiza que todos los juegos de D3D11 funcionen (habrá errores), pero todos los requisitos básicos están ahí. Estamos trabajando activamente en las piezas restantes para admitir la emulación D3D12 a través de VKD3D-Proton. Ya hay mucho hecho o en progreso, pero todavía faltan algunas piezas, así que no esperes que los juegos D3D12 funcionen todavía.
Estos cambios en Mesa también abren la posibilidad de utilizar Zink para admitir OpenGL en otros controladores como una alternativa para GPU que no sean compatibles con los controladores OpenGL nativos de Mesa. Por ejemplo, se está utilizando un enfoque similar para proporcionar soporte OpenGL en el controlador freedreno para la GPU Qualcomm Adreno 700 y el controlador powervr para la GPU Imagination PowerVR basada en la microarquitectura Rogue.
En la próxima versión de Mesa, el controlador Zink se habilitará de forma predeterminada durante la compilación. El rendimiento de Zink es comparable al de las implementaciones nativas de OpenGL, lo que hace posible centrarse en el soporte de alta calidad para la API de Vulkan en lugar de mantener controladores OpenGL individuales.
Si bien no hay planes para eliminar el antiguo controlador Nouveau OpenGL, la combinación Zink + NVK demuestra un mayor rendimiento en muchas pruebas. En la etapa actual de desarrollo, esta combinación permite alcanzar un rendimiento de 60 FPS y más en los nuevos modelos de GPU, aunque aún hay áreas no optimizadas que se resolverán con el tiempo.
Por otra parte, se menciona que se está trabajando en estabilizar el funcionamiento de la capa DXVK sobre el controlador NVK, que proporciona una implementación de Direct3D 9, 10 y 11 mediante la traducción de llamadas a la API de Vulkan. Aunque aún no se garantiza que todos los juegos D3D11 funcionen con la combinación NVK+DXVK no modificada de Mesa, se están eliminando gradualmente los defectos identificados. Asimismo, se está desarrollando la conexión NVK con VKD3D-Proton para brindar soporte para D3D12, aunque su estado aún está en desarrollo y requiere implementar algunas capacidades faltantes.
Finalmente, cabe mencionar que el controlador ya está incluido en Mesa, y los cambios necesarios en la API del controlador Nouveau DRM están incluidos desde la versión del kernel de Linux 6.6. Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.