Retroarch: (Vulkan Video Driver) Retroarch loses Gsync after closing content at least twice

Created on 26 Jan 2020  路  11Comments  路  Source: libretro/RetroArch

First and foremost consider this:

  • Only RetroArch bugs should be filed here. Not core bugs or game bugs
  • This is not a forum or a help section, this is strictly developer oriented

Description

GSync turns off after closing content within Retroarch while using exclusive fullscreen.

Expected behavior

Gsync should always remain enabled for as long as exclusive fullscreen is being used in either the Retroarch frontend or actual content. When Gsync is enabled, it should allow for dynamic refresh rates to be displayed on a Gsync compatible monitor. If using NVidia's Gsync indicator setting in the control panel, the indicator should always say "Gsync" on the top right of the screen for OpenGL/Vulkan content, and GSYNC ON for DirectX. If the framerate indicator is enabled within Retroarch, the framerate should be set to the rate of the content or the monitors max refresh rate (if the setting is enabled in Retroarch).

Actual behavior

G-SYNC works initially after loading Retroarch for the first time. After closing content within Retroarch at least twice, the program loses its Gsync status. If NVidia's Gsync indicator setting is being used, the indicator will say "NORMAL" for OpenGL/Vulkan content and "GSYNC OFF" for DirectX. If the framerate notification is enabled within Retroarch, the reported framerate will be extremely high (in the upper thousands for me). If you load content at this point, Gsync does not re-enable itself. This is noticeable since content will then have irregular framepacing. The only way to get Gsync back is to close out of Retroarch completely and reopen it again. This behavior seems to occur regardless of video driver.

Steps to reproduce the bug

(Note: This is assuming you are using a NVidia graphics card. I don't know if FreeSync has the same issues.)

  1. Make sure the appropriate settings are enabled to allow for Gsync to be taken advantaged in both Nvidia CP/Retroarch.
  2. In the NVidia control panel, click "Set up G-SYNC". Then in the toolbar area, click on Display > G-SYNC indicator. For some reason the G-SYNC indicator option might not appear in certain parts of the control panel, but being in the "Set up G-SYNC" area seems to work.
  3. Load Retroarch and go load some content (I tested with Flycat/BlastEm with the Vulkan video driver). There should be an indicator on the top right corner of the screen that indicates that G-SYNC is on.
    4.) Close the content without closing Retroarch. G-SYNC should still be enabled.
    5.) Load some other content. G-SYNC should still be on and working at this point.
    6.) Close the content without closing Retroarch. At this point G-SYNC could still be on.
    7.) Load some other content. By this point, the G-SYNC indicator should now be off. If you close and reload other content, G-SYNC should remain off until you close and reopen Retroarch.

Bisect

I don't know when this started occurring, but this has been a problem for a few months now. It has worked consistently in the past, however.

Version/Commit

You can find this information under Information/System Information

  • RetroArch: Jan 25 2020 36cbcb12b2

Environment information

  • OS: Windows 10 x64
  • Graphics Card: NVidia GeForce 680 GTX
  • CPU: Intel 2500k
  • Monitors: Acer XB271HU (G-Sync, primary monitor), DELL U2412M

All 11 comments

I don't have this issue with a GTX 1060 3GB on Windows 10 x64, G-Sync enabled for both windowed and fullscreen. I do have an issue where RetroArch's framerate goes unstable if I have even simply had a secondary non-G-Sync display enabled in any way without a reboot in-between, and I have to restart the graphics driver (Ctrl + Shift + Win + B) after disabling the secondary display to fix it. Could you having a secondary display be causing your issue in a similar way?

Hmm. I disconnected my second non-gsync monitor (the Dell one) and ran Retroarch and could reproduce the problem every time. I restarted the computer with the second non-gsync display disconnected and was still able to reproduce the problem. :(

Just in case, I started with a fresh folder of Retroarch from the buildbot and changed the settings from default to the following:

1.) Drivers -> Video -> Set to "Vulkan"
2.) Drivers -> Menu -> Set to "ozone"
3.) Video -> Output -> "Vertical Refresh Rate" (120.000 Hz)
4.) Video -> Synchronization -> Set "Sync to Exact Content Framerate" to "On".
5.) Video -> Fullscreen Mode -> Set "Start in Fullscreen" Mode to "On".
6.) Video -> Fullscreen Mode -> Set "Windowed Fullscreen Mode" to "Off".
7.) Onscreen Display -> Onscreen Notifications -> Set "Set Display Framerate" to "On"
8.) Downloaded blastem core, played Sonic 3

Same issue is still occurring. :\

Sorry for the triple post, but I think I figured out where the issue lies now.

It's with the Vulkan driver. I could've sworn the same issue was occurring with every other driver, but setting the driver to opengl and performing the same procedure to reproduce the bug results in gsync always being on. I tried changing each setting I made mentioned before back to default and the driver was the only one to make a change...

I could've sworn the Vulkan driver did work consistently at some point though, maybe it's a NVidia driver bug?

Came to report that this is happening to me as well. I can reproduce this on untouched, freshly generated configs on this hardware/software:

Win10
Nvidia driver 441.87, 2060 Super, Ryzen 3700x
RA build Feb 6 2020 x64

Vulkan
Audio sync with the default 64ms latency
Vsync
Exact Framerate
No Shaders
Xaudio
SNES9x current

Used Gundam Wing Endless Duel as a test case because it has 30hz on/off flicker present in the title screen. Loaded the game and it works fine during the initial run, closed the session while staying in RA, loaded another game, closed session in RA, loaded Gundam Wing again; loses perfect synchro and flicker is uneven.

To attempt fixing it within the same session I tried toggling Exact Framerate, changing audio latency from 32 to 64hz and back, toggling audio sync, toggling vsync. Nothing restores the synchronization within the same session.

Installed the latest Win10 updates and Nvidia drivers; 1909 build 18363.628 and 442.19 respectively. Issue still ongoing.

Tested a few versions back. Nightly 12/16/2019 and 1.8.0 stable both exhibit this problem. This is either something we just now noticed or introduced in the driver. To be honest I've only started using Vulkan in RA recently because it has some exclusive functionality in a few cores.

@Themaister Any ideas here?

This is possibly related, once again, to the stutter / Vsync anomaly with Vulkan that we were talking about here: https://github.com/libretro/RetroArch/issues/9668

Can confirm same issue

I had the same problem, and fixed it by uninstalling an old version of RTSS, as was discussed in issue 9668.

Was this page helpful?
0 / 5 - 0 ratings