summaryrefslogtreecommitdiff
path: root/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp')
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp65
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);