diff options
author | Long Ling <longling@google.com> | 2021-12-20 17:38:11 -0800 |
---|---|---|
committer | Long Ling <longling@google.com> | 2022-02-11 15:45:12 -0800 |
commit | 1acdd7d7f590930cee9b965dc51719b58478380e (patch) | |
tree | 565868d67217cb3ca02623d1d7ed1092f84b5475 | |
parent | 00b40ed46283d52993175afaa5c6718cbc20f3ed (diff) | |
download | gs101-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.cpp | 24 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h | 2 |
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(); |