Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Frame Pacing Problem (not FPS related)
Heya, when playing games with OpenGL the games will run correctly for a while and then something, not sure what, will cause the program to start frequently duplicating video frames resulting in visual stuttering. The only temporary work around is to do something that re-initializes the graphics output like opening and closing the GSDx Plugin configuration window or changing aspect ratio back and forth, this will get the emulator to return to correct frame pacing for a while.

PCSX2 v1.6.0

Edit: I have made an official report of this on the Github:
Computer specifications:
Windows 10 | Ryzen 3700X | ASUS Crosshair VIII Hero (WiFi) | MSI 1070Ti | 16GB 3600MHz RAM

Sponsored links

So it turns out I was getting confused and have now figured out the issue as well as how I came to be mislead.
  • Consistent micro stutter was eliminated by setting the emulator to operate at 60FPS instead of 59.4.
  • Kingdom Hearts II was suffering anomalous audio issues and the game was visually stuttering intermittently.
  • I first endeavoured to resolve the audio issues and saw people switching to Asynchronous audio so I did the same and it resolved my issue with audio.
  • I then tried to resolve the visual glitching by enabling EnableVsyncWindowFlag... little did I know that enabling that option would introduce more stuttering!
  • Meanwhile, the Asynchronous audio had made it hard to correlate the intermittent visual stutter with poor emulation performance... because the audio always played at the correct speed and was no longer glitching.
  • Eventually I started noticing that the intermittent stutter was occurring when I stood in certain places and faced the camera in certain directions, which made it clear the emulator was struggling to maintain a consistent frame rate. This was made even clearer when I tested out a visually lite game like Atelier Iris 3: Grand Phantasm.
tl;dr I overestimated the capabilities of my recently purchased computer hardware and have had to lower the Internal Rendering Resolution to resolve the intermittent stutter. I would've thought my computer could handle more than 4x internal rendering resolution in Kingdom Hearts II but I guess not.
Computer specifications:
Windows 10 | Ryzen 3700X | ASUS Crosshair VIII Hero (WiFi) | MSI 1070Ti | 16GB 3600MHz RAM
Anyway, what you describe is not like a problem only with performance. Even when reaching a high demanding scene, then leaving that scene it should bring full fps again.

Vsynch is not good for games that going less than monitor refresh. Anyway, thats for dx games. Nvidia has for opengl separate setting - its in control Panel settings and is called Triple buffering. This prevents tearing (micro stuttering) in theory (for ogl).

You may play more with settings, some gives load more on gpu other on cpu. See in task manager which has higher usage at corner cases. Look on percentages on emulator window too. And finally, pcsx2 got OSD recently with FPS meter - turn on this in options. Ultimately lastly, You may trade performance for effects going down with options like date or blending or mipmapping to retain 4x scaling. Of course, turnig off completely these settings may have heavy visual impact on games.
The vsync setting in the Nvidia Control Panel applies to all graphics API's, not just DirectX. The triple buffering option is exclusive to OpenGL (took them years to clarify this limitation in the options description).

Proper triple buffering better handles frame rate drops below the monitors refresh rate, but at the cost of increased input latency since there are more frames in the rendering queue so it takes longer for it to get to the frame showing your button input. Most DirectX games until very recently, used a dodgy implementation of Triple buffering (when offering the option).
Computer specifications:
Windows 10 | Ryzen 3700X | ASUS Crosshair VIII Hero (WiFi) | MSI 1070Ti | 16GB 3600MHz RAM
Well it turns out my annoying tendency to be scatterbrained when sorting out my own issues strikes again. My original assumption was correct, the frame pacing issue is not frame rate/performance related. The games I've tried (Kingdom Hearts 2 and Atelier Iris 3) barely use more than

15%% on one CPU core and around 5% each on several other CPU cores
22% GPU usage
10% of GPU Memory Controller
1% bus interface load

at 8x Internal Rendering Resolution. The FPS in the applications title bar also doesn't change in behaviour when the problem is occurring (I dunno why that never hovers at a constant FPS, even when things are working well).

With OpenGL I can play for hours with no issue, unless I multi-task and alt-tab back & forth between programs, including back and forth between PCSX2's main window and the gameplay window. That seems to be the catalyst for the issue. Once the issue transpires it can be resolved for the time being by switching back & forth between programs until the issue stops (even between the main PCSX2 window and gameplay window). Repeatedly switching programs can re-introduce the issue.

The issue manifests as very obvious stutter, with the appearance of video frames being presented out of order or being displayed for too long.

This wouldn't surprise me if this is a compatibility issue with the DWM. Fullscreen also exhibits the problem, if there was a Fullscreen Exclusive mode that bypassed the DWM then I could confirm if it's an interaction with the DWM that's causing the issue.

Edit: Even when frames are being presented in the correct order the frame pacing remains ever so slightly off. The pacing constantly rapidly fluctuates ever so lightly so a smooth camera pan looks like the camera is very, very subtly speeding up/slowing down rapidly. Most easily observed in a 60FPS game.
Computer specifications:
Windows 10 | Ryzen 3700X | ASUS Crosshair VIII Hero (WiFi) | MSI 1070Ti | 16GB 3600MHz RAM
~~v1.7.0 dev 143 gf44f676cc

That version is worse than v1.6.0, in this 1.7 version the severely fluctuating frame pacing issue comes and goes as it pleases, there is no way to achieve a tolerable experience that will last hours.
Computer specifications:
Windows 10 | Ryzen 3700X | ASUS Crosshair VIII Hero (WiFi) | MSI 1070Ti | 16GB 3600MHz RAM
Such issue (might be driver issue) is hard to track.

Is the scaling going down to 3x still helps? I ask because windows task manager shows usage in some awkward way. Even when application use one or two threads, task manager spread total usage among almost all cores (it is presented that way). So its better to sum up the usage, and take into consideration pcsx2 is a dual or triple thread application, depends on settings. Especially, when you sum up 16 threads (15%) and divide by two or three. I am sure your ryzen is good CPU, just partucular games might have some own bootlenecks. Thats just for informating and enough about performance for now.

Opengl drivers in windows are just like transplantation. These are not native libraries. Even though usually all works well, sometimes can be problems. Try maybe different drivers? Clean install or so?

I wanted to ask to try other pcsx2 version, but You've tried i see. Well, if another version is worse, then it may be emulator culprit.
What I meant was that one CPU Core would be around 15% utilized while the other CPU cores would be around 5% utilized. I have Task Manager set to display logical processors. I've updated the relevant post to reflect this new information.

I tried updating to the latest 451.85 hotfix display drivers and there was no discernible change (in hindsight this may have fixed Direct3D Hardware). The only thing that changed the behaviour was going from PCSX 1.6.0 to PCSX 1.7 dev 143. From what I've seen on the Github open and closed issues there have been a few changes since 1.6.0 to try and improve compatibility with the Windows DWM and I think that those changes worsened the situation.
Computer specifications:
Windows 10 | Ryzen 3700X | ASUS Crosshair VIII Hero (WiFi) | MSI 1070Ti | 16GB 3600MHz RAM

Users browsing this thread: 1 Guest(s)