Revert "Revert "SF: opportunistically try to present the next vs..."
Revert submission 24994369-revert-24958537-b273702768-ERNZICNUUX
Reason for revert: Resubmit after fixing b/304324338
Reverted changes: /q/submissionid:24994369-revert-24958537-b273702768-ERNZICNUUX
Bug: 273702768
Change-Id: Icfb4cf6f69ae50f7bb0b5a185c9e68b43c946aa5
Test: manual
Test: presubmit
diff --git a/services/surfaceflinger/Scheduler/VSyncDispatchTimerQueue.cpp b/services/surfaceflinger/Scheduler/VSyncDispatchTimerQueue.cpp
index 1f922f1..c4c9fa5 100644
--- a/services/surfaceflinger/Scheduler/VSyncDispatchTimerQueue.cpp
+++ b/services/surfaceflinger/Scheduler/VSyncDispatchTimerQueue.cpp
@@ -28,10 +28,13 @@
#include "VSyncDispatchTimerQueue.h"
#include "VSyncTracker.h"
+#include <com_android_graphics_surfaceflinger_flags.h>
+
#undef LOG_TAG
#define LOG_TAG "VSyncDispatch"
namespace android::scheduler {
+using namespace com::android::graphics::surfaceflinger;
using base::StringAppendF;
@@ -100,8 +103,14 @@
mArmedInfo && (nextVsyncTime > (mArmedInfo->mActualVsyncTime + mMinVsyncDistance));
bool const wouldSkipAWakeup =
mArmedInfo && ((nextWakeupTime > (mArmedInfo->mActualWakeupTime + mMinVsyncDistance)));
- if (wouldSkipAVsyncTarget && wouldSkipAWakeup) {
- return getExpectedCallbackTime(nextVsyncTime, timing);
+ if (flags::dont_skip_on_early()) {
+ if (wouldSkipAVsyncTarget || wouldSkipAWakeup) {
+ return getExpectedCallbackTime(mArmedInfo->mActualVsyncTime, timing);
+ }
+ } else {
+ if (wouldSkipAVsyncTarget && wouldSkipAWakeup) {
+ return getExpectedCallbackTime(nextVsyncTime, timing);
+ }
}
nextVsyncTime = adjustVsyncIfNeeded(tracker, nextVsyncTime);