It time to shed a light on this, it seems like DX12 games does not perform very well under Linux.
I think the problem lies somewhere in the driver and not really vkd3d-proton itself.
As a comparison, here are two screenshots,
Linux (X11):
As you can see there’s a huge difference in Avg./Lowest FPS.
I have basically tried every trick in the book, nothing I make on “user level” helps much (vk3d3 versions, proton versions, kernels, drivers etc).
As a comparison, Linux can really shine (It’s pretty amazing considering we use 2 layers, Wine and DXVK.
This is a benchmark from a random DX11 game i just picked, AC Odyssey.
Linux (X11):
The game for this screenshot is Assassin’s Creed Valhalla.
Without seeing per core CPU usage under both OS’es, it’s hard to say. The game could be CPU limited under Linux for a variety of reasons. And then there could be other reasons such as missing NT synchronization primitives support on your system or something else.
Blaming NVIDIA drivers alone for the low performance when emulation is such a complicated process is just stupid.
It was an example, many games suffer from bad vkd3d-proton performance with Nvidia. The quite recently added VK_NV_raw_access_chains extension fixed some of those issues, but not all.
Btw, regarding AC Valhalla I have tried both Fsync and Winesync, it doesn’t really matter what I use, CPU usage is fine… it’s higher in Linux but not as much as it should slow things down.
Also, AC Valhalla is a GPU bound game. Not so much CPU.
AC Odyssey on the other hand, is more CPU bound.
Arch Linux w/ 6.10.6 kernel
RTX 4080
i5 12600k
NVIDIA driver 560.35.03
KDE Plasma 6.1.4 on Wayland
Latest Proton-GE used in all examples.
FSync should be enabled for both games but I didn’t verify.
I did some testing with a couple games and found with CPU bound scenarios, Linux and Windows perform comparable, sometimes slightly better on Linux. When they’re GPU bound however, Windows pulls very far ahead.
Far Cry 6 for example in a CPU bound scenario,
Linux:
Halo Infinite was much worse. That game, even at 768p all low, was “GPU bound” yet GPU power draw was roughly 150w (truly GPU bound would be 250w+). Max settings and same spot, I was getting ~192 FPS on Windows but ~120 on Linux. Async Compute was also broken causing frequent stutters and frame pacing issues.
Problem is, I don’t have an AMD GPU system to compare against nor do I have recent benchmarks from one for these games showing GPU/CPU usage to confirm if it’s the same situation or not. Without that, I can’t really point a finger at the NVIDIA driver or VKD3D since it could be either.
Here’s Valhalla running vkd3d-proton under Windows… It’s better than Linux but still worse than DX12.
vkd3d/Vulkan performance doesn’t seem to be that good really on either OS. I’m not sure if we can blame the Linux drivers only.
Either Vulkan needs to be optimized in the Nvidia drivers, or Nvidia need to help the vkd3d-proton devs.