summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Rachel Lee <rnlee@google.com> 2022-03-28 09:53:35 -0700
committer Rachel Lee <rnlee@google.com> 2022-04-06 15:58:25 -0700
commit8f96ec4b3074b6c1a4cb47bef4855f38896eb12c (patch)
tree769de1aeb6550623cda8d155c984757f359fd39c
parent56becd9a2e8abc5694809a7af6b69eeab018fb23 (diff)
Avoid vsync enabled when in DOZE mode (AOD).
Bug: 219109873 Test: perfetto trace Change-Id: Id3373dc9bb0cf4c0375c79a32ca9802fd77e06c2
-rw-r--r--services/surfaceflinger/DisplayHardware/HWComposer.cpp6
-rw-r--r--services/surfaceflinger/DisplayHardware/HWComposer.h2
2 files changed, 8 insertions, 0 deletions
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index 459291a1b7..445961bf8a 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -376,6 +376,11 @@ void HWComposer::setVsyncEnabled(PhysicalDisplayId displayId, hal::Vsync enabled
}
ATRACE_CALL();
+ if (displayData.powerMode == hal::PowerMode::DOZE && enabled == hal::Vsync::ENABLE) {
+ ALOGV("%s will not enable vsync for display %s due to power mode %s", __FUNCTION__,
+ to_string(displayId).c_str(), to_string(displayData.powerMode).c_str());
+ return;
+ }
auto error = displayData.hwcDisplay->setVsyncEnabled(enabled);
RETURN_IF_HWC_ERROR(error, displayId);
@@ -553,6 +558,7 @@ status_t HWComposer::setPowerMode(PhysicalDisplayId displayId, hal::PowerMode mo
setVsyncEnabled(displayId, hal::Vsync::DISABLE);
}
+ mDisplayData[displayId].powerMode = mode;
const auto& displayData = mDisplayData[displayId];
auto& hwcDisplay = displayData.hwcDisplay;
switch (mode) {
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h
index 0e15a7c575..f9c94345e5 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.h
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.h
@@ -454,6 +454,8 @@ private:
std::mutex vsyncEnabledLock;
hal::Vsync vsyncEnabled GUARDED_BY(vsyncEnabledLock) = hal::Vsync::DISABLE;
+ hal::PowerMode powerMode = hal::PowerMode::ON;
+
nsecs_t lastHwVsync = 0;
};