Hello, I’ve been a Windows user for my whole life, and I would love to switch to Linux, however, I play a lot of DX12 games and find the performance to be lacking. I understand that this is an ongoing issue with NVIDIA, however, I am really confused as to the status of the current situation.
I’ve read in a lot of places that using the CachyOS Proton 11 will allow you to use PROTON_VKD3D_HEAP=1 VKD3D_CONFIG=descriptor_heap %command% to run a game using the in-progress changes to vkd3d-proton, however, in the DX12 games I’ve tested, I am still seeing a significant performance delta that favors gaming on Windows significantly.
A large portion of the information I have searched for online is saying that this is “the fix” for DX12 games on Linux under an NVIDIA graphics card.
I understand the work on this is not 100% complete, but I thought people were seeing results with this early version. I am no longer sure if it is just because the work is incomplete, I have misconfigured something, the specific games I am having issues with are outliers, or if it is something completely unrelated.
Here are my system specs:
CPU: AMD Ryzen 9 9950X
GPU: NVIDIA GeForce RTX 4080 SUPER
RAM: 64 GB DDR5
(If more detailed specs are useful, please let me know)
Here are the games I have a significant performance loss compared to Windows 11:
God of War: Ragnarok
Horizon Zero Dawn Remastered
Subnautica 2
Any assistance or explanation is greatly appreciated. I want to know if I am stuck on Windows with my NVIDIA GPU and will have to wait until I upgrade to AMD to switch to Linux.
So to my limited knowledge, and with the disclaimer I have not used Nvidia in years. Is that it’s a architectural issue, basically NVIDIA hardware is designed around optimizing descriptor heap operations (which is what D3D12 uses), and there isn’t an exact Vulkan equivalent. Vulkan is what Proton uses to translate DirectX into something Linux can use.
If I recall correctl the way it works is VKD3D-Proton has been emulating heaps using descriptor sets or buffers, which creates a mess when dealing with hardware optimized for native heaps. There isn’t really any super solid fix for this from what I can gather, but I do think PROTON_VKD3D_HEAP=1 is still in beta and is not a stable release yet, so if you are using that you might actually make the issue worse, but this is pretty much the absolute frontier of my knowledge with how all this stuff works and it might not be fully accurate.
Something you could maybe try is running PROTON_HIDE_NVIDIA_GPU=1 which spoofs the GPU as AMD and might help with your performance issues. You could also try VKD3D_CONFIG=force_static_cbv but that’s explicitly marked in the VKD3D docs as a unsafe speed hack, it seems to be a coin flip but if you’re feeling like taking risks you could give that a go.
Last thing I could dig up is that Wayland tends to run better over X11, but I have never used X11 so I cannot really speak on that with any real knowledge.
Sorry I can’t be much help but that’s what I could gather. It doesn’t seem to be something we can fix on the user side of things.