display: Add support for MDP Composition

This change
   1) implements MDP Composition upto 3 layers
   2) adds invalidator support to fall back to FB
      composition during idle screen condition.

Change-Id: I55f27321fd0df096b353d66aaad1cc720cd4b84b
Acked-by: Jeykumar Sankaran <jsanka@codeaurora.org>
diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp
index 870a758..0b62a98 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -22,6 +22,7 @@
 #include "hwc_qbuf.h"
 #include "hwc_copybit.h"
 #include "hwc_external.h"
+#include "hwc_mdpcomp.h"
 
 namespace qhwc {
 
@@ -43,6 +44,7 @@
     ctx->hasOverlay = qdutils::MDPVersion::getInstance().hasOverlay();
     ctx->mCopybitEngine = CopybitEngine::getInstance();
     ctx->mExtDisplay = new ExternalDisplay(ctx);
+    MDPComp::init(ctx);
 
     init_uevent_thread(ctx);
 
@@ -103,6 +105,7 @@
     int yuvCount = 0;
     int yuvLayerIndex = -1;
     bool isYuvLayerSkip = false;
+    int skipCount = 0;
 
     for (size_t i = 0; i < list->numHwLayers; i++) {
         private_handle_t *hnd =
@@ -120,11 +123,13 @@
             if(yuvLayerIndex != -1 && yuvLayerIndex < (ssize_t)i) {
                 isYuvLayerSkip = true;
             }
+            skipCount++;
         }
     }
 
     VideoOverlay::setStats(yuvCount, yuvLayerIndex, isYuvLayerSkip);
     CopyBit::setStats(yuvCount, yuvLayerIndex, isYuvLayerSkip);
+    MDPComp::setStats(skipCount);
 
     ctx->numHwLayers = list->numHwLayers;
     return;