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

Commit f71128f8 authored by Dake Gu's avatar Dake Gu
Browse files

Revert "Recompute the mNextFrameStartUnstuffed on every frame"

This reverts commit 89434a25.

Reason for revert: regression uibench_deadline_missed-mean

Change-Id: I122cc2f42411342cc6945f0bd85106f31dd8977b
parent 89434a25
Loading
Loading
Loading
Loading
+9 −14
Original line number Diff line number Diff line
@@ -206,7 +206,6 @@ void JankTracker::finishFrame(FrameInfo& frame, std::unique_ptr<FrameMetricsRepo
        frame.set(FrameInfoIndex::FrameDeadline) = deadline;
    }

    bool computeNextFrameStartUnstuffed = false;
    // If we hit the deadline, cool!
    if (frame[FrameInfoIndex::GpuCompleted] < deadline) {
        if (isTripleBuffered) {
@@ -214,8 +213,7 @@ void JankTracker::finishFrame(FrameInfo& frame, std::unique_ptr<FrameMetricsRepo
            (*mGlobalData)->reportJankType(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_ptr<FrameMetricsRepo
        (*mGlobalData)->reportJank();

        // 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<FrameMetricsRepo
        }
    }

    if (computeNextFrameStartUnstuffed) {
        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;
    }

    int64_t totalGPUDrawTime = frame.gpuDrawTime();
    if (totalGPUDrawTime >= 0) {
        mData->reportGPUFrame(totalGPUDrawTime);