diff options
author | Long Ling <longling@google.com> | 2021-07-20 08:56:15 -0700 |
---|---|---|
committer | Long Ling <longling@google.com> | 2021-07-20 09:05:56 -0700 |
commit | cbd531498d8e5da630a1869fba8768b0922920f0 (patch) | |
tree | a33a008540f7d1c4384a25daa55246b69a3527f1 | |
parent | d55594f911455a17f43fa73d6a260bf3f21a4bff (diff) | |
download | gs101-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.cpp | 7 |
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; |