summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoen Chen <joenchen@google.com>2023-03-29 05:24:45 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2023-03-29 05:24:45 +0000
commit9cbf266ebcf19c77139d0f665327fd9e84d41e73 (patch)
tree204f83759a56888bc438d13108cbc6e9aca9c333
parentc365356850ac76bb03b3099cbed6a46877ef1973 (diff)
parenta097a660805e55977875b334b102bfc71c808fd9 (diff)
downloadzuma-9cbf266ebcf19c77139d0f665327fd9e84d41e73.tar.gz
Merge "libhwc2.1: The client target needs preblending" into udc-d1-dev
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index b77aa46..0ca3195 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -226,16 +226,25 @@ int32_t ExynosPrimaryDisplayModule::OperationRateManager::updateOperationRateLoc
void ExynosPrimaryDisplayModule::checkPreblendingRequirement() {
String8 log;
int count = 0;
- for (size_t i = 0; i < mLayers.size(); ++i) {
- auto& dpp = getDppForLayer(mLayers[i]);
- mLayers[i]->mNeedPreblending =
+
+ auto checkPreblending = [&](const int idx, ExynosMPPSource* mppSrc) -> int {
+ auto& dpp = getDppForLayer(mppSrc);
+ mppSrc->mNeedPreblending =
dpp.EotfLut().enable | dpp.Gm().enable | dpp.Dtm().enable | dpp.OetfLut().enable;
- count += mLayers[i]->mNeedPreblending;
if (hwcCheckDebugMessages(eDebugTDM)) {
- log.appendFormat(" i=%zu,pb(%d-%d,%d,%d,%d)", i, mLayers[i]->mNeedPreblending,
+ log.appendFormat(" i=%d,pb(%d-%d,%d,%d,%d)", idx, mppSrc->mNeedPreblending,
dpp.EotfLut().enable, dpp.Gm().enable, dpp.Dtm().enable,
dpp.OetfLut().enable);
}
+ return mppSrc->mNeedPreblending;
+ };
+
+ // for client target
+ count += checkPreblending(-1, &mClientCompositionInfo);
+
+ // for normal layers
+ for (size_t i = 0; i < mLayers.size(); ++i) {
+ count += checkPreblending(i, mLayers[i]);
}
- DISPLAY_LOGD(eDebugTDM, "%s: disp(%d),cnt=%d%s", __func__, mDisplayId, count, log.string());
+ DISPLAY_LOGD(eDebugTDM, "disp(%d),cnt=%d%s", mDisplayId, count, log.string());
}