Emulator Issues #13393open
Stuttering issues with NVIDIA drivers/cards and the Vulkan backend
What's the problem? Describe what went wrong.
I'm aware that this is a known issue, but it has plagued Dolphin ever since Ubershaders were introduced and it doesn't seem like anything will be done about it. I looked on the issue tracker for any references to this and I noticed that no one ever made a formal issue report about it.
Even when using Exclusive Ubershaders, there are still stutters that occur while using the Vulkan backend specifically. It doesn't matter the computer specs or the game, it occurs whenever Dolphin has to utilize the generated shaders.
It's been reported that this issue is exclusive to NVIDIA graphics cards, and that AMD graphics cards are free from this issue. It's been suggested that for a smoother experience, the Direct3D 11 backend be used instead of Vulkan for a smoother experience on NVIDIA cards. However, most of the work at this point has been done on the Vulkan backend and NVIDIA users would be missing out on features such as Backend Multithreading, which greatly speeds up performance so users can hit stable framerates at extremely high internal resolutions. I don't know if Direct3D 11 would ever be removed some day either.
I'm beginning to think that Dolphin itself will have to remedy this issue because I don't think NVIDIA has any interest in fixing it. This would be great as the Vulkan backend by itself is much faster than Direct3D 11 and is seeing the most development out of all the backends. The Backend Multithreading is great and would allow me to play a game like Super Smash Bros Melee at higher resolutions with Exclusive Ubershaders without there being slowdown during the end match screens (which are notorious for causing slowdowns).
What steps will reproduce the problem?
Prereqs - A NVIDIA card with the latest drivers. I use Windows, so I'm not sure if these issues are present under Linux.
1.) Go to "Graphics"
2.) Select your backend to Vulkan
3.) Set "Shader Compilation" to Exclusive Ubershaders. With this setting, stutter due to shader generation is nonexistant at the cost of some extremely high performance requirements. However, I find that modern graphics cards can handle this with zero issue. Use this setting to make sure you eliminate any need for specialized shaders which will generate some stutter in some games.
4.) Play any game that like to utilize shaders the most. A game like Super Smash Bros Melee is a good candidate as there were always stutters/hitches when loading into a stage in the very beginning for me even when using Exclusive Ubershaders with Vulkan.
5.) If you pay close attention you'll notice that there is still some minor hitching especially when loading into levels and screens.
Now to prove that this issue is not present in the Direct3D 11 backend, close out of the game and switch to that backend while keeping Exclusive Ubershaders enabled. Play the game again, and notice that those same hitches are gone.
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Is the issue present in the latest stable version?
What are your PC specifications? (CPU, GPU, Operating System, more)
Processor: AMD Ryzen 7 5800X 8-Core Processor
Number of Cores: 16
Speed: 4.7 GHz
CPU ID: 178BFBFF00A20F10
RAM 16 GB (G.SKILL Trident Z Royal RGB 3600MHz)
Video Card NVIDIA GeForce RTX 3080
Driver version 546.01
Motherboard: ASRock X570 Taichi (BIOS: P5.00)