summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLong Ling <longling@google.com>2022-02-22 14:05:40 -0800
committerLong Ling <longling@google.com>2022-02-24 13:52:22 -0800
commit53aca61bbf60708eaa17ec0d39002e9e21b965db (patch)
treedd0f27a129bc80c47d77de78eeb85e23fe2a4b4d
parentfb85a8ddeb624350972691a419509dc2ca5c279f (diff)
downloadgs101-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.cpp22
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h3
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();