hwc: Handle alpha scaling in mdp3.
MDP3 loosing alpha value in case of scaling up
and down.Hence we can't scale up or down alpha layer
more than its hw capability(4x).
CRs-Fixed: 766561
Change-Id: Id168f8331e08700903774227ee8e9bff61e5bfd4
diff --git a/libhwcomposer/hwc_copybit.cpp b/libhwcomposer/hwc_copybit.cpp
index 65482d7..05aeb5e 100644
--- a/libhwcomposer/hwc_copybit.cpp
+++ b/libhwcomposer/hwc_copybit.cpp
@@ -352,10 +352,18 @@
dx = (float)dst_w/(float)src_w;
dy = (float)dst_h/(float)src_h;
- if (dx > MAX_SCALE_FACTOR || dx < MIN_SCALE_FACTOR)
+ float scale_factor_max = MAX_SCALE_FACTOR;
+ float scale_factor_min = MIN_SCALE_FACTOR;
+
+ if (isAlphaPresent(layer)) {
+ scale_factor_max = MAX_SCALE_FACTOR/4;
+ scale_factor_min = MIN_SCALE_FACTOR*4;
+ }
+
+ if (dx > scale_factor_max || dx < scale_factor_min)
return false;
- if (dy > MAX_SCALE_FACTOR || dy < MIN_SCALE_FACTOR)
+ if (dy > scale_factor_max || dy < scale_factor_min)
return false;
}
}