overlay: MDSS cannot handle 1-pixel downscaling for UI layer.
As MDSS cannot handle 1-pixel downscaling for UI layer, decrease
src crop by 1 pixel in such cases.
Change-Id: Ifc1f3a8e416c48db4b09d2ab0838927952e263ed
diff --git a/liboverlay/overlayMdp.cpp b/liboverlay/overlayMdp.cpp
index 61bfb19..2d88376 100644
--- a/liboverlay/overlayMdp.cpp
+++ b/liboverlay/overlayMdp.cpp
@@ -167,7 +167,6 @@
int mdpVersion = MDPVersion::getInstance().getMDPVersion();
//deferred calcs, so APIs could be called in any order.
doTransform();
- doDownscale();
utils::Whf whf = getSrcWhf();
if(utils::isYuv(whf.format)) {
utils::normalizeCrop(mOVInfo.src_rect.x, mOVInfo.src_rect.w);
@@ -181,8 +180,18 @@
(mOVInfo.src_rect.h % 4))
mOVInfo.src_rect.h = utils::aligndown(mOVInfo.src_rect.h, 4);
}
+ } else {
+ if (mdpVersion >= MDSS_V5) {
+ // Check for 1-pixel down-scaling
+ if (mOVInfo.src_rect.w - mOVInfo.dst_rect.w == 1)
+ mOVInfo.src_rect.w -= 1;
+ if (mOVInfo.src_rect.h - mOVInfo.dst_rect.h == 1)
+ mOVInfo.src_rect.h -= 1;
+ }
}
+ doDownscale();
+
if(this->ovChanged() || mForceSet) {
mForceSet = false;
if(!mdp_wrapper::setOverlay(mFd.getFD(), mOVInfo)) {