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

Commit 24bcc303 authored by Leon Scroggins's avatar Leon Scroggins Committed by Android (Google) Code Review
Browse files

Merge "Add optional parameter to IVsyncSource::vsyncDeadlineAfter" into main

parents 0eba2555 a0785019
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -646,13 +646,13 @@ Fps Scheduler::getNextFrameInterval(PhysicalDisplayId id,
        return Fps{};
    }
    const Display& display = *displayOpt;
    const nsecs_t threshold =
            display.selectorPtr->getActiveMode().modePtr->getVsyncRate().getPeriodNsecs() / 2;
    const nsecs_t nextVsyncTime =
            display.schedulePtr->getTracker()
                    .nextAnticipatedVSyncTimeFrom(currentExpectedPresentTime.ns() + threshold,
                                                  currentExpectedPresentTime.ns());
    return Fps::fromPeriodNsecs(nextVsyncTime - currentExpectedPresentTime.ns());
    const Duration threshold =
            display.selectorPtr->getActiveMode().modePtr->getVsyncRate().getPeriod() / 2;
    const TimePoint nextVsyncTime =
            display.schedulePtr->vsyncDeadlineAfter(currentExpectedPresentTime + threshold,
                                                    currentExpectedPresentTime);
    const Duration frameInterval = nextVsyncTime - currentExpectedPresentTime;
    return Fps::fromPeriodNsecs(frameInterval.ns());
}

void Scheduler::resync() {
+6 −2
Original line number Diff line number Diff line
@@ -89,8 +89,12 @@ Period VsyncSchedule::minFramePeriod() const {
    return period();
}

TimePoint VsyncSchedule::vsyncDeadlineAfter(TimePoint timePoint) const {
    return TimePoint::fromNs(mTracker->nextAnticipatedVSyncTimeFrom(timePoint.ns()));
TimePoint VsyncSchedule::vsyncDeadlineAfter(TimePoint timePoint,
                                            ftl::Optional<TimePoint> lastVsyncOpt) const {
    return TimePoint::fromNs(
            mTracker->nextAnticipatedVSyncTimeFrom(timePoint.ns(),
                                                   lastVsyncOpt.transform(
                                                           [](TimePoint t) { return t.ns(); })));
}

void VsyncSchedule::dump(std::string& out) const {
+2 −1
Original line number Diff line number Diff line
@@ -63,7 +63,8 @@ public:

    // IVsyncSource overrides:
    Period period() const override;
    TimePoint vsyncDeadlineAfter(TimePoint) const override;
    TimePoint vsyncDeadlineAfter(TimePoint,
                                 ftl::Optional<TimePoint> lastVsyncOpt = {}) const override;
    Period minFramePeriod() const override;

    // Inform the schedule that the display mode changed the schedule needs to recalibrate
+2 −1
Original line number Diff line number Diff line
@@ -16,13 +16,14 @@

#pragma once

#include <ftl/optional.h>
#include <scheduler/Time.h>

namespace android::scheduler {

struct IVsyncSource {
    virtual Period period() const = 0;
    virtual TimePoint vsyncDeadlineAfter(TimePoint) const = 0;
    virtual TimePoint vsyncDeadlineAfter(TimePoint, ftl::Optional<TimePoint> = {}) const = 0;
    virtual Period minFramePeriod() const = 0;

protected:
+3 −1
Original line number Diff line number Diff line
@@ -38,7 +38,9 @@ struct VsyncSource final : IVsyncSource {
    const TimePoint vsyncDeadline;

    Period period() const override { return vsyncPeriod; }
    TimePoint vsyncDeadlineAfter(TimePoint) const override { return vsyncDeadline; }
    TimePoint vsyncDeadlineAfter(TimePoint, ftl::Optional<TimePoint> = {}) const override {
        return vsyncDeadline;
    }
    Period minFramePeriod() const override { return framePeriod; }
};

Loading