Una capa de traducción basada en Vulkan para Direct3D 10/11 que permite ejecutar aplicaciones 3D en Linux usando vino.
Para el estado actual del proyecto, consulte el wiki del proyecto.
Para instalar un paquete DXVK obtenido de la página de lanzamiento en un prefijo de vino dado, ejecute los siguientes comandos desde el directorio DXVK:
export WINEPREFIX=/path/to/.wine-prefix
./setup_dxvk.sh install
Esto copiará los DLLS en los directorios system32 y syswow64 de su prefijo de vino y configurará las anulaciones de DLL requeridas. También se admiten prefijos puros de 32 bits.
El script de configuración opcionalmente toma los siguientes argumentos:
--symlink : cree enlaces simbólicos a los archivos DLL en lugar de copiarlos. Esto es especialmente útil para el desarrollo.--without-dxgi : no instale la implementación de DXGI de DXVK y use la proporcionada por el vino. Esto es necesario para que VKD3D y DXVK funcionen dentro del mismo prefijo de vino. Verifique que su aplicación use DXVK en lugar de Wined3D verificando la presencia del archivo de registro d3d11.log en el directorio de la aplicación, o habilitando el HUD (ver las notas a continuación).
Para eliminar DXVK de un prefijo, ejecute el siguiente comando:
export WINEPREFIX=/path/to/.wine-prefix
./setup_dxvk.sh uninstall
Dentro del directorio DXVK, ejecute:
./package-release.sh master /your/target/directory --no-package
Esto creará una carpeta dxvk-master en /your/target/directory , que contiene versiones de DXVK de 32 bits y 64 bits, que se pueden configurar de la misma manera que las versiones de lanzamiento como se indicó anteriormente.
Para preservar los directorios de compilación para el desarrollo, pase --dev-build al script. Esta opción implica: --no-package . Después de hacer cambios en el código fuente, puede hacer lo siguiente para reconstruir DXVK:
# change to build.32 for 32-bit
cd /your/target/directory/build.64
ninja install
Se puede crear una construcción de Winelib agregando el argumento --winelib .
# 64-bit build. For 32-bit builds, replace
# build-win64.txt with build-win32.txt
meson --cross-file build-win64.txt --buildtype release --prefix /your/dxvk/directory build.w64
cd build.w64
ninja install
Los DLLS D3D10, D3D11 y DXGI se ubicarán en /your/dxvk/directory/bin . La configuración debe hacerse manualmente en este caso.
Antes de informar un problema, consulte la página Wiki en el estado del controlador actual y asegúrese de ejecutar una versión del controlador lo suficientemente reciente para su hardware.
La manipulación de las bibliotecas Direct3D en los juegos de múltiples jugadores puede considerarse trampa y puede prohibir su cuenta. Esto también puede aplicarse a los juegos para un solo jugador con una porción multijugador integrada o dedicada. Use bajo su propio riesgo.
La variable de entorno DXVK_HUD controla un HUD que puede mostrar la velocidad de fotogramas y algunos contadores de estadísticas. Acepta una lista separada por comas de las siguientes opciones:
devinfo : muestra el nombre de la GPU y la versión del controlador.fps : muestra la velocidad de cuadro actual.frametimes : muestra un gráfico de tiempo de cuadro.submissions : muestra el número de búferes de comandos enviados por cuadro.drawcalls : muestra el número de llamadas de dibujo y pases de renderizado por cuadro.pipelines : muestra el número total de gráficos y tuberías de cálculo.memory : muestra la cantidad de memoria del dispositivo asignada y utilizada.gpuload : muestra la carga de GPU estimada. Puede ser inexacto.version : muestra la versión DXVK.api : muestra el nivel de característica D3D utilizado por la aplicación. No funciona correctamente para D3D10 en este momento.compiler : muestra la actividad del compilador de sombreador Además, DXVK_HUD=1 tiene el mismo efecto que DXVK_HUD=devinfo,fps y DXVK_HUD=full habilita todos los elementos HUD disponibles.
Algunas aplicaciones no proporcionan un método para seleccionar una GPU diferente. En ese caso, DXVK puede verse obligado a usar un dispositivo determinado:
DXVK_FILTER_DEVICE_NAME="Device Name" selecciona dispositivos con un nombre de dispositivo Vulkan coincidente, que se puede recuperar con herramientas como vulkaninfo . Coincide con las subcadenas, por lo que se admite "Vega" o "AMD RADV VEGA10" si el nombre completo del dispositivo es "AMD RADV VEGA10 (LLVM 9.0.0)", por ejemplo. Si la subcadena coincide con más de un dispositivo, se utilizará el primer dispositivo coincidente.Nota: Si el filtro de dispositivo está configurado incorrectamente, puede filtrar todos los dispositivos y aplicaciones no podrá crear un dispositivo D3D.
DXVK almacena el estado de la tubería de forma predeterminada, de modo que los sombreadores se pueden recompensar con anticipación en las ejecuciones posteriores de una aplicación, incluso si el caché del sombreador del conductor se invalidó mientras tanto. Este caché está habilitado de forma predeterminada y generalmente reduce la tartamudez.
Las siguientes variables de entorno se pueden usar para controlar el caché:
DXVK_STATE_CACHE=0 deshabilita el caché de estado.DXVK_STATE_CACHE_PATH=/some/directory Especifica un directorio donde colocar los archivos de caché. El valor predeterminado al directorio de trabajo actual de la aplicación.Las siguientes variables de entorno se pueden utilizar para fines de depuración .
VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation habilita las capas de depuración Vulkan. Muy recomendable para la resolución de problemas de representación y bloqueos del conductor. Requiere que el SDK Vulkan se instale en el sistema de host.DXVK_LOG_LEVEL=none|error|warn|info|debug controla el registro de mensajes.DXVK_LOG_PATH=/some/directory Changs Ruta donde se almacenan los archivos de registro.DXVK_CONFIG_FILE=/xxx/dxvk.conf establece ruta al archivo de configuración. DXVK requiere soporte de subprocesos de su entorno de compilación MingW-W64. Si le falta esto, puede ver "Error: 'Mutex' no es miembro de 'STD'". En Debian y Ubuntu, esto generalmente se puede resolver mediante el uso de Posix Alternate, que admite el subproceso. Por ejemplo, elija la alternativa POSIX de estos comandos (use i686 para 32 bits):
update-alternatives --config x86_64-w64-mingw32-gcc
update-alternatives --config x86_64-w64-mingw32-g++