doitsujin / dxvk
Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing doitsujin/dxvk in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewDXVK A Vulkan-based translation layer for Direct3D 8/9/10/11 which allows running 3D applications on Linux using Wine. For the current status of the project, please refer to the project wiki. The most recent development builds can be found here. Release builds can be found here. How to use In order to install a DXVK package obtained from the release page into a given wine prefix, copy or symlink the DLLs into the following directories as follows, then open and manually add DLL overrides for , , , and under the Libraries tab. In a default Wine prefix that would be as follows: For a pure 32-bit Wine prefix (non default) the 32-bit DLLs instead go to the directory: Verify that your application uses DXVK instead of wined3d by enabling the HUD (see notes below). In order to remove DXVK from a prefix, remove the DLLs and DLL overrides, and run to restore the original DLL files. Tools such as Steam Play, Lutris, Bottles, Heroic Launcher, etc will automatically handle setup of dxvk on their own when enabled. DLL dependencies Listed below are the DLL requirements for using DXVK with any single API. • d3d8: and • d3d9: • d3d10: , and • d3d11: and Notes on Vulkan drivers Before reporting an issue, please check the Wiki page on the current driver status and make sure you run a recent enough driver version for your hardware. 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.** HUD The environment variable controls a HUD which can display the framerate and some stat counters. It accepts a comma-separated list of the following options: • : Displays the name of the GPU and the driver version. • : Shows the current frame rate. • : Shows a frame time graph. • : Shows the number of command buffers submitted per frame. • : Shows the number of draw calls and render passes per frame. • : Shows the total number of graphics and compute pipelines. • : Shows the number of descriptor pools and descriptor sets. • : Shows the amount of device memory allocated and used. • : Shows detailed memory chunk suballocation info. • : Shows estimated GPU load. May be inaccurate. • : Shows DXVK version. • : Shows the D3D feature level used by the application. • : Shows worker thread statistics. • : Shows shader compiler activity • : Shows the current number of sampler pairs used *[D3D9 Only]* • : Shows the current number of shaders generated from fixed function state *[D3D9 Only]* • : Shows whether or not the device is running in software vertex processing mode *[D3D9 Only]* • : Scales the HUD by a factor of (e.g. ) • : Adjusts the HUD opacity by a factor of (e.g. , being fully opaque). Additionally, has the same effect as , and enables all available HUD elements. Logs When used with Wine, DXVK will print log messages to . Additionally, standalone log files can optionally be generated by setting the variable, where log files in the given directory will be called , etc., where is the name of the game executable. On Windows, log files will be created in the game's working directory by default, which is usually next to the game executable. Device filter Some applications do not provide a method to select a different GPU. In that case, DXVK can be forced to use a given device: • Selects devices with a matching Vulkan device name, which can be retrieved with tools such as . Matches on substrings, so "VEGA" or "AMD RADV VEGA10" is supported if the full device name is "AMD RADV VEGA10 (LLVM 9.0.0)", for example. If the substring matches more than one device, the first device matched will be used. • Selects a device by matching its Vulkan device UUID, which can also be retrieved using tools such as . The UUID must be a 32-character hexadecimal string with no dashes. This method provides more precise selection, especially when using multiple identical GPUs. **Note:** If the device filter is configured incorrectly, it may filter out all devices and applications will be unable to create a D3D device. Debugging The following environment variables can be used for **debugging** purposes. • Enables Vulkan debug layers. Highly recommended for troubleshooting rendering issues and driver crashes. Requires the Vulkan SDK to be installed on the host system. • Controls message logging. • Changes path where log files are stored. Set to to disable log file creation entirely, without disabling logging. • Enables use of the extension for translating performance event markers, or to enable Vulkan validation, respecticely. • Sets path to the configuration file. • Can be used to set config variables through the environment instead of a configuration file using the same syntax. is used as a seperator. • : Disables the internal shader cache. • : Path to internal shader cache files. By default, this will use in a Windows or Wine environment, and or in a native Linux environment. Graphics Pipeline Library On drivers which support Vulkan shaders will be compiled at the time the game loads its D3D shaders, rather than at draw time. This reduces or eliminates shader compile stutter in many games when compared to the previous system. In games that load their shaders during loading screens or in the menu, this can lead to prolonged periods of very high CPU utilization, especially on weaker CPUs. For affected games it is recommended to wait for shader compilation to finish before starting the game to avoid stutter and low performance. Shader compiler activity can be monitored with . **Note:** Games which only load their D3D shaders at draw time (e.g. most Unreal Engine games) will still exhibit some stutter, although it should still be less severe than without this feature. Build instructions In order to pull in all submodules that are needed for building, clone the repository using the following command: Requirements: • wine 10…