diff options
Diffstat (limited to 'libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp')
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp | 65 |
1 files changed, 43 insertions, 22 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp index 2bf949f..e4306ae 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp @@ -298,6 +298,26 @@ int32_t ExynosPrimaryDisplayModule::getClientTargetProperty( return ExynosDisplay::getClientTargetProperty(outClientTargetProperty); } +int32_t ExynosPrimaryDisplayModule::updateBrightnessTable() { + const IBrightnessTable* table = nullptr; + auto displayColorInterface = getDisplayColorInterface(); + if (displayColorInterface == nullptr) { + ALOGE("%s displaycolor interface not available!", __func__); + return HWC2_ERROR_NO_RESOURCES; + } + + auto displayType = getBuiltInDisplayType(); + auto ret = displayColorInterface->GetBrightnessTable(displayType, table); + if (ret != android::OK) { + ALOGE("%s brightness table not available!", __func__); + return HWC2_ERROR_NO_RESOURCES; + } + // BrightnessController is not ready until this step + mBrightnessController->updateBrightnessTable(table); + + return HWC2_ERROR_NONE; +} + int32_t ExynosPrimaryDisplayModule::setLayersColorData() { int32_t ret = 0; @@ -305,12 +325,33 @@ int32_t ExynosPrimaryDisplayModule::setLayersColorData() // TODO: b/212616164 remove dimSdrRatio float dimSdrRatio = mBrightnessController->getSdrDimRatioForInstantHbm(); + + // for client target + { + LayerColorData& layerColorData = mDisplaySceneInfo.getLayerColorDataInstance(layerNum); + + /* set layer data mapping info */ + if ((ret = mDisplaySceneInfo.setLayerDataMappingInfo(&mClientCompositionInfo, layerNum)) != + NO_ERROR) { + DISPLAY_LOGE("%s: setLayerDataMappingInfo fail for client composition", __func__); + return ret; + } + + if ((ret = mDisplaySceneInfo.setClientCompositionColorData(mClientCompositionInfo, + layerColorData, dimSdrRatio)) != + NO_ERROR) { + DISPLAY_LOGE("%s: setClientCompositionColorData fail", __func__); + return ret; + } + + layerNum++; + } + for (uint32_t i = 0; i < mLayers.size(); i++) { ExynosLayer* layer = mLayers[i]; - if (layer->mValidateCompositionType == HWC2_COMPOSITION_CLIENT) - continue; + if (layer->mCompositionType == HWC2_COMPOSITION_CLIENT) continue; LayerColorData& layerColorData = mDisplaySceneInfo.getLayerColorDataInstance(layerNum); @@ -334,26 +375,6 @@ int32_t ExynosPrimaryDisplayModule::setLayersColorData() layerNum++; } - if (mClientCompositionInfo.mHasCompositionLayer) { - LayerColorData& layerColorData = - mDisplaySceneInfo.getLayerColorDataInstance(layerNum); - - /* set layer data mapping info */ - if ((ret = mDisplaySceneInfo.setLayerDataMappingInfo(&mClientCompositionInfo, - layerNum)) != NO_ERROR) { - DISPLAY_LOGE("%s: setLayerDataMappingInfo fail for client composition", __func__); - return ret; - } - - if ((ret = mDisplaySceneInfo.setClientCompositionColorData( - mClientCompositionInfo, layerColorData, dimSdrRatio)) != NO_ERROR) { - DISPLAY_LOGE("%s: setClientCompositionColorData fail", __func__); - return ret; - } - - layerNum++; - } - /* Resize layer_data when layers were destroyed */ if (layerNum < mDisplaySceneInfo.displayScene.layer_data.size()) mDisplaySceneInfo.displayScene.layer_data.resize(layerNum); |