diff options
| author | 2022-03-28 09:53:35 -0700 | |
|---|---|---|
| committer | 2022-04-06 15:58:25 -0700 | |
| commit | 8f96ec4b3074b6c1a4cb47bef4855f38896eb12c (patch) | |
| tree | 769de1aeb6550623cda8d155c984757f359fd39c | |
| parent | 56becd9a2e8abc5694809a7af6b69eeab018fb23 (diff) | |
Avoid vsync enabled when in DOZE mode (AOD).
Bug: 219109873
Test: perfetto trace
Change-Id: Id3373dc9bb0cf4c0375c79a32ca9802fd77e06c2
| -rw-r--r-- | services/surfaceflinger/DisplayHardware/HWComposer.cpp | 6 | ||||
| -rw-r--r-- | services/surfaceflinger/DisplayHardware/HWComposer.h | 2 |
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; }; |