DXVK 2.3 ha sido publicada como la nueva versión del renderizador que se encarga de traducir las versiones 9, 10 y 11 de Direct3D a Vulkan y que es conocido sobre todo por formar parte de la capa de compatibilidad Proton. Hay quien define a DXVK como un traductor, lo cual no es incorrecto salvo que nos pongamos demasiado exquisitos con los términos.
DXVK es un desarrollo que a estas alturas se encuentra muy maduro, así que las nuevas versiones no llegan con tantas novedades como en tiempos pasados, cuando el margen de mejora era grande. Pese a ello, la versión 2.3 del renderizador incluye algunas cosas importantes y mejora la experiencia con algunos juegos específicos.
Para empezar, DXVK 2.3 ha incluido soporte para la extensión de Vulkan VK_KHR_present_wait
, la cual, si la sincronización vertical está habilitada, hace que los eventos de latencia de los fotogramas se señalen cuando se presente una imagen en lugar de cuando se haya completado el trabajo de renderizado anterior a la solicitud actual en la GPU.
La consecuencia del soporte para VK_KHR_present_wait
es una posible reducción del input lag en algunos juegos y también afecta a las opciones dxgi.maxFrameLatency
y d3d9.maxFrameLatency
. Sin embargo, dependiendo de la plataforma y el compositor empleados, es probable que los eventos presentes de Vulkan no correspondan con la imagen que realmente se presenta en pantalla, por lo que la latencia de los fotogramas seguirá siendo mayor a la esperada.
Otra extensión de Vulkan soportada es VK_EXT_swapchain_maintenance1
, aunque por ahora solo con el compositor gamescope y la variable ENABLE_GAMESCOPE_WSI=1
. Con este soporte, puede que habilitar e inhabilitar la sincronización vertical no requiera de recrear la cadena de intercambio de Vulkan, lo que abre la puerta a solucionar problemas de rendimiento graves en algunos juegos.
Continuando con más cosas de DXVK 2.3, la opción de configuración dxgi.nvapiHack
ha sido marcada como obsoleta y una nueva, dxgi.hideNvidiaGpu
, la ha sustituido con un ligero cambio de comportamiento junto con otras opciones similares para las graficas de AMD e Intel. La nueva opción de configuración permite habilitar XeSS, la tecnología de reescalado de Intel. Por otro lado, las opciones dxgi.tearFree
y d3d9.tearFree
han sido consolidadas en dxvk.tearFree
y ahora el renderizador cuenta con mayores posibilidades de configuración de DXVK mediante la variable del entorno DXVK_CONFIG
.
Para terminar con las novedades relevantes, el soporte para la extensión de Vulkan VK_EXT_depth_bias_control
puede corregir artefactos en las sombras de juegos que usan Direct3D 9 como F.E.A.R., Far Cry 2 y Assassin’s Creed Brotherhood; el soporte para la extensión VK_EXT_line_rasterization
y sus características relevantes hacen que se usen líneas suaves o rectangulares si la aplicación lo solicita, aunque esta funcionalidad por lo general no va dirigida a los juegos; además de que la extensión VK_KHR_maintenance5
permite que las imágenes DXGI_FORMAT_A8_UNORM
usen el formato Vulkan correspondiente. Entre los juegos específicos que han recibido correcciones están Far Cry 2, The Sims 2, Titanfall, Halo Online y Tomb Raider Anniversary.
Sobre las extensiones de Vulkan mencionadas en esta entrada, es importante que el sistema las soporte para poder utilizarlas. En Intel y AMD lo normal es recurrir a Mesa, de ahí que sea tan importante mantener esta pila al día para el soporte de videojuegos en Linux, mientras que con NVIDIA hay que emplear la versión más reciente que se pueda del controlador oficial del gigante verde.
Además de ser un desarrollo muy maduro a estas alturas, no es menos cierto que DXVK apunta a perder protagonismo frente a VKD3D debido a la consolidación de DirectX 12 para la construcción de videojuegos de última generación. De hecho, ya no es raro encontrar juegos que no cuenten con soporte para DirectX 11, lo que prácticamente obliga a emplear VKD3D si se quiere traducir las instrucciones Direct3D a Vulkan.
Y hasta aquí lo más importante de DXVK 2.3. Los que quieran conocer todos los detalles pueden consultar el anuncio de lanzamiento publicado en el repositorio GitHub del proyecto, mientras que el renderizador, si no se quiere lidiar con él, lo suyo es esperar a que llegue a Proton si no lo ha hecho ya en la rama experimental.