The VKD3D-Proton package contains DLL files which converts Direct3D 12 calls to Vulkan. By default in Wine, Direct3D 12 calls are also converted to Vulkan; however, this package makes more aggressive optimizations geared towards gaming and replaces the default implementation provided by Wine, VKD3D.
Download (HTTP): https://github.com/HansKristian-Work/vkd3d-proton
DXVK-2.5.3
(for dxgi.dll
), git-2.48.1 (with
cURL-8.12.1; to clone the repository), Glslang-15.1.0, MinGW-w64-GCC-14.2.0 (compiled with
POSIX thread support), and Wine-10.1
Clone the repository using git-2.48.1 as this project depends on submodules, even if they are installed on the system:
git clone --recursive https://github.com/HansKristian-Work/vkd3d-proton vkd3d-proton-2.14.1 && cd vkd3d-proton-2.14.1 && git checkout v2.14.1
If you are doing multilib, it is up to you if you want to install the 32-bit DLL files from this package. Direct3D 12 released in mid-2015, so there are less 32-bit D3D12 applications than 64-bit ones. If you wish to stay on the safe side, it would be prudent to install the 32-bit DLL files as well.
Install 64-bit VKD3D-Proton by running the following commands:
mkdir build-win64 && cd build-win64 && meson setup .. --cross-file ../build-win64.txt \ --buildtype=release \ --prefix=$PWD/DESTDIR && ninja
Now as the root
user:
ninja install && cd .. && mkdir -pv /usr/lib/vkd3d-proton/win64 && install -vDm644 build-win64/DESTDIR/bin/*.dll \ /usr/lib/vkd3d-proton/win64
Install 32-bit VKD3D-Proton by running the following commands:
mkdir build-win32 && cd build-win32 && meson setup .. --cross-file ../build-win32.txt \ --buildtype=release \ --prefix=$PWD/DESTDIR && ninja
Now as the root
user:
ninja install && cd .. && mkdir -pv /usr/lib/vkd3d-proton/win32 && install -vDm644 build-win32/DESTDIR/bin/*.dll \ /usr/lib/vkd3d-proton/win32
While the VKD3D-Proton DLL files have been installed, they are not yet in the Wine prefix. Create symlinks so that they can be found by Wine, whilst allowing updating of this package without having to copy everything over again. Along with this, the registry must be updated to use the new DLLs. Do this for each archetecture you have installed.
For 64-bit:
for DLL_FILE in /usr/lib/vkd3d-proton/win64/*.dll; do ln -sfv $DLL_FILE ~/.wine/drive_c/windows/system32/$(basename $DLL_FILE) && DLL_FILE=$(basename $DLL_FILE | sed s/.dll//g) && wine reg add \ 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' \ /v "$DLL_FILE" /d native /f done
For 32-bit:
for DLL_FILE in /usr/lib/vkd3d-proton/win32/*.dll; do if [ ! -d ~/.wine/drive_c/windows/syswow64 ]; then ln -sfv $DLL_FILE ~/.wine/drive_c/windows/system32/$(basename $DLL_FILE) else ln -sfv $DLL_FILE ~/.wine/drive_c/windows/syswow64/$(basename $DLL_FILE) fi DLL_FILE=$(basename $DLL_FILE | sed s/.dll//g) && wine reg add \ 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' \ /v "$DLL_FILE" /d native /f done
Inspect meson_options.txt
for a
full list of options.
git checkout v2.14.1: This command switches to a stable release in the commit history.
--cross-file=../build-win{32,64}.txt
:
This parameter changes what Win archetecture to build for.
--buildtype=release
:
Specify a buildtype suitable for stable releases of the package, as
the default may produce unoptimized binaries.
wine{,64} reg add ...: This command overrides the registry so that Wine will use the new DLL files instead of the old ones.