hwc: User Layercache for external display
Change-Id: Ibca92e1470ef72dc02d16d4ef8c05f1a1d2d485c
diff --git a/libhwcomposer/hwc.cpp b/libhwcomposer/hwc.cpp
index 23ffa42..f21d449 100644
--- a/libhwcomposer/hwc.cpp
+++ b/libhwcomposer/hwc.cpp
@@ -127,7 +127,7 @@
if(!MDPComp::configure(ctx, list)) {
VideoOverlay::prepare(ctx, list, HWC_DISPLAY_PRIMARY);
FBUpdate::prepare(ctx, fbLayer, HWC_DISPLAY_PRIMARY);
- ctx->mLayerCache->updateLayerCache(list);
+ ctx->mLayerCache[HWC_DISPLAY_PRIMARY]->updateLayerCache(list);
}
}
}
@@ -150,6 +150,7 @@
VideoOverlay::prepare(ctx, list, HWC_DISPLAY_EXTERNAL);
FBUpdate::prepare(ctx, fbLayer, HWC_DISPLAY_EXTERNAL);
+ ctx->mLayerCache[HWC_DISPLAY_EXTERNAL]->updateLayerCache(list);
}
}
return 0;
diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp
index 0ae64da..2f35567 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -60,7 +60,8 @@
ctx->mMDP.hasOverlay = qdutils::MDPVersion::getInstance().hasOverlay();
ctx->mMDP.panel = qdutils::MDPVersion::getInstance().getPanelType();
ctx->mExtDisplay = new ExternalDisplay(ctx);
- ctx->mLayerCache = new LayerCache();
+ for (uint32_t i = 0; i < HWC_NUM_DISPLAY_TYPES; i++)
+ ctx->mLayerCache[i] = new LayerCache();
MDPComp::init(ctx);
pthread_mutex_init(&(ctx->vstate.lock), NULL);
diff --git a/libhwcomposer/hwc_utils.h b/libhwcomposer/hwc_utils.h
index 256b840..d7200b0 100644
--- a/libhwcomposer/hwc_utils.h
+++ b/libhwcomposer/hwc_utils.h
@@ -220,7 +220,7 @@
qhwc::MDPInfo mMDP;
qhwc::DisplayAttributes dpyAttr[HWC_NUM_DISPLAY_TYPES];
qhwc::ListStats listStats[HWC_NUM_DISPLAY_TYPES];
- qhwc::LayerCache *mLayerCache;
+ qhwc::LayerCache *mLayerCache[HWC_NUM_DISPLAY_TYPES];
qhwc::LayerProp *layerProp[HWC_NUM_DISPLAY_TYPES];
//Securing in progress indicator