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

Commit 9fa51bf6 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6720487 from 50c34a1b to rvc-qpr1-release

Change-Id: I6d2f5f3902c34dd6563748939ac995262f55cb27
parents 9f368283 50c34a1b
Loading
Loading
Loading
Loading
+2 −14
Original line number Original line Diff line number Diff line
@@ -255,21 +255,9 @@ void VSyncPredictor::clearTimestamps() {
    }
    }
}
}


bool VSyncPredictor::needsMoreSamples(nsecs_t now) const {
bool VSyncPredictor::needsMoreSamples() const {
    using namespace std::literals::chrono_literals;
    std::lock_guard<std::mutex> lk(mMutex);
    std::lock_guard<std::mutex> lk(mMutex);
    bool needsMoreSamples = true;
    return mTimestamps.size() < kMinimumSamplesForPrediction;
    if (mTimestamps.size() >= kMinimumSamplesForPrediction) {
        nsecs_t constexpr aLongTime =
                std::chrono::duration_cast<std::chrono::nanoseconds>(500ms).count();
        if (!(mLastTimestampIndex < 0 || mTimestamps.empty())) {
            auto const lastTimestamp = mTimestamps[mLastTimestampIndex];
            needsMoreSamples = !((lastTimestamp + aLongTime) > now);
        }
    }

    ATRACE_INT("VSP-moreSamples", needsMoreSamples);
    return needsMoreSamples;
}
}


void VSyncPredictor::resetModel() {
void VSyncPredictor::resetModel() {
+2 −3
Original line number Original line Diff line number Diff line
@@ -52,11 +52,10 @@ public:
     */
     */
    void setPeriod(nsecs_t period) final;
    void setPeriod(nsecs_t period) final;


    /* Query if the model is in need of more samples to make a prediction at timePoint.
    /* Query if the model is in need of more samples to make a prediction.
     * \param [in] timePoint    The timePoint to inquire of.
     * \return  True, if model would benefit from more samples, False if not.
     * \return  True, if model would benefit from more samples, False if not.
     */
     */
    bool needsMoreSamples(nsecs_t timePoint) const;
    bool needsMoreSamples() const final;


    std::tuple<nsecs_t /* slope */, nsecs_t /* intercept */> getVSyncPredictionModel() const;
    std::tuple<nsecs_t /* slope */, nsecs_t /* intercept */> getVSyncPredictionModel() const;


+19 −4
Original line number Original line Diff line number Diff line
@@ -233,6 +233,7 @@ nsecs_t VSyncReactor::expectedPresentTime(nsecs_t now) {
}
}


void VSyncReactor::startPeriodTransition(nsecs_t newPeriod) {
void VSyncReactor::startPeriodTransition(nsecs_t newPeriod) {
    ATRACE_CALL();
    mPeriodConfirmationInProgress = true;
    mPeriodConfirmationInProgress = true;
    mPeriodTransitioningTo = newPeriod;
    mPeriodTransitioningTo = newPeriod;
    mMoreSamplesNeeded = true;
    mMoreSamplesNeeded = true;
@@ -240,8 +241,7 @@ void VSyncReactor::startPeriodTransition(nsecs_t newPeriod) {
}
}


void VSyncReactor::endPeriodTransition() {
void VSyncReactor::endPeriodTransition() {
    setIgnorePresentFencesInternal(false);
    ATRACE_CALL();
    mMoreSamplesNeeded = false;
    mPeriodTransitioningTo.reset();
    mPeriodTransitioningTo.reset();
    mPeriodConfirmationInProgress = false;
    mPeriodConfirmationInProgress = false;
    mLastHwVsync.reset();
    mLastHwVsync.reset();
@@ -254,6 +254,8 @@ void VSyncReactor::setPeriod(nsecs_t period) {


    if (!mSupportKernelIdleTimer && period == getPeriod()) {
    if (!mSupportKernelIdleTimer && period == getPeriod()) {
        endPeriodTransition();
        endPeriodTransition();
        setIgnorePresentFencesInternal(false);
        mMoreSamplesNeeded = false;
    } else {
    } else {
        startPeriodTransition(period);
        startPeriodTransition(period);
    }
    }
@@ -303,6 +305,7 @@ bool VSyncReactor::addResyncSample(nsecs_t timestamp, std::optional<nsecs_t> hwc


    std::lock_guard<std::mutex> lk(mMutex);
    std::lock_guard<std::mutex> lk(mMutex);
    if (periodConfirmed(timestamp, hwcVsyncPeriod)) {
    if (periodConfirmed(timestamp, hwcVsyncPeriod)) {
        ATRACE_NAME("VSR: period confirmed");
        if (mPeriodTransitioningTo) {
        if (mPeriodTransitioningTo) {
            mTracker->setPeriod(*mPeriodTransitioningTo);
            mTracker->setPeriod(*mPeriodTransitioningTo);
            for (auto& entry : mCallbacks) {
            for (auto& entry : mCallbacks) {
@@ -310,17 +313,29 @@ bool VSyncReactor::addResyncSample(nsecs_t timestamp, std::optional<nsecs_t> hwc
            }
            }
            *periodFlushed = true;
            *periodFlushed = true;
        }
        }

        if (mLastHwVsync) {
            mTracker->addVsyncTimestamp(*mLastHwVsync);
        }
        mTracker->addVsyncTimestamp(timestamp);

        endPeriodTransition();
        endPeriodTransition();
        mMoreSamplesNeeded = mTracker->needsMoreSamples();
    } else if (mPeriodConfirmationInProgress) {
    } else if (mPeriodConfirmationInProgress) {
        ATRACE_NAME("VSR: still confirming period");
        mLastHwVsync = timestamp;
        mLastHwVsync = timestamp;
        mMoreSamplesNeeded = true;
        mMoreSamplesNeeded = true;
        *periodFlushed = false;
        *periodFlushed = false;
    } else {
    } else {
        mMoreSamplesNeeded = false;
        ATRACE_NAME("VSR: adding sample");
        *periodFlushed = false;
        *periodFlushed = false;
        mTracker->addVsyncTimestamp(timestamp);
        mMoreSamplesNeeded = mTracker->needsMoreSamples();
    }
    }


    mTracker->addVsyncTimestamp(timestamp);
    if (!mMoreSamplesNeeded) {
        setIgnorePresentFencesInternal(false);
    }
    return mMoreSamplesNeeded;
    return mMoreSamplesNeeded;
}
}


+2 −0
Original line number Original line Diff line number Diff line
@@ -66,6 +66,8 @@ public:
    /* Inform the tracker that the samples it has are not accurate for prediction. */
    /* Inform the tracker that the samples it has are not accurate for prediction. */
    virtual void resetModel() = 0;
    virtual void resetModel() = 0;


    virtual bool needsMoreSamples() const = 0;

    virtual void dump(std::string& result) const = 0;
    virtual void dump(std::string& result) const = 0;


protected:
protected:
+2 −0
Original line number Original line Diff line number Diff line
@@ -51,6 +51,7 @@ public:


    void setPeriod(nsecs_t) final {}
    void setPeriod(nsecs_t) final {}
    void resetModel() final {}
    void resetModel() final {}
    bool needsMoreSamples() const final { return false; }
    void dump(std::string&) const final {}
    void dump(std::string&) const final {}


private:
private:
@@ -86,6 +87,7 @@ public:


    void setPeriod(nsecs_t) final {}
    void setPeriod(nsecs_t) final {}
    void resetModel() final {}
    void resetModel() final {}
    bool needsMoreSamples() const final { return false; }
    void dump(std::string&) const final {}
    void dump(std::string&) const final {}


private:
private:
Loading