hwc: Try MDP composition eventhough skip layer is present
* Explore cachebased and loadbased composition strategies
eventhough skip layer is present in the layer list.
* Prioritize loadBasedComp over cacheBasedComp in such case.
* Invoke redraw of FB for every-frame as long as skip-layer
is present to comply with the spec.
Change-Id: If105ae8af4888a1e0b0fb824c526ef5a1adaedd8
diff --git a/libhwcomposer/hwc_mdpcomp.cpp b/libhwcomposer/hwc_mdpcomp.cpp
index d2962a3..cdb5396 100644
--- a/libhwcomposer/hwc_mdpcomp.cpp
+++ b/libhwcomposer/hwc_mdpcomp.cpp
@@ -390,9 +390,9 @@
bool MDPComp::isSupportedForMDPComp(hwc_context_t *ctx, hwc_layer_1_t* layer) {
private_handle_t *hnd = (private_handle_t *)layer->handle;
if((has90Transform(layer) and (not isRotationDoable(ctx, hnd))) ||
- (not isValidDimension(ctx,layer))
- //More conditions here, SKIP, sRGB+Blend etc
- ) {
+ (not isValidDimension(ctx,layer)) ||
+ isSkipLayer(layer)) {
+ //More conditions here, sRGB+Blend etc
return false;
}
return true;
@@ -782,13 +782,6 @@
return false;
}
- if(isSkipPresent(ctx, mDpy)) {
- ALOGD_IF(isDebug(),"%s: SKIP present: %d",
- __FUNCTION__,
- isSkipPresent(ctx, mDpy));
- return false;
- }
-
// if secondary is configuring or Padding round, fall back to video only
// composition and release all assigned non VIG pipes from primary.
if(isSecondaryConfiguring(ctx)) {
@@ -1123,7 +1116,8 @@
}
bool ret = false;
- if(list->flags & HWC_GEOMETRY_CHANGED) { //Try load based first
+ if(isSkipPresent(ctx, mDpy) or list->flags & HWC_GEOMETRY_CHANGED) {
+ //Try load based first
ret = loadBasedComp(ctx, list) or
cacheBasedComp(ctx, list);
} else {