diff options
author | William Tai <williamtai@google.com> | 2022-04-06 11:30:34 +0800 |
---|---|---|
committer | Yichi Chen <yichichen@google.com> | 2022-05-05 01:42:00 +0800 |
commit | 193c27a97da07180155781f3cec6979db393130a (patch) | |
tree | 0db3e67cf265feb76941418369f754fc45ae9549 | |
parent | ef71aecbee6ab58447d4d111018263dff3d5672c (diff) | |
download | common-193c27a97da07180155781f3cec6979db393130a.tar.gz |
libhwc2.1: add frames wait to reach LHBM peak brightness
Add frames wait to reach LHBM peak brightness
Bug: 224573604
Test: run perfetto
Change-Id: I1f66eb3200de429852ed7eb258fdeba4fc43933e
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp | 10 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h | 1 |
2 files changed, 10 insertions, 1 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp index 37dc832..9e20e07 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.cpp @@ -91,6 +91,8 @@ ExynosPrimaryDisplay::ExynosPrimaryDisplay(uint32_t index, ExynosDevice *device) mType = HWC_DISPLAY_PRIMARY; mIndex = index; mDisplayId = getDisplayId(mType, mIndex); + mFramesToReachLhbmPeakBrightness = + property_get_int32("vendor.primarydisplay.lhbm.frames_to_reach_peak_brightness", 3); // Prepare multi resolution // Will be exynosHWCControl.multiResoultion @@ -505,8 +507,14 @@ int32_t ExynosPrimaryDisplay::setLhbmState(bool enabled) { ALOGI("setLhbmState =%d timeout !", enabled); return TIMED_OUT; } else { - if (enabled) + if (enabled) { mDisplayInterface->waitVBlank(); + ATRACE_NAME("frames to reach LHBM peak brightness"); + for (int32_t i = mFramesToReachLhbmPeakBrightness; i > 0; i--) { + mDevice->invalidate(); + mDisplayInterface->waitVBlank(); + } + } return NO_ERROR; } } diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h index 63b1793..c82d57b 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h @@ -100,6 +100,7 @@ class ExynosPrimaryDisplay : public ExynosDisplay { FILE* mLhbmFd; bool mLhbmOn; bool mLhbmChanged; + int32_t mFramesToReachLhbmPeakBrightness; std::mutex lhbm_mutex_; std::condition_variable lhbm_cond_; |