Continúan llegando buenas noticias para los gamers linuxeros, pues hace unas horas hizo su arribo la nueva versión de la capa de traducción basada en Vulkan, DXVK 3.0. Esta nueva actualización viene cargada de muchas novedades bien interesantes, sobre todo para juegos clásicos D3D8 y D3D9, aunque obviamente también hay mejoras para juegos modernos D3D10 y D3D11.

DXVK 3.0 añade importantes mejoras en la compilación de sombreadores
Uno de los cambios más relevantes que se introdujo en esta nueva actualización son las mejoras en la compilación de sombreadores, gracias a la remoción del código de traducción anterior. Con dicho trabajo se habrían solucionado numerosos problemas que en anteriores versiones resultaban ser prácticamente misión imposible.
Uno de estos problemas era con el rederizado en juegos como Postal: Brain Damaged y Snowrunner los cuales dependen de comportamientos indefinidos, y el código anterior no lograba satisfacer ese requerimiento. También destaca la reducción en el consumo de VRAM en aproximadamente 1 GB al jugar juegos como Overwatch o God of War, puesto que ya no se recurrirá al código traducido de SPIR-V.
Vale destacar que ahora la compilación de sombreados se hace completamente en subprocesos de trabajos y, al no requerir el código traducido de SPIR-V, permitirá cargas de juegos más rápido, así como también una importante reducción en tirones. Otro dato a destacar es que los sombreadores compilados de DXVK 3.0 ahora se almacenan en la caché del disco local, lo cual permite acelerar los tiempos de compilación de sombreados. Otro cambio que no pasará desapercibido es que se ha añadido la compatibilidad con Shader Model 1 – 3 para juegos D3D9.
Las mejoras que verán los juegos D3D8 y D3D9
Como se indicó al inicio del artículo, esta nueva versión trae muchos cambios favorables para juegos clásicos basados en D3D8 y D3D9. Uno de estos cambios es la implementación de la canalización de funciones fijas lo cual permitirá que los juegos D3D8 y D3D9 puedan renderizarse sin necesidad de sombreadores. Esto evitará efectos de tirones en juegos como Unreal Tournament 2004 o en títulos que demandan largos períodos de juego.
Como dato técnico, la nueva canalización de funciones fijas funciona como si fuesen un par de ubershaders en donde se compilan las variantes en segundo plano a medida que el juego va configurando diferentes funciones fijas. Otro de los cambios relevantes es la optimización de carga de búfer. Este cambio resulta bien interesante, pues imita mucho mejor el comportamiento de Windows.
En versiones anteriores, los búferes se colocaban directamente en la VRAM, lo cual provocaba una serie de problemas al correr títulos grandes o complejos, como GTA IV. Ahora los búferes se cargarán bajo demanda, evitando así todos los problemas que se generaban en versiones previas y mejorando el rendimiento del juego. La compatibilidad con la rasterización de muestreo único es otra de las nuevas funciones que no debe pasar por debajo de la mesa. Esta nueva implementación permitirá un correcto renderizado de muestreo múltiple, lo cual se traduce en mejoras en juegos donde se active MSAA o FSR.
Otras mejoras interesantes añadidas en DXVK 3.0
- Se añade soporte a la extensión de Vulkan
VK_EXT_descriptor_heaplo cual reduce la penalización de rendimiento limitada por la GPU. - Se implementa recursos compartidos propios lo que ya no hará falta recurrir a parches de Proton.
- Se ha incluido un limitador de velocidad de fotogramas lo cual resulta muy útil para los gamers que utilizan Gamescope o Mangohud.
- Hay muchas correcciones en el procesamiento de vértices por software en juegos D3D8 y D3D9.
- La sincronización vertical se ha reducido para permitir múltiples pasadas de renderizado independientes superpuestas, así como también renderizados de sombreados.
- Ahora se hace un mayor uso de la cola de transferencia asíncrona lo cual optimiza la carga de recursos en la VRAM.
- Las rutas de código comunes las cuales son muy usadas por juegos D3D9 como Resident Evil han recibido notables optimizaciones.
- Las cargas de sombreados en juegos D3D8 y D3D9 han recibido grandes optimizaciones lo cual reducirá el consumo de recursos tanto en la CPU como en la GPU.
Cosas a tener en cuenta con esta nueva versión
Hay dos puntos que se deben tener muy en consideración al querer usar DXVK 3.0. El primero es que ahora se requerirá soporte para Vulkan 1.4, ya que muchas de las optimizaciones funcionan con extensiones de dicha versión. Esto significa que el controlador gráfico debe soportar Vulkan 1.4. El segundo punto es para los usuarios con GPU de AMD RDNA 1 y 2, pues en Windows estas tarjetas están consideradas obsoletas, por lo que su rendimiento no es óptimo. En este caso, el equipo de desarrollo de DXVK recomienda bien reemplazar su GPU por una RDNA 3 o 4, o pasarse a Linux, donde estas GPU cuentan con soporte mainstream y están bien soportadas.
Importante reseñar que esta nueva actualización ya está disponible en la herramienta ProtonUp-Qt.
