Emulator Issues #12123
Framerate issues with skip duplicate frames off and dualcore on on Zen2
Game ID? (right click the game in the game list, Properties, Info tab)
MD5 Hash? (right click the game in the game list, Properties, Verify tab, Verify Integrity button)
What's the problem? Describe what went wrong.
Audio runs fine and Dolphin says it's running fullspeed but the framerate fluctuates wildly, always stays below what it should be and there's a lot of input lag. However, this only seems to affect some games and did not happen on another computer with the same nVidia drivers and a graphics card with the same architecture but a Skylake CPU (a 6600K) instead of a Zen2 one (3700X). I've tested Colosseum, Prime and Melee and only the first two seemed to behave like this. Turning off the dual core hack or turning on skip duplicate frames fixed this.
What steps will reproduce the problem?
Boot up either game. Colosseum should start having severe framerate issues right after the Genius Sonority logo and Metroid should start having them as soon as you load up a save (or get past the menu).
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?
If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)
The first version to show this behavior is 5.0-11524, which introduced the option to present duplicate frames.
If your issue is a graphical issue, please attach screenshots and record a three frame fifolog of the issue if possible. Screenshots showing what it is supposed to look like from either console or older builds of Dolphin will help too. For more information on how to use the fifoplayer, please check here: https://wiki.dolphin-emu.org/index.php?title=FifoPlayer
I'll record one later if it might help.
What are your PC specifications? (CPU, GPU, Operating System, more)
Tested on two computers.
A-Ryzen 7 3700X
nVidia 1060 3GB
Both running Windows 10 (1909) and both have 16GB of DDR4. The Ryzen system is running it at 1.8Ghz 1:1 with relatively low timings so the RAM shouldn't be holding it back.
Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)
Just to reiterate, the games seem to be running fullspeed internally as there's no audio crackling and Dolphin reports it's running at 100% speed. Dolphin itself does report lower than normal framerates though.
I've been doing some more testing with Pokemon Colosseum. All backends initially behave similarly. However, the stuttering is far less severe with both D3D11 and D3D12, ends up going away after around 5 minutes or less and isn't there on subsequent boots. From what I remember, neither had issues with the title screen and only started stuttering like crazy after loading into a map. On OpenGL and Vulkan the stuttering is far worse, starts at the title screen and is still there if you close and boot up the game after it goes away. I thought it might be related to shader compilation but I'm using Async Ubershaders and I have Compile shaders before starting on so I don't think that makes a lot of sense.
It doesn't seem to have any effect on Vulkan or OpenGL. By the way, OpenGL doesn't start stuttering at the title screen now, it starts when you load into a save. I'm starting to think either my shader cache is corrupt or there's something messed up with my windows install, since I tried booting from the other computers' hard drive and dolphin worked fine with (as far as I could tell) the same settings, same drivers and I think same updates. The two biggest changes with that would be the windows install itself (mine might be corrupted but the infamous SFC utility can't find anything) and the shader cache from the other Dolphin. I don't have time to do any more testing now but I'll save a copy and see if deleting the shader cache does anything.
So, I've been trying more stuff and I've found out this only happens in 60Hz mode. However, F-Zero GX doesn't have this issue, regardless of what screen mode you choose. I don't think Colosseum and Metroid Prime share the same engine but they might share the audio microcode, in which case, does F-Zero GX use the same audio microcode? I don't quite see how this would affect framerate without affecting the emulation speed itself but I'm just trying to narrow down the specifics of this.
It's only really buggy with those two specific games (though I should test other AX microcode games) and only in 60hz mode. What ticks me off is that it doesn't seem to happen on Intel CPUs, but then again it might be down to IF shenanigans with Zen. It would be interesting to test whether a 3300X would behave the same but that's besides the point. Anyway, I've been doing some more testing, I'll write here some of what I've found just in case.
Both Sync GPU and Deterministic dual core fix this without having to give up all of the performance gained with the dual core hack. For what it's worth, it might be useful to have either of these enabled in the game-specific settings by default or to add a warning about this on the wiki. Also, with the chipset drivers the issues are far more severe and inconsistent so go figure. This might also explain why booting from the other computer's drive seemed to fix the issue, since it didn't have any AMD chipset drivers on it and without them only the world map seems to have this issue (I was testing on Colosseum for the most part). I've also noticed that the pipeline cache file is about 3/4 the size when generated using the drivers. It seems newer versions of Windows 10 come prepackaged with an AMD chipset driver so I had to install 1703 to test without drivers.
Oh, I knew I was forgetting about something. With the drivers, performance is very inconsistent. Sometimes the game ends up running at about 20 FPS. When that happens, the player character seems to behave in a way that reminds me of the "Shaky props" issue in Mario Sunshine. Combined with the fact this only happens on Zen, with the dual core hack on, running at 60Hz and with Skip uplocate frames on it might be down to IF being far laggier than the ring bus coupled with something those two specific games are doing.