vblankmanager: When calculating fps limiter sleep time, take the min of the rolling max frame time against target interval - redzone
We account for redzone later, and don't want to go over vblank time and preceed into previous vblank or whatever here.
This commit is contained in:
parent
0862a2b896
commit
2cac416000
1 changed files with 4 additions and 2 deletions
|
@ -275,10 +275,12 @@ void fpslimitThreadRun( void )
|
|||
int64_t sleepyTime = targetInterval;
|
||||
if ( refresh % nTargetFPS == 0 )
|
||||
{
|
||||
sleepyTime -= rollingMaxFrameTime;
|
||||
// Take the min of it to the target interval - the fps limiter redzone
|
||||
// so that we don't go over the target interval - expected vblank time
|
||||
sleepyTime -= std::min( rollingMaxFrameTime, targetInterval - g_uFPSLimiterRedZoneNS );
|
||||
sleepyTime -= g_uFPSLimiterRedZoneNS;
|
||||
sleepyTime -= g_uRollingMaxDrawTime.load();
|
||||
sleepyTime -= g_uVblankDrawBufferRedZoneNS;
|
||||
sleepyTime -= g_uFPSLimiterRedZoneNS;
|
||||
|
||||
vblank = g_lastVblank;
|
||||
while ( vblank < t1 )
|
||||
|
|
Loading…
Reference in a new issue