DirectX12 performance is terrible on Linux

Something very interesting:

Apparently, AMD’s 9070 XT also loses like 40 - 50% with RT vs. Windows 11. Could indeed be some kind of general issue with RT and Wine/Proton…

There is also the Phoronix test AMD Radeon RX 9070 + RX 9070 XT Linux Performance Review - Phoronix that showed that their Linux drivers (and using older mesa at the time) were also having some performance gaps, with room for improvement.

However, nvidia loses 15-20% with DX12 without RT. It is a VKD3D/driver interaction issue. So it is a bit of a “choose your poison” situation. Despite that, at the moment I prefer to have now DLSS4 and RT/PT in games - and accept some loss in DX12 specifically, than tinkering or wait for months until massive performance gaps are solved, and features (such as FSA4) added.

Warning: A lot of test was run with RADV and not amdvlk Mesa Issue
I get better RT performance with amdvlk

Let’s be brutally honest about Linux “gamers” and “gaming”, shall we?

  1. Linux hasn’t had any AAA titles for many years, at least six now, and some rare indies don’t count. In general: no native games at all, we are talking emulation/translation/whatever.
  2. Every game company that has ported games to Linux has gone bankrupt because Linux “gamers” do not buy games.
  3. Linux gamers are a plague when it comes to online gaming: every piece of the software stack under Linux is replaceable and allows infinite cheating possibilities. The Linux kernel, kernel modules, OpenGL/Vulkan drivers, game resources, glibc and other libraries can all be replaced without the game knowing.
  4. Windows games that use a kernel anticheat will never work on Linux.

Couple that with the fact the Linux is not even an operating system per se, more like a bespoke temporary software compilation with horrible bugs and very little to no QA/QC.

Gaming on Linux. LMAO.

Install Windows 10/11 and have fun.

An inconvenient truth strikes again, but in a moment someone will scream that MESA hasn’t been properly updated to support the RX 9000 series yet.

Oh wait, NVIDIA releases Linux drivers on day one, with AMD you have to wait months or years to get anything resembling full and stable support.

AMD too with amdvlk. I get the driver immediatly after buy it

is released in March

1 Like

Have you come here to rant about Linux? Linux gaming mainly consists of games run via Proton, and that’s not necessarily a problem. Certain measures can be implemented in collaboration with devs in the Linux space to verify security at least a little bit. Maybe Kernel level anticheat will never come to Linux, but it doesn’t mean that companies will eventually implement other measures, especially server-side ones, as the client-side can rarely be fully trusted to give valid reports of the security. And name one company that made their games compatible and went bankrupt. Linux is not a choice because it’s better for gaming speci

3 Likes

@amrits Really appreciate the effort that you and the whole Linux team at Nvidia put in improving the driver. Thank you very much!

Here are two reports of D3D12 native vs. vkd3d on Windows vs. vkd3d on Linux performance that I hope could be reproduced—or at least can be helpful in debugging the issue:

  • Starfield
  • Assassin’s Creed Shadows

The most important takeaways:

  • For both games the difference is more pronounced at the lower presets. The relative Linux/Windows performance is only 49% for Starfield and 68% for AC Shadows at the Low setting.
  • The lower performance is clearly tied with lower GPU power consumption, as expected.
  • The performance hit associated with the vkd3d translation is already significant on Windows, but even larger on Linux. This is well pronounced on Starfield and, especially with the Low preset, also on AC Shadows.
  • While with the Ultra preset AC Shadows exhibits similar performance on Windows with native D3D12 and vkd3d, it still performs noticeably—and, at these low framerates, critically—worse on Linux.

Key points on methodology:

  • All tests were in 1920x1080 resolution, as this is what I use exclusively.
  • For AC Shadows, the game’s built-in benchmarking tool was used. For Starfield, for easier reproducibility, a new game start was used: the elevator scene and a “look around” in the initial cave were tested.
  • The exact graphics settings are recorded at the beginning of each linked video.
  • For each test, one or more runs were done in advance to avoid I/O interference as much as possible.
  • DLSS and FSR were disabled. For AC Shadows TAA native AA was used.
  • The overlays were MSI Afterburner and RTSS on Windows, and MangoHud on Linux.
  • The GPU wattage averages were estimated visually rather than computed from logged data. For Starfield, where there’s more variability, the values in the cave have been used.
  • Same with GPU utilization, but variation there was mostly negligible.
  • No command changes in Steam, except MANGOHUD=1 %command% on Linux.

Brief hardware and software information (debug info also attached):

  • GPU: MSI SUPRIM X GeForce RTX 3080 12GB LHR (/w SILENT preset)
  • CPU: AMD Ryzen 7 5800X3D /w be quiet! Dark Rock Pro 4
  • MB: Asus ROG STRIX B550-E GAMING
  • RAM: G.Skill Ripjaws V 64 GB (4 x 16 GB) DDR4-3600
  • No overclocking except PBO -30 on all cores (tested extensively).
  • There’s a Gigabyte 3070 GAMING OC 8G on the second PCIe slot, used for a dual-seat system. It has not been used in the tests and, at least on Linux, is isolated with loginctl attach, vkdevicechooser, and CUDA_VISIBLE_DEVICES. Mentioning this for the sake of completeness and clarity.
  • Windows 10 Enterprise, 64-bit, 22H2, 10.0.19041.1, Nvidia 576.28
  • Arch Linux, linux 6.14.5.arch1-1, nvidia-open-dkms 570.144-3
  • Proton Experimental 10.0-20250507b (as chosen by Steam, likely proton-10.0-1d)
  • vkd3d-proton (Windows only) 2.14.1 (release)
  • dxvk (Windows, dxgi.dll only) 2.6.1 (release)

