libretro / libretro/RetroArch

Untangle forcing 1x speed from "Fast-Forward Rate"

Open
#14,407 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

There isn't actually an option for forcing 1x speed: Sync to Exact Content Framerate actually forces "original" speed as requested by the core, but introduces obviously issues in platforms without an actual VRR screen. An actual method for forcing the core native refresh rate is to set "Fast-Forward Rate" to x1.0, but with that you obviously lose the ability to fast-forward when you need it.
Forcing "native" refresh rate (by setting Fast-Forward Rate to 1.0x) helps with frame pacing with non VRR but HRR screens. Tested on various Android devices and reduces a lot of stutterings and frame pacings issues typical of that platform too.
Took a briefly look at the code and seems that the value of the option "Fast-Forward Rate", "fastforward_ratio", is actually used for frame limiting too, as suspected.
Would be great to have a global option for forcing 1x speed without affecting the ability to fast-forward.

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

Search for fastforward_ratio and trace how it is used for frame limiting and fast-forward behavior. Define the separate global 1x/native-refresh-rate setting, then verify frame pacing and retained fast-forward behavior on the affected non-VRR Android cases described in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, c
Domain
frontend, mobile, performance
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.