HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
doitsujin
dxvk
C++2018–2026
doitsujin / dxvk

dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine

34Distinct people
39Mentions
0Explicit recommenders
18.5KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

Show HN: Black Ops II statically recompiled to native ARM64 macOS direct repository linkDebated

The discussion centers on the technical achievement of statically recompiling Call of Duty: Black Ops II to native ARM64 using AI and Remill, with participants praising the feasibility of bypassing recent AI guardrails. However, significant disagreement exists regarding the project's documentation quality, with critics arguing the README is misleading 'AI slop' that fails to explain the technical necessity of a native port over existing translation layers.

65 readable replies · Supporting reply 1 · Supporting reply 2 · Supporting reply 3 · Supporting reply 4

Mentions over time

HN mentions by year39 dated mentions

Observed mentions: 2018-01-21 18:46:00 UTC to 2026-05-13 20:33:22 UTC.

02468102018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 9 mentions; 3 submissions, 6 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC936
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC413
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC404
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC202
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC615
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC202
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC615
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC303
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC303

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
DXVK 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 winecfg and manually add native DLL overrides for d3d8, d3d9, d3d10core, d3d11 and dxgi under the Libraries tab. In a default Wine prefix that would be as follows: export WINEPREFIX=/path/to/wineprefix cp x64/*.dll $WINEPREFIX/drive_c/windows/system32 cp x32/*.dll $WINEPREFIX/drive_c/windows/syswow64 winecfg For a pure 32-bit Wine prefix (non default) the 32-bit DLLs instead go to the system32 directory: export WINEPREFIX=/path/to/wineprefix cp x32/*.dll $WINEPREFIX/drive_c/windows/system32 winecfg 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 wineboot -u 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: d3d8.dll and d3d9.dll d3d9: d3d9.dll d3d10: d3d10core.dll, d3d11.dll and dxgi.dll d3d11: d3d11.dll and dxgi.dll 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 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. frametimes: Shows a frame time graph. 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. descriptors: Shows the number of descriptor pools and descriptor sets. memory: Shows the amount of device memory allocated and used. allocations: Shows detailed memory chunk suballocation info. gpuload: Shows estimated GPU load. May be inaccurate. version: Shows DXVK version. api: Shows the D3D feature level used by the application. cs: Shows worker thread statistics. compiler: Shows shader compiler activity samplers: Shows the current number of sampler pairs used [D3D9 Only] swvp: Shows the vertex processing mode and the current number of software vertex processing shaders [D3D9 Only] scale=x: Scales the HUD by a factor of x (e.g. 1.5) opacity=y: Adjusts the HUD opacity by a factor of y (e.g. 0.5, 1.0 being fully opaque). Additionally, DXVK_HUD=1 has the same effect as DXVK_HUD=devinfo,fps, and DXVK_HUD=full enables all available HUD elements. Logs When used with Wine, DXVK will print log messages to stderr. Additionally, standalone log files can optionally be generated by setting the DXVK_LOG_PATH variable, where log files in the given directory will be called app_d3d11.log, app_dxgi.log etc., where app 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: DXVK_FILTER_DEVICE_NAME="Device Name" Selects devices with a matching Vulkan device name, which can be retrieved with tools such as vulkaninfo. 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. DXVK_FILTER_DEVICE_UUID="00000000000000000000000000000001" Selects a device by matching its Vulkan device UUID, which can also be retrieved using tools such as vulkaninfo. 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. VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation Enables Vulkan debug layers. Highly recommended for troubleshooting rendering issues and driver crashes. Requires the Vulkan SDK to be installed on the host system. DXVK_LOG_LEVEL=none|error|warn|info|debug Controls message logging. DXVK_LOG_PATH=/some/directory Changes path where log files are stored. Set to none to disable log file creation entirely, without disabling logging. DXVK_DEBUG=... Enables one of various debugging modes: capture: Default when used with certain tools. Enables dxvk-internal debug names and debug markers for render passes, shaders, etc. hang: Detects GPU hangs or driver crashes resulting in VK_ERROR_DEVICE_LOST and logs failing command(s). markers: Uses VK_EXT_debug_utils to forward applocation-provided resource names and debug markers to Vulkan. validation: Enables validation debug callback. Must also set VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation on Linux. DXVK_CONFIG_FILE=/xxx/dxvk.conf Sets path to the configuration file. DXVK_CONFIG="dxgi.hideAmdGpu = True; dxgi.syncInterval = 0" Can be used to set config variables through the environment instead of a configu
Read the full README on GitHub

What Hacker News says

39 sources
I think the actual answer you are looking for is this paragraph: > These old workarounds got subtle edge cases wrong in ways that produced occasional hitches, deadlocks, or weird behavior in specific games, which are bugs that don't show up on benchmark charts but can absolutely ruin individual experiences. NTSYNC fixes those at the source by matching Windows behavior exactly, and that means as soon as your favorite distro moves to the new kernel version, whether it be Bazzite, CachyOS, Fedora, or a flavor of Ubuntu, they all get this much-needed fix. That's the crux of the article. NTSYNC isn't faster, it's more "correct". Most games are around the same level of performance, with certain outliers both ways. Right now there isn't anything performance wise that Linux has to do that would impact all games. Just tweaks and additions to the d
Read the rest
ifferent layers [1][2][3] in the same way driver vendors do. Much of the poor performance is for API violations and other shenanigans. 1: https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/uti... 2: https://github.com/doitsujin/dxvk/blob/master/src/util/confi... 3: https://github.com/HansKristian-Work/vkd3d-proton/blob/maste...
In Linux gaming is faster because Windows APIs are becoming Linux kernel features
I use Unigine Heaven to benchmark Linux systems. A colleague's friend has an epic spreadsheet of Heaven benchmarks across many configurations, and he submitted a few I've done. I ran it at home on my Linux desktop. For shits and giggles, I also downloaded the Windows version and ran it in Proton, and got a 30% performance boost! I suspect that a lot of that is due to the dxvk library that Proton uses, and the multithreading that it introduces translating D3D11 calls to Vulkan. https://benchmark.unigine.com/heaven https://github.com/doitsujin/dxvk
In Minecraft Java is switching from OpenGL to Vulkan
Proton (Steam Play 2.0) is a set of game-focused patches on top of Wine, plus several other components that improve game compatibility and/or performance. The most notable of these are DXVK, which implements Direct3D 8/9/10/11 APIs in terms of Vulkan, and vkd3d-proton, which does the same for Direct3D 12. In many cases, it's possible to get a game running with regular Wine (or Wine-staging) if you install into the Wine prefix not only the game, but also one or more of: DXVK, vkd3d-proton, whatever Microsoft Visual C++ runtime the game wants, and Mono. If a game also needs custom Wine patches, you'll have better luck with a game manager like Lutris, which automates installing patched Wine versions, or running a Wine build like the one that GloriousEggroll maintained until recently. Be sure that your graphics card's Vulkan drivers are inst
Read the rest
alled, and if it's a 32-bit game, all the appropriate 32-bit libraries as well. Valve's issue tracker for games running in Proton often has comments that are helpful when trying to bring up a game in Wine. https://github.com/ValveSoftware/Proton https://github.com/doitsujin/dxvk https://github.com/HansKristian-Work/vkd3d-proton https://github.com/GloriousEggroll/wine-ge-custom https://github.com/ValveSoftware/Proton/issues
In Wine 10.0 RC1 – Run Windows Applications on Linux, BSD, Solaris and macOS
> I installed Wine in Ubuntu running in WSL on a Windows 11 machine, and the game runs in that environment! Never thought I would run an old game in such a convoluted way. You don't need WSL. https://fdossena.com/?p=wined3d/index.frag Compiled wined3d dlls that work on windows. https://github.com/doitsujin/dxvk Works on windows. Just drop them in the game folder and the game should load them instead of the real directx. There's also other implementations of old APIs to keep old video games running, some of them are even used by linux users who use wine, like dgVoodoo : http://dege.freeweb.hu/dgVoodoo2/ (supports Glide, a proprietary API from the 3dfx era cards, along with dx 1-7, 8.1 and 9) https://github.com/FunkyFr3sh/cnc-ddraw (fixes all issues you can have with DirectDraw, an old 2d API, can have its use for both windows users and pe
Read the rest
ople who use wine on linux) https://github.com/otya128/winevdm run 16 bit apps on 64 windows This, along with Windows's own compatibility mode tweaks, should run almost any game that has ever been released on Windows, without having the heavy overheard of a VM (as far as I know, WSL doesn't even know how to free memory it has claimed).
In "LibreOffice is better at reading old Word files than Word"
If you want to try DXVK natively, DXVK-native has been upstreamed in the latest release, though I guess the fork still contains the instructions: https://github.com/doitsujin/dxvk/releases/tag/v2.0 gallium-nine can't really be targetted however. While most distribution with AMD or Intel graphics will have it enabled as part of Mesa, it can't be used for nvidia (unless... well, you could theoretically use zink to run that on top of vulkan as well). It's DX9 in any case. Winelib has been a thing for a veeery long time, I think it was always possible to build a native executable and link against Wine's DX->OGL translation layer.
In Nix on the Steam Deck

Showing the 15 most recent of 39 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.