summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLong Ling <longling@google.com>2021-12-20 17:38:11 -0800
committerLong Ling <longling@google.com>2022-02-11 15:45:12 -0800
commit1acdd7d7f590930cee9b965dc51719b58478380e (patch)
tree565868d67217cb3ca02623d1d7ed1092f84b5475
parent00b40ed46283d52993175afaa5c6718cbc20f3ed (diff)
downloadgs101-1acdd7d7f590930cee9b965dc51719b58478380e.tar.gz
libhwc2.1: set correct client target property
Get preferred property of blending stage from displaycolor. Pass HDR layer state to displaycolor. Bug: 200310159 Change-Id: I9f53602ed0634378a652035a39ee8c2bb0d3423e
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp24
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h2
2 files changed, 25 insertions, 1 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index 92ccaa1..5e8e08a 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -266,6 +266,28 @@ int32_t ExynosPrimaryDisplayModule::setColorTransform(
}
+int32_t ExynosPrimaryDisplayModule::getClientTargetProperty(
+ hwc_client_target_property_t* outClientTargetProperty) {
+ IDisplayColorGS101* displayColorInterface = getDisplayColorInterface();
+ if (displayColorInterface == nullptr) {
+ ALOGI("%s dc interface not created", __func__);
+ return ExynosDisplay::getClientTargetProperty(outClientTargetProperty);
+ }
+
+ const DisplayType display = getDisplayTypeFromIndex(mIndex);
+ hwc::PixelFormat pixelFormat;
+ hwc::Dataspace dataspace;
+ if (!displayColorInterface->GetBlendingProperty(display, pixelFormat, dataspace)) {
+ outClientTargetProperty->pixelFormat = toUnderlying(pixelFormat);
+ outClientTargetProperty->dataspace = toUnderlying(dataspace);
+
+ return HWC2_ERROR_NONE;
+ }
+
+ ALOGW("%s failed to get property of blending stage", __func__);
+ return ExynosDisplay::getClientTargetProperty(outClientTargetProperty);
+}
+
int32_t ExynosPrimaryDisplayModule::setLayersColorData()
{
int32_t ret = 0;
@@ -668,7 +690,7 @@ int32_t ExynosPrimaryDisplayModule::updateColorConversionInfo()
mDisplaySceneInfo.displayScene.force_hdr = mBrightnessController->isDimSdr();
mDisplaySceneInfo.displayScene.lhbm_on = mBrightnessController->isLhbmOn();
- mDisplaySceneInfo.displayScene.hdr_full_screen = mBrightnessController->isHdrFullScreen();
+ mDisplaySceneInfo.displayScene.hdr_layer_state = mBrightnessController->getHdrLayerState();
mDisplaySceneInfo.displayScene.dbv = mBrightnessController->getBrightnessLevel();
if (hwcCheckDebugMessages(eDebugColorManagement))
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
index 9dc5010..ed9adda 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
@@ -111,6 +111,8 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay {
virtual int32_t setColorModeWithRenderIntent(int32_t mode,
int32_t intent);
virtual int32_t setColorTransform(const float* matrix, int32_t hint);
+ virtual int32_t getClientTargetProperty(
+ hwc_client_target_property_t* outClientTargetProperty) override;
virtual int deliverWinConfigData();
virtual int32_t updateColorConversionInfo();
virtual int32_t updatePresentColorConversionInfo();