Sustained high-FPS time required before firing, ms.
Consecutive mid-band samples tolerated inside a streak.
PrivatestreakPrivatemidbandPrivate ReadonlyconfigSustained high-FPS time required before firing, ms.
Consecutive mid-band samples tolerated inside a streak.
True while a scale-up streak is accumulating.
Record a sample above the up-threshold. Returns true when the
streak has lasted the full hysteresis period — the caller then
scales up and calls clear().
Record an in-between sample (neither high enough to advance nor
low enough to scale down). Tolerated graceSamples times in a row;
beyond that the streak resets.
Record a below-down-threshold sample: always resets the streak.
Reset the streak (after firing, on pause, on display change).
Scale-up hysteresis tracker — DPR only scales up after FPS has stayed above the up-threshold for a sustained period, so a momentary breeze of fast frames doesn't trigger a quality/perf oscillation.
Adds a mid-band GRACE over the naive "any non-high sample resets the timer" rule: on a 60Hz display two dropped frames in one window read as 58.0 FPS (mid-band), and under the naive rule a machine dropping a couple of frames every few seconds could never accumulate the full hysteresis period — quality recovery stalled indefinitely. Up to
graceSamplesconsecutive mid-band samples are tolerated inside a streak; only a longer wobble (or any below-down-threshold sample) resets it.Pure and timestamp-driven; no clocks, no window, no config imports.