hwc: Avoid fullMDPComp[WithPTOR] on primary when secondary has YUV layer
* On Low end targets which has constraint on the #pipes, avoid
fullMDPComp and fullMDPCompWithPTOR on primary
when secondary is connected and secondary has a YUV layer.
* This helps in secondary have sufficient number of RGB or DMA pipes
to handle sudden increase in #layers.
Change-Id: Ie848300c86f756125146482dc027c1c5872de7a6
diff --git a/libhwcomposer/hwc_mdpcomp.cpp b/libhwcomposer/hwc_mdpcomp.cpp
index 087fe1e..fdd7f0f 100644
--- a/libhwcomposer/hwc_mdpcomp.cpp
+++ b/libhwcomposer/hwc_mdpcomp.cpp
@@ -924,6 +924,15 @@
}
}
+ if(!mDpy && isSecondaryConnected(ctx) &&
+ (qdutils::MDPVersion::getInstance().is8x16() ||
+ qdutils::MDPVersion::getInstance().is8x26() ||
+ qdutils::MDPVersion::getInstance().is8x39()) &&
+ isYuvPresent(ctx, HWC_DISPLAY_VIRTUAL)) {
+ ALOGD_IF(isDebug(), "%s: YUV layer present on secondary", __FUNCTION__);
+ return false;
+ }
+
mCurrentFrame.fbCount = 0;
memcpy(&mCurrentFrame.isFBComposed, &mCurrentFrame.drop,
sizeof(mCurrentFrame.isFBComposed));
@@ -982,6 +991,15 @@
}
}
+ if(!mDpy && isSecondaryConnected(ctx) &&
+ (qdutils::MDPVersion::getInstance().is8x16() ||
+ qdutils::MDPVersion::getInstance().is8x26() ||
+ qdutils::MDPVersion::getInstance().is8x39()) &&
+ isYuvPresent(ctx, HWC_DISPLAY_VIRTUAL)) {
+ ALOGD_IF(isDebug(), "%s: YUV layer present on secondary", __FUNCTION__);
+ return false;
+ }
+
/* We cannot use this composition mode, if:
1. A below layer needs scaling.
2. Overlap is not peripheral to display.