summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLong Ling <longling@google.com>2021-04-30 13:39:03 -0700
committerLong Ling <longling@google.com>2021-05-04 09:45:02 -0700
commita81305445ccfee9d726f3cdf13f56112bdf9f5b6 (patch)
tree1f0e5bf32c58befa5e91c4ad9900c7543b51e93f
parent6f90021df4da518917308d13375d4e320a1d6498 (diff)
downloadgs101-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.h3
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp9
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h1
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);