DXVK +VKD3D – DirectX to Vulkan

DXVK 1.6.1 – D3D 9/10/11

DXVK (license zlib, https://github.com/doitsujin/dxvk) translates DirectX 11, DirectX 10 and DirectX 9 (since 1.5) into Vulkan 1.1 (minimum requirement since 1.5.2) and it’s main purpose is to be combined with Wine, but technically it can be used on Windows as well to confirm if the games in Wine work correctly. Instead of OpenGL the Vulkan API offers many advantages, but the most important one is the very fast development time of DXVK compared to the often buggy  and slow DirectX to OpenGL translation of WineD3D.

Install DXVK from AUR (stable: dxvk-bin, experimental dxvk-git):

yay dxvk-bin

D9VK translated DirextX 9 (DX9) to Vulkan. It was developed based on DXVK from an independent developer and as it was almost feature complete it got merged back to DXVK on 2019-12-16.

DXWrapper – D3D8/DDraw 1-7 to D3D9

DXWrapper includes d3d8to9 (see Vulkan’ize Graphic and Compute API’s) and therefore it allows you to convert DirectX 8 to DirectX 9. Additionally DXWrapper integrates Dd7to9 to translate Direct Draw 1-7 to DirectX9. If you combine this with DXVK, many D3D8 and DD1-7 games are translated to D3D9 and will run on Vulkan too.

Install DXVK in Wine

If you you need to install it to a wine prefix, first run:

export WINEPREFIX=/path/to/.wine-prefix

Or in this example a Steam Proton (Wine) prefix is used (replace USERAME and the GAMEID with the one from the Steam shop url):

export WINEPREFIX=/home/USERNAME/.local/share/Steam/steamapps/compatdata/GAMEID/pfx/

Then run the DXVK setup, on Arch Linux (it is possible to use it with Wine prefixes as well). In this case only a symlink is created that allows you to easily update DXVK:

$ setup_dxvk install --symlink

To remove DXVK , run:

$ setup_dxvk uninstall

Display HUD in Wine or Proton

MangoHud is a beatiful Hud that supports Vulkan, OpenGL and DXVK and as the preferred solution nowadays, read Gaming.

DXVK Hud is the intergrated Hud that can show you additional details. It can be combined with MangoHud where it shows additionally the devinfo and api in a Hud, everything else can be shown already by MangoHud.

To verify that your application uses DXVK instead of wined3d by checking for the presence of the log files d3d11.log and dxgi.log in the application’s / game directory once you have started the game for the first time, or by enabling the HUD via the environment variable DXVK_HUD=1. Example for Wine:

DXVK_HUD=version,devinfo,fps,api,gpu ./Steam.exe

or

DXVK_HUD=1 wine ./Steam.exe

All DirectX 10 and 11 games run on Steam via Proton and DXVK (a Wine distribution of Valve). Just open Steam and play any Windows only game. To get the HUD, add the launch parameter to the game (to see all contents you can use “all” in DXVK >=0.95):

DXVK_HUD=version,devinfo,fps,api,gpu %command%

or

DXVK_HUD=1 %command%

Since DXVK 0.65 you can use a configuration file that contains additional parameters for special cases where the default doesn’t work, read the Wiki page https://github.com/doitsujin/dxvk/wiki/Configuration.

DXVK Native

There is now a pull request to compile DXVK as a native Linux library, read https://github.com/doitsujin/dxvk/pull/926 and replaced by https://github.com/doitsujin/dxvk/pull/1264. This should improve the integration with Wine, but this would need patches as well.

VKD3D – D3D12

VKD3D is integrated to Proton since 4.11-8 to translate DirectX 12 to Vulkan. To use it with Wine, install the following packages.

pacman -Sy vkd3d lib32-vkd3d

VKD3D performance is not the best and usually Direct 3D 11 is running faster on top of DXVK and Vulkan.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.