G-Sync FreeSync setup settings and tests

Hi there! Just trying to sort out the G-Sync settings in RetroArch. I think I’ve solved it so I thought I’d post to assist others too.

After reading: https://www.libretro.com/index.php/upcoming-retroarch-1-7-4-sync-to-exact-content-frame-rate-ideal-for-g-syncfreesync-users/

I was surprised it recommends:

Steps to take for it to be effective:

  • Have G-Sync/FreeSync active in your video driver control panel and monitor menu
  • In RetroArch, set “Video” -> “Vertical Refresh Rate” to your monitor frequency (you can use “set display reported refresh rate” as it should give you your desktop refresh rate)
  • Activate “Frame Throttle”-> “Sync to Exact Content Framerate (G-Sync, FreeSync)”

Keep V-Sync active in Settings -> “Video” , it won’t work with it disabled.

Particularly turning V-Sync on. In my previous games/applications, you needed to turn V-Sync off in order to use G-Sync.

What I’ve found when V-Sync is on, it seems to double the FPS. So when I load up a NTSC SNES game it runs at 60fps, when I run a PAL SNES game it runs at 50fps. Both double the expected frame rate.

In combination with V-Sync appearing to stop it working I also noticed that the default OpenGL video driver I had been using doesn’t seem to work with G-Sync. As soon as I changed it to Vulkan it started behaving properly. I did wonder if this is recommended because early on in a game RetroArch crashed so I thought maybe it’s a bit less stable? Keen to hear other thoughts on this.

Long story short, the way I got it working is:

Settings > Drivers > Video > vulkan

Settings > Video > Output > Vertical Refresh Rate 144.000Hz (this is my monitor’s refresh rate)

Settings > Video > Synchronisation > Vertical Sync (Vsync): OFF

Settings > Video > Synchronisation > Sync to Exact Content Framerate (G-Sync, FreeSync): ON

My setup and test:

OS: Windows 10 64bit RetroArch v1.8.9 Core: Snes9x (1.60 6db918c) GPU: GeForce GTX 980

1 Like

In my case, turning Vsync off results in bad stuttering in RetroArch. The rest of your settings are the same as mine, though I use the “Set Display Reported Refresh Rate” option to set my refresh precisely. Vulkan, GL and GL Core all perform the same with Gsync as far as I can tell, but Vulkan doesn’t have the second or two pause before fast forward engages.

Also, Gsync is meant to function properly with Vsync on from everything I’ve read on the subject lately. Vsync acts as a hard cap, so if your FPS exceeds your maximum refresh rate, no tearing occurs. And it’s also recommend that you set an FPS cap 2 or 3 frames below your refresh rate so unlocked framerate games stay in Gsync range for reduced lag.

The only time you might want Vsync disabled is if a game also locks the framerate when it’s enabled. To get around that you can enable Vsync globally at the driver level and leave it off in game. Though I think that will disable fast forwarding in RetroArch, since it needs to disengage Vsync to do that.

1 Like

Thanks for your input. So I tested again and strangely, Open GL does appear to work. 25FPS on PAL and 60 on NTSC. Not sure why it’s double on NTSC for the particular game SNES Prince of Persia. Interesting about the Vsync being the upper cap. I think some games outside of Retroarch I did notice Vsync locked the frame rate lower that’s when I leanred to always turn it off. Glad I can keep it on OpenGL becuase I’ve noticed issues with Vulkan so that’s nice.

I think for 30/25 FPS games, RetroArch does some kind of frame doubling, so the frame counter might not be accurate for them. I forget exactly why it does this; I think it’s supposed to help with consistent framerates in them or something.

1 Like

No. That’s not true. Vsync on or off has absolutely nothing to do with being able to use gsync.

Furthermore, if you disable vsync, gsync is also disabled for frame rates your monitor can’t handle. If you get 150FPS, your 144Hz monitor can’t handle that, so gsync gets disabled. If you want to prevent vsync input lag, you need to cap your FPS (not needed with RetroArch, since it already caps it for you.)

Thanks. More testing required. I also realise 25fps PAL is 50hz and 30fps NTSC is 60hz so that makes sense why my monitor is telling me I’m getting 50 and 60 FPS when gsync is working. I think my reasoning behind turning off vsync being a requirement was when I was playing some games turning it on locked the frames rather than letting them go up and down and syncing with the monitor.

I’ve been running with just Vsync off and Sync to Exact Framerate on. That seems to work fine so far, most of the time. I’ve used the Direct3D12, GLCore and Vulkan drivers.

There was once instance where there was flickering on my son’s Gsync monitor with the PSX Beetle cores and we resolved that by changing the Fullscreen preference (video_windowed_fullscreen = “false”). But other than one instance, it seems to run games at around 60fps with no tearing or anything like that with just Vsync off and Sync to Exact Framerate on.

1 Like

No stutter or judder on 60fps scrolling either? You should check with the 240p test suite ROMs, which have a scrolling test that makes it easy to spot any stuttering. There’s a PSX BIN/CUE version here.

Edit: The PSX test suite hangs on the PS logo in Beetle PSX. Still, you could try the Genesis or SNES versions of it, which should indicate whether you get any scrolling stutter with Vsync off.

1 Like

That’s awesome! I have trouble telling straight away if there is tearing or not. It can be hard to tell! This is awesome going to try those test roms.

My son managed to detect some cases of tearing here an there using the Mupen64Pluas-Next core so I’m going to enable Vsync in addition Sync to Exact Framerate on all my configs as that seems to resolve the issue. Keep in mind that I’ve left the default frame cap of 60Hz in place while both our monitors are 144Hz so that may be a contributing factor. Whatever the case, enabling Vsync seems to have resolved the issue and that’s an easy fix.

I can’t remember the reasoning, but one of the devs recommended setting it to your actual refresh rate (using the “Set Display Reported Refresh Rate” option is the easiest) for a variable refresh rate setup instead of leaving it at 60Hz. All I can think of is that maybe leaving it at 60 would cap any cores that use a refresh higher than 60 (even a small decimal like 60.2), which could cause minor stutters.

I set vsync on but exact sync off with mupen_next.
N64 emus have inconsistent frame pacing and setting it like this get rid of slowdowns on my setup (gsync monitor win7 x64).