You really need to compare DX12 in Windows vs DX12 (vkd3d-proton) in Linux…You’re adding too many variables by using different APIs.
But I think Nvidia get the issue by now, the big question remains, can they fix it?
You really need to compare DX12 in Windows vs DX12 (vkd3d-proton) in Linux…You’re adding too many variables by using different APIs.
But I think Nvidia get the issue by now, the big question remains, can they fix it?
Yes it is what I wrote at the end. The best way would be to dual boot Sniper Elite 5 on Windows and Linux, and test Vulkan and DX12 on both systems to see if they differ on both systems too. But Sniper Elite 5 seems to be a good candidate for that (as any game having both dx12 and vulkan renderer implementations).
I am sure they can, the question is do they want to put resources for that. AMD has quite a lot of incentive to maintain good compatibility /translability due to the fact they power the Steam Deck (and possibly the Steam Deck next gen). That said this could also be an incentive for nvidia not to lose the competition on that front, you never know what the future holds.
It might be worth fixing just to shut people up, myself included. ;)
@DAUNTIN_01 Would you have a Windows partition, wllowing you to test DX11 and DX12 under Windows too? Because this could be a difference of implementation. Like for Baldur’s Gate 3, which runs both DX11 and Vulkan, but has reportedly a bad Vulkan performance on Windows too.
We can also be hopeful that future games will have good native Vulkan renderers, such as in Indiana Jones or RDR2. This would resolve the problem entirely.
According to this article: Sniper Elite 5 im Technik-Test: Benchmarks, DX12 vs. Vulkan, Frametimes und VRAM - ComputerBase then in Sniper Elite 5, there is almost no difference between DX12 and Vulkan on Windows. Whereas I see with the same 4K resolution than the article I see a 25% difference between them. I would need of course to confirm this on my system (I have no Windows…), but this is a first clue the difference I see is related to VKD3D+drivers, and just in line with what you and others reported many times.
I should look at the wattage too. Several people have reported they see lower wattage in VKD3D renderer. Imagine if the bug were just a power issue! After all, there was recently a clocking issue that was solved in latest drivers.
If let’s say a Vulkan renderer performs much worse in a game it’s not really because of Vulkan itself, it’s the optimization of the Vulkan renderer in that specific game. So just because Vulkan exists as a renderer, it doesn’t automatically mean it’s better than a DX12 renderer,
I will repeat myself once again here.
If the vkd3d-proton devs can’t fix the performance issues (on their own), it’s really up to Nvidia.
We agree completely, a Vulkan vs DX12 comparison has no value on absolute number. Baldur’s Gate 3 is an example.
However the relative gap between the two APIs should be the same on Linux and Windows if there were no Linux specific perf loss in translation, correct? The case of using vkd3d-proton on Windows is a good control test indeed. Does DXVK-proton also work on Windows, without performance loss then?
Thanks a lot for the recap - hopefully this will be solved eventually.
I have not tested since I never had a reason to.
Overall, DXVK performance seems fine, I saw somewhat less FPS in Kingdom Come Deliverance (the first game) in LInux but I’m not sure if it’s a proton or game engine issue rather than a “DXVK issue”.
I’ll leave this here, there’s an application profile present for Control that causes a performance drop.
Removing the profile for Control makes the game run better, at least on my card using RT.
I noticed essentially the same issues in S.T.A.L.K.E.R. 2 as well.
Specs:
7950X3D (linux binding game process to cache cores, windows using game bar which does the same thing)
RTX 4090
When in windows, using maxed out everything and DLAA + DLSS Frame Gen, I get approx. 90fps@ 4K, 60 without framegen.
CPU Utilization can be as low as 5-10%
In Linux, to get comparable performance, I need to do DLSS ‘Quality’ and DLSS FG.
CPU utilization, however, is remarkably high @ 50-60%.
GPU draws way less power in Linux and caps at 95% utilization.
For example, ~400-420W in Win 11 Stalker 2, 340-370W in Linux.
Now, I’m no expert to DX12->VK and Linux Gaming in general, but it seems like there is probably some serious CPU overhead/load issues somewhere in the DX12 ↔ DXVK stack or the Linux driver itself.
I can easily switch between my Fedora-41/Nobara and Win11 OSs, but I wish I could provide some more concrete data but STALKER 2 doesn’t have a benchmark.
It definitely ‘feels’ like the graphics card might be being held back waiting on CPU processes, but I have no idea if it’s a driver issue or an optimization issue in DX12->VK.
It’d be interesting to see why AMD handles DX12/Proton (apparently) way better and it might just be NVIDIA’s implementation of newer “DX12 eqv.” VK API calls or something.
So yeah, just parroting what @shelter is saying above, but wanted to add another data point.
It is always useful to add more evidence. Indeed a common denominator is the lower power consumption associated with perf loss. Now causality has to be established: is it lack of power that leads to the gap or is it a bug in the driver and/or nv_vulkan and/or vkd3d that leads to the gap, which is then translated by the lower consumption.
I think the best way to test is indeed to select apps/games that have both dx12 and vk implementations, and measure the gaps in both Linux and Windows. Sniper Elite 5, the Finals are good examples. The other side tests are those games that have both dx11 and dx12 renderers (Wukong) and as @shelter suggested, also test Proton+vkd3d under windows too.
Now this should also be repeated with an AMD card to see if this is also true, although the software stacks are completely different.
It’s definitely something holding back the GPU somehow. But from what I’ve seen the Power usage and Clocks are fine in most games so I don’t think that’s the issue.
I started using Linux as main desktop 2 years ago… the performance issues has been there since then at least, NOTHING has changed regarding the Nvidia performance during this time in the DX12->vkd3d translation, only very minor things.
So, how long it will takes to fix this issue ?, as i can see from comments this is problem is from nvidia driver side, i really want a fix in next driver release, but when i see the nvidia attention to this, i doubt this will be fixed in next couple of months
Semi off topic.
Well, I gave up and went to Team Red after 2 years.
Initial experience with my 9070 XT is that it runs awesome.
vkd3d-proton performance and general experience? Well, it’s quite an uplift.
Is it perfect? No, the drivers need some work because the card is so new, but overall it’s very good. And the fact that you can switch between Mesa and the amdvlk proprietary driver through an ENV variable without rebooting really helps the situation.
dxvk performance is not such a huge improvement over Nvidia, but I see less stutter in some games, I think it’s related to better/faster shader compilation on AMD.
Nvidia driver sure has improved over these 2 years, thanks to the devs for that but you REALLY need to sort out the vkd3d issues and also improve slightly on dxvk.
Interesting. Helldivers 2 lost around 4% of FPS on this title. I use launch option --use-d3d11
All setting are max and I used supersampling on render scale in display options to push the gpu to its limits. It seems DirectX12 only lost 3 FPS compare to DirectX11. DirectX12 is also using more power.
I would says this pushing the margin of error on the developer’s difference of DIrectX12 implementation vs DirectX11
Resolution: 2560x1440
GPU: 4070 TI
CPU: 9800X3D
Kernel: 6.13.8
Platform: wayland KDE
DirectX11
DirectX12
nvidia-bug-report.log.gz (1.9 MB)
You should get benchmarks from within Windows to compare DX12 native through VKD3D.
Hell if anybody has an equivalent AMD card that would also be helpful as the Windows ->VKD3D-Linux performance difference is much better on an RDNA card.
Benchmarks like this are the goal for the driver fix.