El consorcio Khronos, encargado de desarrollar estándares gráficos, ha reconocido la plena compatibilidad del controlador abierto NVK con la especificación Vulkan 1.4 en sistemas con GPU NVIDIA basadas en arquitecturas microarquitectónicas Maxwell (GTX 700/800/900), Pascal (GTX 1000) y Volta (TITAN V). El controlador ha superado todas las pruebas del conjunto CTS (Khronos Conformance Test Suite) y ha sido incluido en la lista de controladores certificados. Obtener la certificación permite declarar oficialmente la compatibilidad con los estándares gráficos y utilizar las marcas comerciales asociadas de Khronos.
A partir de Mesa 25.1, el controlador Vulkan NVK se utilizará por defecto para las GPU NVIDIA Maxwell, Pascal y Volta. En Mesa 25.2, el soporte de OpenGL para las GPU mencionadas se cambiará por defecto del controlador Nouveau a Zink, en combinación con el controlador Vulkan NVK. Zink proporciona una implementación de OpenGL 4.6 sobre Vulkan, permitiendo obtener OpenGL acelerado por hardware en dispositivos que soportan la API Vulkan. El rendimiento de Zink es similar al de las implementaciones nativas de OpenGL.
Anteriormente, la compatibilidad con Vulkan 1.4 en NVK solo se había garantizado para las nuevas GPU NVIDIA basadas en arquitecturas microarquitectónicas Turing (series GeForce GTX 16xx, RTX 20xx y Quadro RTX), Ampere (series GeForce RTX 30xx y RTX A2000/4000/5000/6000) y Ada (series GeForce RTX 4xxx, RTX 4000 SFF, RTX 4xxx/5000/6000 Ada). Se está trabajando para añadir soporte para GPUs basadas en arquitecturas microarquitectónicas Kepler y Fermi en NVK, pero su soporte estará limitado a un máximo de Vulkan 1.2 debido a limitaciones de hardware.
El controlador NVK ha sido creado desde cero por un equipo que incluye a Karol Herbst (desarrollador de Nouveau de Red Hat), David Airlie (mantenedor del subsistema DRM de Red Hat) y Jason/Faith Ekstrand (desarrollador activo de Mesa de Collabora). Al desarrollar el controlador, los programadores utilizaron archivos de encabezado oficiales y módulos de núcleo abiertos publicados por NVIDIA. En el código de NVK, se utilizaron algunas componentes básicas del controlador OpenGL Nouveau, pero debido a las diferencias de nombres en los archivos de encabezado de NVIDIA y los nombres en Nouveau, que se obtuvieron a través de ingeniería inversa, se dificultó la adopción directa del código, y en su mayor parte se tuvo que replantear muchas cosas y desarrollarlas desde cero.
El desarrollo se llevó a cabo teniendo en cuenta la creación de un nuevo controlador Vulkan de referencia para Mesa, cuyo código se podrá utilizar al crear otros controladores. Para esto, al trabajar en el controlador NVK, se intentó aprovechar toda la experiencia existente en el desarrollo de controladores Vulkan, mantener la base de código en óptimas condiciones y minimizar la transferencia de código de otros controladores Vulkan, haciendo lo necesario para un funcionamiento óptimo y de calidad, en lugar de copiar ciegamente cómo se hizo en otros controladores.
Fuente: opennet.ru
