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

Commit b69cd650 authored by Alec Mouri's avatar Alec Mouri Committed by Android (Google) Code Review
Browse files

Merge "More accurate frames missed for client composited frames."

parents 77be1fec fe3dc940
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -1000,6 +1000,7 @@ void SurfaceFlinger::setActiveConfigInternal() {
}

bool SurfaceFlinger::performSetActiveConfig() NO_THREAD_SAFETY_ANALYSIS {
    ATRACE_CALL();
    // we may be in the process of changing the active state
    if (mWaitForNextInvalidate) {
        mWaitForNextInvalidate = false;
@@ -1512,6 +1513,7 @@ void SurfaceFlinger::resetDisplayState() {
}

void SurfaceFlinger::updateVrFlinger() {
    ATRACE_CALL();
    if (!mVrFlinger)
        return;
    bool vrFlingerRequestsDisplay = mVrFlingerRequestsDisplay;
@@ -1606,13 +1608,16 @@ void SurfaceFlinger::onMessageReceived(int32_t what) {
                // of video detection feature.
                mScheduler->incrementFrameCounter();
            }

            bool frameMissed = !mHadClientComposition && mPreviousPresentFence != Fence::NO_FENCE &&
            bool frameMissed = mPreviousPresentFence != Fence::NO_FENCE &&
                    (mPreviousPresentFence->getStatus() == Fence::Status::Unsignaled);
            mFrameMissedCount += frameMissed;
            ATRACE_INT("FrameMissed", static_cast<int>(frameMissed));
            bool hwcFrameMissed = !mHadClientComposition && frameMissed;
            if (frameMissed) {
                ATRACE_INT("FrameMissed", static_cast<int>(frameMissed));
                mFrameMissedCount++;
                mTimeStats->incrementMissedFrames();
            }
            // For now, only propagate backpressure when missing a hwc frame.
            if (hwcFrameMissed) {
                if (mPropagateBackpressure) {
                    signalLayerUpdate();
                    break;
@@ -1647,6 +1652,7 @@ void SurfaceFlinger::onMessageReceived(int32_t what) {
}

bool SurfaceFlinger::handleMessageTransaction() {
    ATRACE_CALL();
    uint32_t transactionFlags = peekTransactionFlags();

    // Apply any ready transactions in the queues if there are still transactions that have not been