jorimt wrote: ↑23 Nov 2020, 13:58
I merely meant if VRR could
theoretically control both repetition and completion time of the scanout, completion time could
potentially be fractional as well. Whether that is practically applicable and improves anything is another question, especially once the game is thrown into the mix. This goes for your rebuttal to my LFC comment as well.
Not possible.
LFC mismatch only exists because refreshing is a finite-time endeavour that can have a schedule-conflict with a video game suddenly unexpectedly ready to deliver a new refresh cycle (at an unexpected time to the LFC algorithm).
Game's finished rendering a frame, now it's waiting for the monitor to finish refreshing its earlier repeat-refresh cycle.
LFC is inherently a predictive manoever by necessity; monitor doesn't know when the the game engine will deliver its next frame.
Also, back to screen refreshing patterns. For a goal of clean motion,
screens have to refresh in entirety in the same refresh pattern, at the same velocity, every refresh cycle for consistency (to avoid artifacts, stutter, tearing, combing, zigzag-edge artifact, strange variable bending/warpinging far worse than
www.testufo.com/scanskew on a 60Hz DELL/HP office monitor / etc.) Random-access pixel refresh and variable-order refreshing have visible artifacts unless done at ultrahigh frequencies (like far beyond DLP pixel refresh speeds, 1440Hz/1920Hz).
By scientific principles
- Refreshing is a finite-time endeavour
- Screens have to refresh in entirety in the same refresh pattern, at the same velocity, every refresh cycle for consistency
- There is a minimum refresh rate before panels glitch
- LFC is the monitor deciding to do a repeat-refresh cycle because a new refresh cycle (new frame) hasn't arrived yet
- LFC mismatch is when new frame arrives earlier than expected
- Games don't always have consistent frametimes
- The device doing LFC (Monitors/Drivers) generally can't read the mind of a game
Connecting the dots, LFC succeeds when framerates are consitent, because LFC can just time the repeat-refresh half a refreshtime later (based on refreshtime history).
But given a random framerate game with erratic frametime -- you can have frames thrown at the monitor unexpectedly soon -- then the monitor may be busy refreshing. The frame now has to wait before the repeat-refresh finishes. So now you've injected gametime:photontime inconsistency = aka LFC stutter.