diff options
author | Long Ling <longling@google.com> | 2021-07-12 15:33:05 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-07-12 15:33:05 +0000 |
commit | 8c89c24f4b68293ee37bf4db707cbbb9e62c01d0 (patch) | |
tree | 646ad93231f05c276c963843e1e7aabc62a856d1 | |
parent | 1042fa5cd51e482aafa8e77021671b11bfbaeb68 (diff) | |
parent | 9ebb39f623383eb7e556f930e571813ee30c0f0b (diff) | |
download | gs101-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.h | 1 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp | 19 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h | 5 |
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(); |