Loading services/surfaceflinger/Scheduler/Scheduler.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -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() { Loading services/surfaceflinger/Scheduler/VsyncSchedule.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -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 { Loading services/surfaceflinger/Scheduler/VsyncSchedule.h +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading services/surfaceflinger/Scheduler/include/scheduler/IVsyncSource.h +2 −1 Original line number Diff line number Diff line Loading @@ -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: Loading services/surfaceflinger/Scheduler/tests/FrameTargeterTest.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
services/surfaceflinger/Scheduler/Scheduler.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -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() { Loading
services/surfaceflinger/Scheduler/VsyncSchedule.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -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 { Loading
services/surfaceflinger/Scheduler/VsyncSchedule.h +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
services/surfaceflinger/Scheduler/include/scheduler/IVsyncSource.h +2 −1 Original line number Diff line number Diff line Loading @@ -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: Loading
services/surfaceflinger/Scheduler/tests/FrameTargeterTest.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -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