SF: fix wouldPresentEarly when allow_n_vsyncs_in_targeter=true
wouldPresentEarly should return true if the previous frame would
not cause a backpressure.
Bug: 308858993
Test: SF unit tests
Flag: com.android.graphics.surfaceflinger.flags.allow_n_vsyncs_in_targeter
Change-Id: I0035145e06f2782cc190e329b542c2f4bbd6f0f1
diff --git a/services/surfaceflinger/Scheduler/src/FrameTargeter.cpp b/services/surfaceflinger/Scheduler/src/FrameTargeter.cpp
index 21f5949..8adf2a6 100644
--- a/services/surfaceflinger/Scheduler/src/FrameTargeter.cpp
+++ b/services/surfaceflinger/Scheduler/src/FrameTargeter.cpp
@@ -61,8 +61,10 @@
const auto [wouldBackpressure, fence] =
expectedSignaledPresentFence(vsyncPeriod, minFramePeriod);
- return wouldBackpressure && fence.fenceTime->isValid() &&
- fence.fenceTime->getSignalTime() != Fence::SIGNAL_TIME_PENDING;
+
+ return !wouldBackpressure ||
+ (fence.fenceTime->isValid() &&
+ fence.fenceTime->getSignalTime() != Fence::SIGNAL_TIME_PENDING);
}
const FenceTimePtr& FrameTarget::presentFenceForPreviousFrame() const {