2017-11-17 11:34:38 +01:00
# DXVK
2018-01-19 13:10:35 +01:00
A Vulkan-based compatibility layer for Direct3D 11 which allows running 3D applications on Linux using Wine.
2017-11-17 11:34:38 +01:00
For the current status of the project, please refer to the [project wiki ](https://github.com/doitsujin/dxvk/wiki ).
2018-01-19 10:15:54 +01:00
For binary releases, see the [releases ](https://github.com/doitsujin/dxvk/releases ) page.
2017-11-17 11:34:38 +01:00
## Build instructions
### Requirements:
2018-03-31 21:35:07 +02:00
- [wine 3.5 ](https://www.winehq.org/ ) or newer
2018-04-10 17:10:47 +02:00
- [Meson ](http://mesonbuild.com/ ) build system (at least version 0.43)
2018-02-12 08:07:37 +01:00
- [MinGW64 ](http://mingw-w64.org/ ) compiler and headers (requires threading support)
2018-01-13 17:59:39 +01:00
- [glslang ](https://github.com/KhronosGroup/glslang ) front end and validator
2017-11-17 11:34:38 +01:00
### Building DLLs
2018-04-10 17:08:04 +02:00
#### The simple way
Inside the DXVK directory, run:
```
./package-release.sh master /your/target/directory --no-package
```
2018-04-10 17:10:47 +02:00
This will create a folder `dxvk-master` in `/your/target/directory` , which contains both 32-bit and 64-bit versions of DXVK.
2018-04-10 17:08:04 +02:00
#### Compiling manually
2017-11-17 11:34:38 +01:00
```
2017-12-12 12:54:49 +01:00
# 64-bit build. For 32-bit builds, replace
2018-04-06 09:42:49 +02:00
# build-win64.txt with build-win32.txt
2018-03-08 18:34:33 +01:00
meson --cross-file build-win64.txt --prefix /your/dxvk/directory build.w64
2017-11-17 11:34:38 +01:00
cd build.w64
2018-03-08 18:34:33 +01:00
meson configure
2018-01-17 21:18:41 +01:00
# for an optimized release build:
meson configure -Dbuildtype=release
2017-11-17 11:34:38 +01:00
ninja
ninja install
```
2018-02-06 08:17:17 +01:00
The two libraries `dxgi.dll` and `d3d11.dll` as well as some demo executables will be located in `/your/dxvk/directory/bin` .
2017-11-17 11:34:38 +01:00
## How to use
2018-01-21 11:38:19 +01:00
In order to set up a wine prefix to use DXVK instead of wined3d globally, run:
2018-04-10 17:08:04 +02:00
```
cd /your/compiling/directory/x32/
WINEPREFIX=/your/wineprefix bash setup_dxvk.sh
cd ../x64/
WINEPREFIX=/your/wineprefix bash setup_dxvk.sh
```
When built line by line, run:
2018-01-21 11:38:19 +01:00
```
cd /your/dxvk/directory/bin
2018-02-06 08:17:17 +01:00
WINEPREFIX=/your/wineprefix bash setup_dxvk.sh
2018-01-21 11:38:19 +01:00
```
2017-11-17 11:34:38 +01:00
2018-01-21 11:38:19 +01:00
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 directory, or by enabling the HUD (see notes below).
2018-01-19 13:10:35 +01:00
2018-01-21 14:46:45 +01:00
### Notes on Vulkan drivers
Before reporting an issue, please check the [Wiki ](https://github.com/doitsujin/dxvk/wiki/Driver-support ) page on the current driver status.
2018-01-19 13:10:35 +01:00
### Online multi-player games
Manipulation of Direct3D libraries in multi-player games may be considered cheating and can get your account **banned** . This may also apply to single-player games with an embedded or dedicated multiplayer portion. **Use at your own risk.**
2017-12-07 15:20:12 +01:00
2018-04-03 16:03:15 +02:00
### HUD
The `DXVK_HUD` environment variable controls a HUD which can display the framerate and some stat counters. It accepts a comma-separated list of the following options:
- `devinfo` : Displays the name of the GPU and the driver version.
- `fps` : Shows the current frame rate.
2018-04-17 12:03:03 +02:00
- `frametimes` : Shows a frame time graph.
2018-04-03 16:03:15 +02:00
- `submissions` : Shows the number of command buffers submitted per frame.
- `drawcalls` : Shows the number of draw calls and render passes per frame.
- `pipelines` : Shows the total number of graphics and compute pipelines.
- `memory` : Shows the amount of device memory allocated and used.
Additionally, `DXVK_HUD=1` has the same effect as `DXVK_HUD=devinfo,fps` .
2017-12-07 15:20:12 +01:00
2018-04-07 13:57:16 +02:00
### Debugging
2018-04-03 16:03:15 +02:00
The following environment variables can be used for **debugging** purposes.
2018-04-07 13:57:16 +02:00
- `DXVK_DEBUG_LAYERS=1` Enables Vulkan debug layers. Highly recommended for troubleshooting rendering issues and driver crashes. Requires the Vulkan SDK to be installed and set up within the wine prefix (`winetricks vulkansdk`).
- `DXVK_CUSTOM_VENDOR_ID=<ID>` Specifies a custom PCI vendor ID
- `DXVK_CUSTOM_DEVICE_ID=<ID>` Specifies a custom PCI device ID
- `DXVK_LOG_LEVEL=none|error|warn|info|debug` Controls message logging.
2017-12-08 11:19:12 +01:00
2018-02-12 08:07:37 +01:00
## Troubleshooting
DXVK requires threading support from your mingw-w64 build environment. If you
are missing this, you may see "error: 'mutex' is not a member of 'std'". On
2018-04-10 17:10:47 +02:00
Debian and Ubuntu, this can usually be resolved by using the posix alternate, which
2018-02-12 08:07:37 +01:00
supports threading. For example, choose the posix alternate from these
commands (use i686 for 32-bit):
```
update-alternatives --config x86_64-w64-mingw32-gcc
update-alternatives --config x86_64-w64-mingw32-g++
```