From f71128f8f42a78c30f3a8581bafb4d5e5192d86d Mon Sep 17 00:00:00 2001 From: Dake Gu Date: Fri, 10 Jun 2022 01:09:00 +0000 Subject: [PATCH] Revert "Recompute the mNextFrameStartUnstuffed on every frame" This reverts commit 89434a2523f06f7e2bb2bcc1497aebb52567b66d. Reason for revert: regression uibench_deadline_missed-mean Change-Id: I122cc2f42411342cc6945f0bd85106f31dd8977b --- libs/hwui/JankTracker.cpp | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/libs/hwui/JankTracker.cpp b/libs/hwui/JankTracker.cpp index c5c2d159bf034..4b0ddd2fa2eff 100644 --- a/libs/hwui/JankTracker.cpp +++ b/libs/hwui/JankTracker.cpp @@ -206,7 +206,6 @@ void JankTracker::finishFrame(FrameInfo& frame, std::unique_ptrreportJankType(JankType::kHighInputLatency); // Buffer stuffing state gets carried over to next frame, unless there is a "pause" - // Instead of increase by frameInterval, recompute to catch up the drifting vsync - computeNextFrameStartUnstuffed = true; + mNextFrameStartUnstuffed += frameInterval; } } else { mData->reportJankType(JankType::kMissedDeadline); @@ -224,7 +222,14 @@ void JankTracker::finishFrame(FrameInfo& frame, std::unique_ptrreportJank(); // Janked, store the adjust deadline to detect triple buffering in next frame correctly. - computeNextFrameStartUnstuffed = true; + nsecs_t jitterNanos = frame[FrameInfoIndex::GpuCompleted] + - frame[FrameInfoIndex::Vsync]; + nsecs_t lastFrameOffset = jitterNanos % frameInterval; + + // Note the time when the next frame would start in an unstuffed situation. If it starts + // earlier, we are in a stuffed situation. + mNextFrameStartUnstuffed = frame[FrameInfoIndex::GpuCompleted] + - lastFrameOffset + frameInterval; recomputeThresholds(frameInterval); for (auto& comparison : COMPARISONS) { @@ -249,16 +254,6 @@ void JankTracker::finishFrame(FrameInfo& frame, std::unique_ptr= 0) { mData->reportGPUFrame(totalGPUDrawTime);