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;