summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Tai <williamtai@google.com>2022-04-06 11:30:34 +0800
committerYichi Chen <yichichen@google.com>2022-05-05 01:42:00 +0800
commit193c27a97da07180155781f3cec6979db393130a (patch)
tree0db3e67cf265feb76941418369f754fc45ae9549
parentef71aecbee6ab58447d4d111018263dff3d5672c (diff)
downloadcommon-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.cpp10
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplay.h1
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_;