libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.05k stars 1.81k forks source link

G-Sync support #1633

Closed nfp0 closed 5 years ago

nfp0 commented 9 years ago

Regarding the support of variable refresh rate systems like G-Sync or Freesync. Is RetroArch supposed to work correctly with them?

I have a G-Sync capable monitor, and from my tests, it seems RetroArch is not taking advantage of G-Sync appropriately.

I understand RetroArch utilizes Dynamic Rate Control to sync the video rendering to the reported monitor frequency. For this to work, say, on a 60Hz screen, a 60.01hz game is slowed down to 60hz, and games that run at significantly different fps cannot correctly take advantage of Dynamic Rate Control. With G-Sync, the emulator doesn't have to sync the video and a 60.01hz game will display at the exact 60.01hz on the monitor. A 50Hz game will display at 50Hz. A 75Hz game will display at 75Hz, etc. Now that variable refresh rate systems are a reality, why can't RetroArch leverage this advantage? For this to work, theoretically I would just need to disable V-Sync on the emulator settings and the driver would take care of syncronizing the monitor to the precise frequency that RetroArch is outputting, making for a perfect, non-stuttering, non-tearing, non-input-laggy experience.

I've tried many different configurations on RetroArch with the BSNES core, and I can't seem to get it to work. I always get video stuttering. With the monitor set at a maximum of 60Hz it seems to work correctly, but this nullifies the advantage of the 120Hz reduced input lag. Turning on the black frame insertion also solves the problem, but I don't want to use black frame insertion and that also introduces input lag.

I would greatly appreciate if anyone looked at this issue. Thanks.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/11382396-g-sync-support?utm_campaign=plugin&utm_content=tracker%2F296058&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F296058&utm_medium=issues&utm_source=github).
ghost commented 6 years ago

Just for reference, I am successfully using G-Sync on Linux with the current default settings of RetroArch. The only thing that is really needed for it to work (at least on Linux) is to be in non-windowed fullscreen mode. I also use the "G-Sync Visual Indicator" setting in the nvidia-settings control panel to verify that it's on.

inactive123 commented 5 years ago

I think we have finally addressed this issue now with VRR runloop. So unless anybody objects, closing this issue.