Revert "SF: pass a render rate to VsyncTracker instead of a divisor"
Revert submission 21422016
Reason for revert: DM P0 (b/269561042)
Reverted changes: /q/submissionid:21422016
Bug: 269561042
Change-Id: I118dd75ea379673d649d3c75960f18ef45b3749f
(cherry picked from commit 3d21d3afa1056efacf702b74449f9e2e7b5701f1)
Merged-In: I118dd75ea379673d649d3c75960f18ef45b3749f
diff --git a/services/surfaceflinger/Scheduler/VSyncPredictor.cpp b/services/surfaceflinger/Scheduler/VSyncPredictor.cpp
index de7b338..5a5afd8 100644
--- a/services/surfaceflinger/Scheduler/VSyncPredictor.cpp
+++ b/services/surfaceflinger/Scheduler/VSyncPredictor.cpp
@@ -272,26 +272,13 @@
// update the mLastVsyncSequence for reference point
mLastVsyncSequence = getVsyncSequenceLocked(timePoint);
- const auto renderRatePhase = [&]() REQUIRES(mMutex) -> int {
- if (!mRenderRate) return 0;
-
- const auto divisor =
- RefreshRateSelector::getFrameRateDivisor(Fps::fromPeriodNsecs(mIdealPeriod),
- *mRenderRate);
- if (divisor <= 1) return 0;
-
- const int mod = mLastVsyncSequence->seq % divisor;
- if (mod == 0) return 0;
-
- return divisor - mod;
- }();
-
- if (renderRatePhase == 0) {
+ const auto mod = mLastVsyncSequence->seq % mDivisor;
+ if (mod == 0) {
return mLastVsyncSequence->vsyncTime;
}
auto const [slope, intercept] = getVSyncPredictionModelLocked();
- const auto approximateNextVsync = mLastVsyncSequence->vsyncTime + slope * renderRatePhase;
+ const auto approximateNextVsync = mLastVsyncSequence->vsyncTime + slope * (mDivisor - mod);
return nextAnticipatedVSyncTimeFromLocked(approximateNextVsync - slope / 2);
}
@@ -330,10 +317,10 @@
return vsyncSequence.seq % divisor == 0;
}
-void VSyncPredictor::setRenderRate(Fps fps) {
- ALOGV("%s: %s", __func__, to_string(fps).c_str());
+void VSyncPredictor::setDivisor(unsigned divisor) {
+ ALOGV("%s: %d", __func__, divisor);
std::lock_guard lock(mMutex);
- mRenderRate = fps;
+ mDivisor = divisor;
}
VSyncPredictor::Model VSyncPredictor::getVSyncPredictionModel() const {