diff options
author | Long Ling <longling@google.com> | 2021-04-30 13:39:03 -0700 |
---|---|---|
committer | Long Ling <longling@google.com> | 2021-05-04 09:45:02 -0700 |
commit | a81305445ccfee9d726f3cdf13f56112bdf9f5b6 (patch) | |
tree | 1f0e5bf32c58befa5e91c4ad9900c7543b51e93f | |
parent | 6f90021df4da518917308d13375d4e320a1d6498 (diff) | |
download | gs101-a81305445ccfee9d726f3cdf13f56112bdf9f5b6.tar.gz |
libhwc2.1: lhbm compensation
Pass lhbm status and dbv to displaycolor.
Read back the adjusted dbv value.
Bug: 184096624
Change-Id: If1f6363196a768fb902e1692aadb30a669537419
-rw-r--r-- | include/gs101/displaycolor/displaycolor_gs101.h | 3 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp | 9 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h | 1 |
3 files changed, 13 insertions, 0 deletions
diff --git a/include/gs101/displaycolor/displaycolor_gs101.h b/include/gs101/displaycolor/displaycolor_gs101.h index 921c389..b2ef7f9 100644 --- a/include/gs101/displaycolor/displaycolor_gs101.h +++ b/include/gs101/displaycolor/displaycolor_gs101.h @@ -277,6 +277,9 @@ class IDisplayColorGS101 : public IDisplayColorGeneric { /// Get a handle to Display Quality Enhancer (DQE) data accessors. virtual const IDqe& Dqe() const = 0; + /// Get a handle to panel data accessors + virtual const IPanel& Panel() const = 0; + virtual ~IDisplayPipelineData() {} }; diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp index 3a95617..aed357b 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp @@ -612,6 +612,8 @@ int32_t ExynosPrimaryDisplayModule::updateColorConversionInfo() : displaycolor::BrightnessMode::BM_NOMINAL; mDisplaySceneInfo.displayScene.force_hdr = getBrightnessState().dim_sdr_ratio != 1.0; + mDisplaySceneInfo.displayScene.lhbm_on = getBrightnessState().local_hbm; + mDisplaySceneInfo.displayScene.dbv = moduleDisplayInterface->getDbv(); if (hwcCheckDebugMessages(eDebugColorManagement)) mDisplaySceneInfo.printDisplayScene(); @@ -625,6 +627,13 @@ int32_t ExynosPrimaryDisplayModule::updateColorConversionInfo() return ret; } +int32_t ExynosPrimaryDisplayModule::getColorAdjustedDbv(uint32_t &dbv_adj) { + dbv_adj = mDisplayColorInterface->GetPipelineData(DisplayType::DISPLAY_PRIMARY) + ->Panel() + .GetAdjustedBrightnessLevel(); + return NO_ERROR; +} + bool ExynosPrimaryDisplayModule::DisplaySceneInfo::needDisplayColorSetting() { /* TODO: Check if we can skip color setting */ diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h index de63f03..0aeb622 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h @@ -107,6 +107,7 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay { virtual int32_t setColorTransform(const float* matrix, int32_t hint); virtual int deliverWinConfigData(); virtual int32_t updateColorConversionInfo(); + virtual int32_t getColorAdjustedDbv(uint32_t &dbv_adj); virtual void initLbe(); virtual void setLbeState(LbeState state); |