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

Commit 49c01d0b authored by Ady Abraham's avatar Ady Abraham Committed by Android (Google) Code Review
Browse files

Merge "SF: add traces to transactionIsReadyToBeApplied" into sc-dev

parents fcddc8ea 2f43b20d
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -3384,12 +3384,14 @@ bool SurfaceFlinger::transactionIsReadyToBeApplied(
        const FrameTimelineInfo& info, bool isAutoTimestamp, int64_t desiredPresentTime,
        const Vector<ComposerState>& states,
        std::unordered_set<sp<IBinder>, ISurfaceComposer::SpHash<IBinder>>& pendingBuffers) {
    ATRACE_CALL();
    const nsecs_t expectedPresentTime = mExpectedPresentTime.load();
    bool ready = true;
    // Do not present if the desiredPresentTime has not passed unless it is more than one second
    // in the future. We ignore timestamps more than 1 second in the future for stability reasons.
    if (!isAutoTimestamp && desiredPresentTime >= expectedPresentTime &&
        desiredPresentTime < expectedPresentTime + s2ns(1)) {
        ATRACE_NAME("not current");
        ready = false;
    }

@@ -3412,6 +3414,8 @@ bool SurfaceFlinger::transactionIsReadyToBeApplied(
            continue;
        }

        ATRACE_NAME(layer->getName().c_str());

        const bool frameTimelineInfoChanged = (s.what & layer_state_t::eFrameTimelineInfoChanged);
        const auto vsyncId = frameTimelineInfoChanged ? s.frameTimelineInfo.vsyncId : info.vsyncId;
        if (isAutoTimestamp && layer->frameIsEarly(expectedPresentTime, vsyncId)) {
@@ -3429,6 +3433,7 @@ bool SurfaceFlinger::transactionIsReadyToBeApplied(
            // transaction in the queue.
            const bool hasPendingBuffer = pendingBuffers.find(s.surface) != pendingBuffers.end();
            if (layer->backpressureEnabled() && hasPendingBuffer && isAutoTimestamp) {
                ATRACE_NAME("hasPendingBuffer");
                ready = false;
            }
            pendingBuffers.insert(s.surface);