libretro / parallel-n64

Optimized/rewritten Nintendo 64 emulator made specifically for Libretro. Originally based on Mupen64 Plus.
319 stars 127 forks source link

Freesync not working properly in Parallel core #717

Open Xenphor opened 3 years ago

Xenphor commented 3 years ago

Specs: Gigabyte M27Q 170hz Freesync Monitor 8700k@4.7ghz Geforce 1050 ti Windows 10 Retroarch 1.9 Parallel core 2.0-rc2 dba9fc8 with Parallel RDP+RSP

I just got a Freesync monitor and the Parallel core doesn't seem to be syncing properly when using Freesync. I've tested this by running games that trigger interlacing, such as Killer Instinct Gold, and using the shader crt-easymode-halation which has interlacing support. I would expect the deinterlacing to flicker at a consistent rate, but this does not happen when using Freesync; instead there are noticeable breaks in the flicker. When using the same setup with Freesync disabled at 60hz (my previous setup), it does flicker at a consistent rate.

I've tried other games such as World Driver Championship, a 30 fps hi-res game, and it does not flicker consistently. There is also noticeable stutter in the text scrolling at the title screen. Switching to 60hz and disabling Freesync solves the issue.

I've tried the Mupen core with Freesync and it appears to work correctly (or at least inconsistent motion is not as noticeable), although it doesn't trigger interlacing in shaders so I can't test that.

GitMoDu commented 3 years ago

That sounds to me more like a shader issue, as the CRT shader is likely assuming constant time between each frame, which becomes false once you're using FreeSync. Either that or there's a small timing bug in the core, when handling async vsync.

Xenphor commented 3 years ago

That sounds to me more like a shader issue, as the CRT shader is likely assuming constant time between each frame, which becomes false once you're using FreeSync. Either that or there's a small timing bug in the core, when handling async vsync.

I noticed that scrolling wasn't as smooth before testing with that shader, but I didn't have a way to objectively measure the lack of smoothness, so that's why I thought of using a shader that supported interlacing. I suppose a better way to test would be to use FCAT software but I don't have that setup.

I have used the shader with the beetle-saturn core in games that support interlacing like Virtua Fighter 2 and the flicker is consistent when using Freesync.