The results:

Starfield

OS API (transl.) Preset FPS avg. FPS 1% FPS 0.1% GPU % GPU W YouTube
Windows D3D12 native Low 146 104 68 ~ 99 ~ 320 https://www.youtube.com/watch?v=pM0VPhvt-cY
Windows Vulkan vkd3d Low 93 72 15 ~ 96 ~ 275 https://www.youtube.com/watch?v=av4zFEivG3A
Linux Vulkan vkd3d Low 71 53 35 ~ 97 ~ 250 https://www.youtube.com/watch?v=xn8ICH-jdzM
Windows D3D12 native Ultra 112 83 67 ~ 99 ~ 335 https://www.youtube.com/watch?v=WV-3rSPVSbo
Windows Vulkan vkd3d Ultra 73 54 14 ~ 95 ~ 310 https://www.youtube.com/watch?v=yrO_0jsbC5A
Linux Vulkan vkd3d Ultra 58 42 28 ~ 96 ~ 280 https://www.youtube.com/watch?v=t-99VrZQowo

Assassin’s Creed Shadows

OS API (transl.) Preset FPS avg. FPS 1% FPS 0.1% GPU % GPU W YouTube
Windows D3D12 native Low 80 70 66 ~ 99 ~ 280 https://www.youtube.com/watch?v=sA7gdtkYDIs
Windows Vulkan vkd3d Low 67 57 52 ~ 92 ~ 260 https://www.youtube.com/watch?v=xSpOQMG9KYU
Linux Vulkan vkd3d Low 54 44 40 ~ 94 ~ 240 https://www.youtube.com/watch?v=xzH6BiGl0zc
Windows D3D12 native Ultra 37 31 30 ~ 99 ~ 330 https://www.youtube.com/watch?v=1QOeNqTNmb4
Windows Vulkan vkd3d Ultra 37 29 16 ~ 95 ~ 310 https://www.youtube.com/watch?v=cOmJnsDSvx8
Linux Vulkan vkd3d Ultra 31 25 23 ~ 95 ~ 290 https://www.youtube.com/watch?v=nXwX91QKqLM

nvidia-bug-report.log.gz (968.8 KB)

12 Likes

Nice report! Great job.

2 Likes

Guys, let’s keep this discussion civil and on topic. Please.
Thank you Nvidia maintainers for taking the time to investigate this issue.

6 Likes

Great. Thank you for this detailed report.

4 Likes

Basically, it’s simple guys, depending on the settings and games, we have a 15 to 35% performance loss with Nvidia in Rasterization (not AMD) when using VKD3D, regardless of the game, no need to list them.
If there are a few rare people who can’t reproduce this, it’s often due to measurement errors or they are CPU limited.

Then there’s another issue which is Ray Tracing. There are two types of implementation: Nvidia’s RTX SDK and DXR. For example, consoles games like Spider-Man use DXR. When we activate Ray Tracing or Path Tracing on Linux and it’s the RTX SDK, we lose more than 40% of performance. And in this case, it’s with both Nvidia and AMD. Similarly, to my knowledge, it’s 100% of games with RTX (Nvidia SDK).

So, I think the first issue, which only concerns Nvidia, must come from their implementation of the Vulkan API since AMD is not affected.

On the other hand, the problem with RTX can come from several places. We know that certain MESA updates for AMD have already improved things in the past and that the teams are still working on improvements, so there is clearly a part on the driver side. But there may also be a limitation on the VKD3D side.

2 Likes

Thanks for this very interesting test. I am surprised by the magnitude of the differences here. Maybe at higher resolutions this get tighter. The differences vary a lot from one game to another and per resolution. See this video for instance: The perf loss with 4080 Super is more in the order of 10-15%, on an average of 20 DX12 games (see timestamp 15:30).

2 Likes

Starfield indeed stands out in my experience. And others seem to have had similar observations. It’s possible that it uniquely hits particularly unoptimized paths in the driver. Hopefully, debugging these will lead to broader improvements in driver efficiency. Yet, with the complexity of modern game engines, I can also easily imagine different factors—and in different combinations—being at play for each game.

As for the impact of resolution and graphics settings, that does seem to be an established pattern—also supported by my results (e.g., ~84% relative Linux/Windows performance on Ultra in AC Shadows vs. ~68% on Low). This pattern might suggest that the driver isn’t fully utilizing available GPU resources when the workload is lighter—perhaps due to overhead becoming more noticeable relative to the actual rendering work. It’s not my field of expertise, so I can’t speak to the specifics, but the general concept seems plausible in my view.

1 Like

amazing bug report, thank you for it.

3 Likes

Yes, I just saw this post regarding Starfield: Reddit - The heart of the internet
Seems it has programming issues that imped performance, discovered by the VKD3D dev himself.

1 Like