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

Commit 0ba3f3e4 authored by Ady Abraham's avatar Ady Abraham
Browse files

DO NOT MERGE Revert "DO NOT MERGE Extend mPreviousPresentFences for high refresh rate"

This reverts commit 73e9ae30.

Reason for revert: http://b/361358860

Change-Id: I7d38f19a5514ff70ea43a3533b45f3c6bf4e83c9
parent 73e9ae30
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -106,8 +106,7 @@ protected:
        FenceTimePtr fenceTime = FenceTime::NO_FENCE;
        TimePoint expectedPresentTime = TimePoint();
    };
    // size should be longest sf-duration / shortest vsync period and round up
    std::array<FenceWithFenceTime, 5> mPresentFences; // currently consider 166hz.
    std::array<FenceWithFenceTime, 2> mPresentFences;
    utils::RingBuffer<FenceWithFenceTime, 5> mFenceWithFenceTimes;

    TimePoint mLastSignaledFrameTime;
+4 −22
Original line number Diff line number Diff line
@@ -20,20 +20,6 @@
#include <scheduler/FrameTargeter.h>
#include <scheduler/IVsyncSource.h>

namespace {
size_t getPresentFenceShift(Period minFramePeriod) {
    const bool isTwoVsyncsAhead = targetsVsyncsAhead<2>(minFramePeriod);
    size_t shift = 0;
    if (isTwoVsyncsAhead) {
        shift = static_cast<size_t>(expectedFrameDuration.ns() / minFramePeriod.ns());
        if (shift >= mPresentFences.size()) {
            shift = mPresentFences.size() - 1;
        }
    }
    return shift;
}
} // namespace

namespace android::scheduler {

FrameTarget::FrameTarget(const std::string& displayLabel)
@@ -44,7 +30,7 @@ FrameTarget::FrameTarget(const std::string& displayLabel)

TimePoint FrameTarget::pastVsyncTime(Period minFramePeriod) const {
    // TODO(b/267315508): Generalize to N VSYNCs.
    const size_t shift = getPresentFenceShift(minFramePeriod);
    const int shift = static_cast<int>(targetsVsyncsAhead<2>(minFramePeriod));
    return mExpectedPresentTime - Period::fromNs(minFramePeriod.ns() << shift);
}

@@ -52,10 +38,8 @@ FenceTimePtr FrameTarget::presentFenceForPastVsync(Period minFramePeriod) const
    if (FlagManager::getInstance().allow_n_vsyncs_in_targeter()) {
        return pastVsyncTimePtr();
    }

    const size_t shift = getPresentFenceShift(minFramePeriod);
    ATRACE_FORMAT("mPresentFences shift=%zu", shift);
    return mPresentFences[shift].fenceTime;
    const size_t i = static_cast<size_t>(targetsVsyncsAhead<2>(minFramePeriod));
    return mPresentFences[i].fenceTime;
}

bool FrameTarget::wouldPresentEarly(Period minFramePeriod) const {
@@ -167,9 +151,7 @@ FenceTimePtr FrameTargeter::setPresentFence(sp<Fence> presentFence, FenceTimePtr
    if (FlagManager::getInstance().allow_n_vsyncs_in_targeter()) {
        addFence(std::move(presentFence), presentFenceTime, mExpectedPresentTime);
    } else {
        for (size_t i = mPreviousPresentFences.size()-1; i >= 1; i--) {
            mPresentFences[i] = mPresentFences[i-1];
        }
        mPresentFences[1] = mPresentFences[0];
        mPresentFences[0] = {std::move(presentFence), presentFenceTime, mExpectedPresentTime};
    }
    return presentFenceTime;