Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13345d71 authored by Melody Hsu's avatar Melody Hsu
Browse files

Keep original vsync for target work duration calculation

During buffer stuffing recovery, the target work duration
should be calculated using the original vsync timestamp
indicated by frameTimeNanos. Before, the target work
duration was updated during buffer stuffing recovery using
the adjusted frame time (which has a single frame offset due
to the recovery method), which led to the target work duration
being reported as longer than it actually was. This subsequently
decreased CPU clock frequencies and led to more possible jank
when expensive frames needed to be rendered.

Bug: b/399256574
Test: manually inspect perfetto traces
Flag: EXEMPT, bug fix
Change-Id: I959cf50bb35e370d48cbdbfb321f09992ee3db29
parent 56da69b6
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -967,8 +967,11 @@ public final class Choreographer {
            DisplayEventReceiver.VsyncEventData vsyncEventData) {
        final long startNanos;
        final long frameIntervalNanos = vsyncEventData.frameInterval;
        boolean resynced = false;
        // Original intended vsync time that is not adjusted by jitter
        // or buffer stuffing recovery. Reported for jank tracking.
        final long intendedFrameTimeNanos = frameTimeNanos;
        long offsetFrameTimeNanos = frameTimeNanos;
        boolean resynced = false;

        // Evaluate if buffer stuffing recovery needs to start or end, and
        // what actions need to be taken for recovery.
@@ -1012,7 +1015,6 @@ public final class Choreographer {
                            + ((offsetFrameTimeNanos - mLastFrameTimeNanos) * 0.000001f) + " ms");
                }

                long intendedFrameTimeNanos = offsetFrameTimeNanos;
                startNanos = System.nanoTime();
                // Calculating jitter involves using the original frame time without
                // adjustments from buffer stuffing