libretro / libretro/RetroArch

Variable Refresh Rate (VRR) options should be invisible & their respecting config entries have no effect on non-VRR systems

Open
#10,304 13 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

vrr_runloop_enable = "true"
video_adaptive_vsync = "true"

both of these options seem to have effects on non VRR systems - ie, they bypass the default audio-skew behaviour which speeds up/slows down games to match the current refresh rate, within the tolerance (audio_max_timing_skew = 0.05), and introduce judder in its place.

IMO these options should be hidden when VRR is not enabled on the system, and likewise the .cfg entries should have no effect. this would also reduce clutter in the menus.

i'm not sure if there's a good way of detecting if vrr is enabled on a given system. does glxSwapIntervalEXT(glXSwapIntervalEXT(dpy, drawable,-1) return an error if attempted on a non vrr system? or maybe attempt it, and then detect if it's been accepted via reading the current vsync mode with glXSwapIntervalEXT() (no params)?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the handling of vrr_runloop_enable and video_adaptive_vsync, then inspect the glXSwapIntervalEXT path mentioned in the issue. Determine how non-VRR systems are identified and verify that these options are hidden and have no effect there. Done means the default audio-skew behavior remains active on non-VRR systems and the related menu entries are absent.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
computer-graphics, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.