Compiling the latest version of DXVK on Arch or Ubuntu for use with Steam Play

This is useful if DXVK has a new feature that hasn’t yet been release by Proton/Steam Play. You can easily compile DXVK from source and update your current version of proton with it. Here’s how to do it on Ubuntu. I’m only posting Ubuntu and Arch instructions, as Ubuntu is used widely for game distribution and Steam uses Ubuntu libraries, and most people I know use Arch or an Arch derivative.

Arch:
1. Enable multilib and the AUR in /etc/pacman.conf
sudo nano /etc/pacman.conf
Uncomment:

[multilib]
Include = /etc/pacman.d/mirrorlist

Save and close with ctrl+o then ctrl+x

sudo pacman -Sy

2. Install yay in order to install AUR packages:

wget https://aur.archlinux.org/cgit/aur.git/snapshot/yay.tar.gz
tar -xvzf yay.tar.gz
cd yay
makepkg -csi
cd ..
sudo rm -R yay

3. Install wine and it’s dependencies:

sudo pacman -S wine-staging winetricks
sudo pacman -S giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils libpulse lib32-libpulse alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo libxcomposite lib32-libxcomposite libxinerama lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs vulkan-icd-loader lib32-vulkan-icd-loader cups samba dosbox

4. Install dependencies for DXVK:
yay -S ninja meson glslang mingw-w64-gcc git

5. Now clone DXVK from git and compile it:

git clone github.com/doitsujin/dxvk.git
cd dxvk
./package-release.sh master /some/destination/path --no-package

Done! See bottom for how to add dlls to Proton!


Ubuntu:

1. Allow 32 bit packages in Ubuntu:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt dist-upgrade

2. Install wine and its dependencies:

wget -nc https://dl.winehq.org/wine-builds/Release.key
sudo apt-key add Release.key
sudo apt-add-repository 'https://dl.winehq.org/wine-builds/ubuntu/'
sudo apt update
sudo apt install --install-recommends winehq-staging
sudo apt install winetricks

3. Prepare the DXVK build environment:
sudo apt install meson ninja-build ming-w64 python3-distutils libvulkan1

Choose the posix option for these:

update-alternatives --config x86_64-w64-mingw32-gcc
update-alternatives --config x86_64-w64-mingw32-g++
update-alternatives --config i686-w64-mingw32-gcc
update-alternatives --config i686-w64-mingw32-g++

4. DXVK needs glslang, Ubuntu doesn’t have a package for it and you don’t need the entire Vulkan SDK for it, so lets just do it the old fashioned way:

git clone github.com/KhronosGroup/glslang.git
git checkout 72f8c69 (or whatever version arch is using)
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release
make
sudo make DESTDIR="/"

5. Now clone DXVK from git and compile it:

git clone github.com/doitsujin/dxvk.git
cd dxvk
./package-release.sh master /some/destination/path --no-package

Voila!

How to add custom DXVK to Proton:

Your DXVK dlls will be in whatever folder you specified for /some/destination/path. You can drag/drop them into your Proton folder like this example:
For x32 dlls:
Proton 3.7/dist/lib/wine/dxk

For x64 dlls:
Proton 3.7/dist/lib64/wine/dxk

The Proton folder is usually located in your default steam library folder under steamapps/common/

Liked it? Take a second to support GloriousEggroll on Patreon!
Become a patron at Patreon!