summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLong Ling <longling@google.com>2021-07-12 15:33:05 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-07-12 15:33:05 +0000
commit8c89c24f4b68293ee37bf4db707cbbb9e62c01d0 (patch)
tree646ad93231f05c276c963843e1e7aabc62a856d1
parent1042fa5cd51e482aafa8e77021671b11bfbaeb68 (diff)
parent9ebb39f623383eb7e556f930e571813ee30c0f0b (diff)
downloadgs101-8c89c24f4b68293ee37bf4db707cbbb9e62c01d0.tar.gz
libhwc2.1: support smooth display compensation am: 9ebb39f623
Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/google/graphics/gs101/+/14969606 Change-Id: Ieb0484554fb4890a47189fbeeb0c38dcfcc216d0
-rw-r--r--libhwc2.1/ExynosHWCModule.h1
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp19
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h5
3 files changed, 25 insertions, 0 deletions
diff --git a/libhwc2.1/ExynosHWCModule.h b/libhwc2.1/ExynosHWCModule.h
index df6b0ad..db91654 100644
--- a/libhwc2.1/ExynosHWCModule.h
+++ b/libhwc2.1/ExynosHWCModule.h
@@ -32,6 +32,7 @@
#define DP_CABLE_STATE_NAME "/sys/devices/platform/%s/extcon/extcon0/cable.0/state"
#define BRIGHTNESS_NODE_BASE "/sys/class/backlight/panel0-backlight/brightness"
#define MAX_BRIGHTNESS_NODE_BASE "/sys/class/backlight/panel0-backlight/max_brightness"
+#define EARLY_WAKUP_NODE_BASE "/sys/devices/platform/1c300000.drmdecon/early_wakeup"
#define IDMA(x) static_cast<decon_idma_type>(x)
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index 4d75ebc..074e0a5 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -642,6 +642,25 @@ int32_t ExynosPrimaryDisplayModule::updateColorConversionInfo()
return ret;
}
+int32_t ExynosPrimaryDisplayModule::updatePresentColorConversionInfo()
+{
+ ExynosDisplayDrmInterfaceModule *moduleDisplayInterface =
+ (ExynosDisplayDrmInterfaceModule*)(mDisplayInterface.get());
+ auto refresh_rate = moduleDisplayInterface->getDesiredRefreshRate();
+ if (refresh_rate > 0) {
+ mDisplaySceneInfo.displayScene.refresh_rate = refresh_rate;
+ }
+
+ int ret = OK;
+ if ((ret = mDisplayColorInterface->UpdatePresent(DisplayType::DISPLAY_PRIMARY,
+ mDisplaySceneInfo.displayScene)) != 0) {
+ DISPLAY_LOGE("Display Scene update error (%d)", ret);
+ return ret;
+ }
+
+ return ret;
+}
+
int32_t ExynosPrimaryDisplayModule::getColorAdjustedDbv(uint32_t &dbv_adj) {
dbv_adj = mDisplayColorInterface->GetPipelineData(DisplayType::DISPLAY_PRIMARY)
->Panel()
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
index dc4ccc4..53805ff 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
@@ -111,6 +111,11 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay {
virtual int32_t setColorTransform(const float* matrix, int32_t hint);
virtual int deliverWinConfigData();
virtual int32_t updateColorConversionInfo();
+ virtual int32_t updatePresentColorConversionInfo();
+ virtual bool checkEarlyWakeupNeeded(float refresh_rate) {
+ return mDisplayColorInterface->IsRrCompensationEnabled(
+ DisplayType::DISPLAY_PRIMARY, refresh_rate);
+ }
virtual int32_t getColorAdjustedDbv(uint32_t &dbv_adj);
virtual void initLbe();