NVIDIA en Linux: llega el soporte de DLSS y XWayland
NVIDIA ha anunciado la publicación en versión beta de su driver 470.42.01 para Linux. A pesar de no ser todavía un lanzamiento estable, apunta a ser el inicio de una revolución con la que la compañía pretende recuperar en un terreno que tradicionalmente ha dominado, pero que también ha descuidado: el de los usuarios domésticos de Linux.
NVIDIA tiene desde hace años muchos intereses metidos en Linux, pero estos siempre han girado en torno a los servidores, la supercomputación y más recientemente la inteligencia artificial. Dentro de este enfoque, los usuarios finales de Linux llevan lidiando desde hace muchísimo tiempo con un driver que no les facilita las cosas, todo por el curioso empecinamiento de la compañía en sus intenciones de imponer una pila gráfica que funciona bajo sus propias condiciones, de manera diferente a la establecida mediante el kernel y Mesa.
Viendo el punto de inflexión que puede suponer el driver 470 de NVIDIA, vamos a dividir el artículo en varias partes para así abarcar de manera clara las novedades más importantes.
DLSS en Linux mediante Proton/Steam Play
Lo primero que destaca del driver 470.42.01 de NVIDIA es DLSS, la archiconocida tecnología de supersampling apoyada en inteligencia artificial que permite mejorar enormemente el rendimiento de los videojuegos. Como ya dijimos en una entrada anterior, NVIDIA ha trabajado con Valve para llevar DLSS a la capa de compatibilidad Proton, soportando primero la API Vulkan y luego los traductores de DirectX a Vulkan (DXVK y VKD3D).
Profundizando un poco en los detalles técnicos, la ejecución de DLSS será posible gracias a que se ha añadido una compilación de NVIDIA NGX para uso en Wine y Proton. “Se ha añadido una nueva biblioteca, nvngx.dll, para permitir el soporte del lado del controlador y ejecutar aplicaciones de Windows que hacen uso de DLSS. Se necesitan cambios en Proton, Wine y otros software de terceros para esta función”.
El soporte de DLSS mediante Vulkan y Proton/Steam Play ya está disponible y en un principio abarca los juegos Doom Eternal, No Man’s Sky y Wolfenstein Yougblood, mientras que el soporte a través de los traductores DXVK (DirectX 9, 10 y 11 a Vulkan) y VKD3D (DirectX 12 a Vulkan) debería de llegar en otoño del presente año.
XWayland acelerado por hardware
La segunda gran novedad del futuro driver (recordemos que está en fase beta) de NVIDIA para Linux es el soporte de XWayland. Después de muchos años de tira y afloja y tras el fracaso de EGLStreams, el gigante verde ha decidido mover ficha para adoptar los estándares y poder ejecutar XWayland acelerado por hardware con OpenGL y Vulkan. Sin embargo, este soporte, que se encuentra en fase inicial, requiere de tener KMS habilitado, una versión específica de XWayland, libxcb 1.13 y egl-wayland 1.1.7.
El hecho de encontrarse en fase inicial hace que no sea capaz de ejecutar la aplicación de configuración de NVIDIA, no cuente con soporte de decodificación por hardware a través de VDPAU, sea incapaz de soportar configuraciones multi-GPU, no haya presencia de Genlock/Frame lock y carezca de renderización del búfer frontal para aplicaciones GLX.
El soporte de NVIDIA para XWayland no está ni mucho menos maduro, pero parece que la compañía tiene la intención de ir corrigiendo los inconvenientes en el futuro inmediato. En cuanto esté maduro los usuarios de la mencionada marca de GPU deberían de poder ejecutar videojuegos (y otras tareas de procesamiento de gráficos 3D) desde una sesión de Wayland con un buen rendimiento (el objetivo es igualar a Xorg).
Mejoras para SteamVR
La adición de las extensiones de Vukan ‘VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT’ y ‘VK_EXT_global_priority’ habilitan el soporte de reproyección asíncroina a partir de la versión 1.18.2 de SteamVR, la herramienta suministrada por la plataforma de Valve que permite al usuario vivir las experiencias de los contenidos de realidad virtual con el hardware de su elección.
Sin embargo, es importante tener en cuenta que la extensión ‘VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT’ solo está soportada a partir de las gráficas de generación Pascal (GTX10 o GTX 1000) y que “las prioridades globales distintas de ‘VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT’ requieren privilegios de root o la capacidad ‘CAP_SYS_NICE’”.
Otras mejoras y novedades de interés
A partir del driver 470.42.01 de NVIDIA para Linux no será necesario inhabilitar el flipping en el modo de “captura directa” de NvFBC para capturar aplicaciones, por lo que G-SYNC puede ahora ser usado de manera simultánea con la captura directa de NvFBC.
Cerramos los apartados de novedades mencionando la adición del soporte de Descarga de la Pantalla de PRIME (PRIME Display Offload) cuando la fuente de la descarga de la pantalla es AMDGPU, de más extensiones de Vulkan y las típicas correcciones de errores que se encuentran en todo software mantenido de forma activa.
Conclusión
Como vemos, el driver 470.42.01 de NVIDIA promete ser el comienzo de un verdadero punto de inflexión para los usuarios domésticos de Linux, que en un futuro podrán usar DLSS con normalidad y podrían empezar a ser capaces de ejecutar las sesiones de Wayland existentes.
El usuario doméstico de Linux nunca ha sido una prioridad para el gigante verde, pero entre la aparición de FidelityFX Super Resolution (anuncio al que NVIDIA respondió llevando DLSS a Proton), el buen rendimiento ofrecido por AMDGPU con los juegos, lo prometedor de las gráficas dedicadas de Intel y el fracaso de EGLStreams, NVIDIA se ha visto forzada a tener que realizar cambios si quería mantenerse fuerte en un sector que tradicionalmente ha dominado a placer.
Terminamos diciendo que la serie 470 del driver de NVIDIA para Linux será la última que ofrecerá soporte para Kepler, así que el correcto aprovechamiento de Wayland en esa generación de gráficas (y en las anteriores seguro) podría depender del desempeño que ofrezca Nouveau, el driver Open Source incluido en el kernel Linux para las GPU del gigante verde.