diff options
author | Long Ling <longling@google.com> | 2022-02-22 14:05:40 -0800 |
---|---|---|
committer | Long Ling <longling@google.com> | 2022-02-24 13:52:22 -0800 |
commit | 53aca61bbf60708eaa17ec0d39002e9e21b965db (patch) | |
tree | dd0f27a129bc80c47d77de78eeb85e23fe2a4b4d | |
parent | fb85a8ddeb624350972691a419509dc2ca5c279f (diff) | |
download | gs101-53aca61bbf60708eaa17ec0d39002e9e21b965db.tar.gz |
libhwc2.1: move SDR dimming to displaycolor
And get dimming stage from displaycolor
Bug: 218954037
Change-Id: Ib9f47e959b06efe62c1c2b9c83870ffbe0786fab
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp | 22 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h | 3 |
2 files changed, 15 insertions, 10 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp index 5e8e08a..e9d1972 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp @@ -267,7 +267,8 @@ int32_t ExynosPrimaryDisplayModule::setColorTransform( } int32_t ExynosPrimaryDisplayModule::getClientTargetProperty( - hwc_client_target_property_t* outClientTargetProperty) { + hwc_client_target_property_t* outClientTargetProperty, + HwcDimmingStage *outDimmingStage) { IDisplayColorGS101* displayColorInterface = getDisplayColorInterface(); if (displayColorInterface == nullptr) { ALOGI("%s dc interface not created", __func__); @@ -277,9 +278,15 @@ int32_t ExynosPrimaryDisplayModule::getClientTargetProperty( const DisplayType display = getDisplayTypeFromIndex(mIndex); hwc::PixelFormat pixelFormat; hwc::Dataspace dataspace; - if (!displayColorInterface->GetBlendingProperty(display, pixelFormat, dataspace)) { + bool dimming_linear; + if (!displayColorInterface->GetBlendingProperty(display, pixelFormat, dataspace, + dimming_linear)) { outClientTargetProperty->pixelFormat = toUnderlying(pixelFormat); outClientTargetProperty->dataspace = toUnderlying(dataspace); + if (outDimmingStage != nullptr) + *outDimmingStage = dimming_linear + ? HwcDimmingStage::DIMMING_LINEAR + : HwcDimmingStage::DIMMING_OETF; return HWC2_ERROR_NONE; } @@ -293,6 +300,7 @@ int32_t ExynosPrimaryDisplayModule::setLayersColorData() int32_t ret = 0; uint32_t layerNum = 0; + // TODO: b/212616164 remove dimSdrRatio float dimSdrRatio = mBrightnessController->getSdrDimRatioForInstantHbm(); for (uint32_t i = 0; i < mLayers.size(); i++) { @@ -312,15 +320,9 @@ int32_t ExynosPrimaryDisplayModule::setLayersColorData() return ret; } - float layerDimRatio = layer->mPreprocessedInfo.sdrDimRatio; - if (dimSdrRatio < 1.0 && layerDimRatio < 1.0) { - // should have only one of them less than 1.0 for hwc2.4 or hwc3 - ALOGW("%s instant hbm sdr dim %f, mixed compoistion layer dim %f", __func__, - dimSdrRatio, layerDimRatio); - } if ((ret = mDisplaySceneInfo.setLayerColorData(layerColorData, layer, - layerDimRatio * dimSdrRatio)) != NO_ERROR) { + dimSdrRatio)) != NO_ERROR) { DISPLAY_LOGE("%s: layer[%d] setLayerColorData fail, layerNum(%d)", __func__, i, layerNum); return ret; @@ -569,6 +571,7 @@ int32_t ExynosPrimaryDisplayModule::DisplaySceneInfo::setClientCompositionColorD const ExynosCompositionInfo &clientCompositionInfo, LayerColorData& layerData, float dimSdrRatio) { + layerData.dim_ratio = 1.0f; setLayerDataspace(layerData, static_cast<hwc::Dataspace>(clientCompositionInfo.mDataSpace)); disableLayerHdrStaticMetadata(layerData); @@ -598,6 +601,7 @@ int32_t ExynosPrimaryDisplayModule::DisplaySceneInfo::setClientCompositionColorD int32_t ExynosPrimaryDisplayModule::DisplaySceneInfo::setLayerColorData( LayerColorData& layerData, ExynosLayer* layer, float dimSdrRatio) { + layerData.dim_ratio = layer->mPreprocessedInfo.sdrDimRatio; setLayerDataspace(layerData, static_cast<hwc::Dataspace>(layer->mDataSpace)); if (layer->mIsHdrLayer) { diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h index ed9adda..0b1aa41 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h @@ -112,7 +112,8 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay { int32_t intent); virtual int32_t setColorTransform(const float* matrix, int32_t hint); virtual int32_t getClientTargetProperty( - hwc_client_target_property_t* outClientTargetProperty) override; + hwc_client_target_property_t* outClientTargetProperty, + HwcDimmingStage *outDimmingStage = nullptr) override; virtual int deliverWinConfigData(); virtual int32_t updateColorConversionInfo(); virtual int32_t updatePresentColorConversionInfo(); |