
Hace pocos días se dio a conocer el lanzamiento de la nueva versión de DXVK 2.7, la cual presenta mejoras para Vulkan tanto en extensiones como en controladores, asi como también mejoras en la gestión de VRAM, correcciones de compatibilidad y más.
Para quienes desconocen de DXVK, deben saber que se puede usar para ejecutar aplicaciones y juegos 3D en Linux usando Wine, actuando como una alternativa de mayor rendimiento a la implementación de Direct3D 11 integrada en Wine que se ejecuta sobre OpenGL. En algunos juegos, el rendimiento del paquete Wine + DXVK difiere del lanzamiento en Windows en solo un 10-20%, mientras que cuando se usa la implementación Direct3D 11 basada en OpenGL, el rendimiento disminuye de manera más significativa.
Principales novedades de DXVK 2.7
Uno de los cambios clave en DXVK 2.7 es el establecimiento de la extensión VK_KHR_maintenance5 como requisito obligatorio. Esto implica que los controladores deben ser completamente compatibles con Vulkan 1.3. Como resultado, DXVK ya no funcionará con versiones anteriores de drivers. Se requiere como mínimo Mesa 25.0 para GPU AMD e Intel (RADV y ANV), o bien los controladores NVIDIA 550.54.14.
Este cambio afecta especialmente a usuarios de Windows con tarjetas gráficas AMD Polaris y Vega, las cuales ya no reciben soporte oficial por parte de AMD. A partir de esta versión, DXVK asume que la plataforma Windows con controladores AMD se utilizará bajo su propio riesgo.
Otro de las novedades que presenta DXVK 2.7 es la modernización del sistema de descriptores de sombreado. En con GPU AMD o NVIDIA, DXVK activa por defecto la extensión VK_EXT_descriptor_buffer, una tecnología que reduce drásticamente el trabajo que debe realizar la CPU para gestionar los recursos gráficos. Esta mejora se traduce en un aumento tangible de rendimiento en juegos exigentes, particularmente en sistemas donde la CPU era el cuello de botella. Para quienes prefieran desactivar esta optimización, se incluye la opción dxvk.enableDescriptorBuffer.
DXVK 2.7 también mejora el uso de memoria, en tarjetas Intel Battlemage y Lunar Lake, se ha activado una función de desfragmentación de memoria que reduce el uso máximo de RAM en juegos prolongados, devolviendo más recursos al sistema operativo. Esta función puede controlarse mediante la opción dxvk.enableMemoryDefrag.
Además, ahora en las GPU dedicadas, DXVK ahora aplicará el límite de memoria de video (VRAM) informado por el controlador tanto como sea posible,, lo que permite una liberación más eficiente de recursos no utilizados. Esto se traduce en una ejecución más fluida de juegos como los desarrollados con Unity, especialmente en equipos con memoria de video limitada.
Limpieza del código y mejoras específicas
Como parte de un esfuerzo por mantener un código más limpio y moderno, se han eliminado características obsoletas como la opción d3d9.forceSwapchainMSAA y el caché de estado heredado, que quedó sin utilidad tras la adopción de la extensión VK_EXT_graphics_pipeline_library.
También se han incorporado optimizaciones específicas que mejoran la estabilidad y el rendimiento de juegos sobre el motor Source, así como una inicialización más segura de sombreadores en Direct3D 11 gracias al llenado automático de buffers y variables.
En cuanto a las correcciones de errores y mejoras:
- Se añadió soporte para vistas de salida de video en formato planar.
- Los shaders de D3D11 ahora inicializarán en cero todas las variables y la memoria compartida del grupo (groupshared memory) por defecto, para evitar errores en juegos que provocan comportamientos indefinidos.
- Se optimizó el uso de StretchRect en D3D9 en ciertos casos de resolución de múltiples muestras (multisample resolve) encontrados en Source Engine.
- Se corrigió un uso inválido de Vulkan en Modulus y posiblemente en otros juegos con Unity Engine que utilizan la API de video de D3D11.
- Se implementó soporte para la interfaz ID3DDestructionNotifier.
- Los dispositivos Vulkan que no cuenten con las características necesarias para ejecutar DXVK ya no serán listados como adaptadores DXGI / D3D9.
- Ahora, intentar compilar DXVK en un entorno MinGW con AVX activado resultará en un error en tiempo de compilación.
¿Cómo añadir el soporte de DXVK?
Instalar DXVK en Linux puede variar ligeramente según la distribución y si usas Wine, Proton o Lutris, pero aquí te dejo una guía para los casos más comunes.
Instalación de DXVK con Wine
Puedes descargar DXVK desde su página oficial en GitHub. Descarga el archivo .tar.gz más reciente (en este caso la version 2.7)
wget https://github.com/doitsujin/dxvk/releases/download/v2.7/dxvk-2.7.tar.gz
Después de haber realizado la descarga ahora vamos a descomprimir el paquete recién obtenido, esto lo pueden hacer con desde su entorno de escritorio o desde la misma terminal ejecutando en el siguiente comando:
tar -xvf dxvk-2.7.tar.gz
cd dxvk-2.7.tar.gz
Instalar DXVK en tu prefix de Wine
Asumiendo que estás usando un prefix de Wine en ~/.wine:
export WINEPREFIX=~/.wine
./setup_dxvk.sh install
Esto copiará los archivos DLL necesarios (d3d9.dll, d3d10.dll, d3d11.dll, dxgi.dll) a las carpetas system32 y syswow64 dentro de tu prefix.
Instalación con Lutris (más fácil)
Abre Lutris y selecciona tu juego:
- Haz clic derecho > Configurar > pestaña Runner options.
- Activa la casilla «Enable DXVK».
- Puedes elegir la versión de DXVK que prefieras desde allí mismo.
- Guarda los cambios y ejecuta el juego.
Instalación en Steam (usando Proton)
Si usas Steam Play (Proton):
- Activa Steam Play para todos los títulos en:
- Steam > Configuración > Compatibilidad > Forzar uso de Steam Play.
- Puedes reemplazar la versión de DXVK incluida en Proton por una personalizada (no recomendado a menos que sepas lo que haces).
- O simplemente deja que Proton gestione DXVK automáticamente: está integrado por defecto.
Verifica que DXVK está funcionando
Para comprobar si DXVK está activo, puedes lanzar un juego y revisar la carpeta donde se ejecuta. Si ves archivos como d3d11.log o dxgi.log, DXVK está funcionando correctamente.
También puedes usar herramientas como DXVK HUD para mostrar estadísticas en pantalla:
export DXVK_HUD=1
Coloca esta variable antes de ejecutar el juego con Wine o Lutris.
Continúar leyendo...