summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLong Ling <longling@google.com>2021-07-20 08:56:15 -0700
committerLong Ling <longling@google.com>2021-07-20 09:05:56 -0700
commitcbd531498d8e5da630a1869fba8768b0922920f0 (patch)
treea33a008540f7d1c4384a25daa55246b69a3527f1
parentd55594f911455a17f43fa73d6a260bf3f21a4bff (diff)
downloadgs101-cbd531498d8e5da630a1869fba8768b0922920f0.tar.gz
libhwc2.1: force update plane color if dc dpp index changes
The mapping among displaycolor, hwc and drm: displaycolor dpp index <---> hwc layer <---> drm plane id. Force update plane color if the assigned displaycolor dpp index changes. Bug: 193285185 Test: scrolling image list in Chrome during pip YT video playback Change-Id: I53975fe412051fede9302183c6761d7abb15d1bc
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index fbdd166..fee339a 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -397,8 +397,11 @@ int32_t ExynosPrimaryDisplayModule::DisplaySceneInfo::setLayerDataMappingInfo(
layer, index);
return -EINVAL;
}
- uint32_t oldPlaneId = prev_layerDataMappingInfo.count(layer) != 0 ?
- prev_layerDataMappingInfo[layer].planeId : UINT_MAX;
+ // if assigned displaycolor dppIdx changes, do not reuse it (force plane color update).
+ uint32_t oldPlaneId = prev_layerDataMappingInfo.count(layer) != 0 &&
+ prev_layerDataMappingInfo[layer].dppIdx != index
+ ? prev_layerDataMappingInfo[layer].planeId
+ : UINT_MAX;
layerDataMappingInfo.insert(std::make_pair(layer, LayerMappingInfo{ index, oldPlaneId }));
return NO_ERROR;