summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ady Abraham <adyabr@google.com> 2024-08-21 19:38:19 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2024-08-21 19:38:19 +0000
commit92faab8650cdb20f34a39ccde80cad407a2fe18f (patch)
tree01b82bcac2918b5ee377647b0c2fd20b6a64075d
parentc2eacfbe69a1f1d22431727e9dc6e8e4557f271f (diff)
parent0ba3f3e42af40f4d0219e124efba78152b7298b3 (diff)
DO NOT MERGE Revert "DO NOT MERGE Extend mPreviousPresentFences for high refresh rate" am: 0ba3f3e42a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/28926482 Change-Id: I8397f91c25d97a3d8fef879839ccb7163e150927 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--services/surfaceflinger/Scheduler/include/scheduler/FrameTargeter.h3
-rw-r--r--services/surfaceflinger/Scheduler/src/FrameTargeter.cpp26
2 files changed, 5 insertions, 24 deletions
diff --git a/services/surfaceflinger/Scheduler/include/scheduler/FrameTargeter.h b/services/surfaceflinger/Scheduler/include/scheduler/FrameTargeter.h
index 638a6fb464..d37d2dc51b 100644
--- a/services/surfaceflinger/Scheduler/include/scheduler/FrameTargeter.h
+++ b/services/surfaceflinger/Scheduler/include/scheduler/FrameTargeter.h
@@ -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;
diff --git a/services/surfaceflinger/Scheduler/src/FrameTargeter.cpp b/services/surfaceflinger/Scheduler/src/FrameTargeter.cpp
index 063f1b3d1d..badd21ef86 100644
--- a/services/surfaceflinger/Scheduler/src/FrameTargeter.cpp
+++ b/services/surfaceflinger/Scheduler/src/FrameTargeter.cpp
@@ -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;