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

2 Likes

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.

2 Likes

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.

2 Likes

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.

2 Likes

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.

2 Likes

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).

2 Likes

I’ve been trying to learn my way around RA these past few days and have been perplexed by an issue I’m having with the Vulkan support. I also have a 144Hz monitor with G-Sync and have configured the frontend similar to the way the OP had done.

Here’s some of the configurations I’ve tried:

  • Vulkan: Turning Vsync off, then toggling Fullscreen mode on = RA crashes about a second after going fullscreen
  • Vulkan: Turning Vsync on, then toggling Fullscreen mode on = No crashes, 60 FPS games run at 60 FPS.
  • Vulkan: Turning Vsync on, then toggling Fullscreen mode on, then turning Vsync back off = No crashes, 60 FPS games run at 30 FPS. Bringing up the RA menu causes the display to output at 60 FPS while it’s up, then it reverts back to 30 FPS for the game.
  • Vulkan: 60 FPS games will always run at 60 FPS while RA is running in a window.
  • Opengl: No crashes or 30 FPS issues at all.

Does anyone know why running the game in fullscreen without Vysnc in Vulcan might cause a 60 FPS game to run at 30 FPS? I’m really of curious as to what the cause that. Thanks!

Do not disable vsync. Simple as that. There is no reason to disable it.

Hey guys, this is my first post!! :slight_smile:

I have been using Retroarch for a good handful of years and I finally decided to upgrade my monitor to “SAMSUNG 32 Odyssey G32A FHD 1ms 165Hz Gaming Monitor with Eye Saver Mode, Free-Sync Premium.”

So far my games that run on GOG that are 3d work so well after tampering with the settings!!

But I am a DIE HARD 2d retro gamer.

HERE IS MY PROBLEM:

I have video stuttering issues that are driving me crazy, I know what the games are supposed to look like but I can’t get them to look anything but choppy!! PLEASE HELLLLLP.

What I have tried so far:

-Changed refresh rate in settings of actual CPU to 165 HZ -Verified freesync is turned on through monitor -Verified freesync turned on through AMD graphics card

RETROARCH SETTINGS:

-Vertical refresh rate 165 hz -Sync to Exact Content Framerate (G-Sync, FreeSync) turned on -Resolution 1920 x 1080 165hz -Tried all video drivers -Switched settings around in different orders

Im getting a little worried here can somebody please help me? I feel like it shouldn’t be this hard to set up? Any help would be more than appreciatted :smiley:

Hmm, it should just be: video_refresh_rate to match your monitor’s native/max refresh, sync to exact content framerate ON and vsync ON. EDIT: make sure your GPU control panel/utility isn’t forcing any sync settings on top of RetroArch’s own sync.

1 Like

To add to what @hunterk said, I’ve noticed that a few cores might get choppy when both VRR/GSYNC/FREESYNC and VSync are enabled. For those you might have to disable VSync.

1 Like

I checked the config file and I’m at 165 hz which is correct, still no dice :’(

Where would I be able to check this? I right click and open up my Radeon graphic card settings and see no options. I’m unfamiliar with sync settings?

Signed up to post this as your setup is pretty close to mine, and I just figured out how to get 100% smooth playback this evening on my rig. I’m also on a 165 monitor (g-sync compatible) using a 3070 ti GPU. Some of these settings might not be relevant, but who knows! I’m also going off memory so hopefully I’m not missing something.

Video driver: Vulkan Windowed fullscreen disabled Refresh rate set to reported refresh (165.xxx) Vsync on Vsync swap interval auto Sync to exact content framerate off

To avoid pixel wobble and If I’m going for that pixel perfect look, I’ll enable the sharp-bilnear-simple shader. If I want a CRT look, I’ll go with the CRT royale NTSC s-video preset.

With these settings, every game is flawless. A really good indicator is that Mortal Kombat arcade runs at the proper refresh (something like 54 hz), and the vertical scrolling of the characters in the attract mode is perfectly smooth. All horizontal scrolling I have seen runs perfect as well (Friday the 13th on NES is an excellent test game for this, as you can just pick a direction and walk without needing to press any other buttons).

Let me know how these settings go for you!