hwc: Instantiate the copybit object when needed
- Initialize copybit object only when its used for composition, as it
was causing on unnecessary dup of the releaseFence in hwc_sync
- Its used only in case of MDP copybit
- Remove unused copybit object for external display
Change-Id: I876b7b8c5754e469613761789193bda321134c9f
diff --git a/libhwcomposer/hwc_uevents.cpp b/libhwcomposer/hwc_uevents.cpp
index 51e5526..9d35e74 100644
--- a/libhwcomposer/hwc_uevents.cpp
+++ b/libhwcomposer/hwc_uevents.cpp
@@ -50,13 +50,6 @@
{
ctx->mFBUpdate[dpy] = IFBUpdate::getObject(ctx, dpy);
ctx->mMDPComp[dpy] = MDPComp::getObject(ctx, dpy);
- int compositionType =
- qdutils::QCCompositionType::getInstance().getCompositionType();
- if (compositionType & (qdutils::COMPOSITION_TYPE_DYN |
- qdutils::COMPOSITION_TYPE_MDP |
- qdutils::COMPOSITION_TYPE_C2D)) {
- ctx->mCopyBit[dpy] = new CopyBit(ctx, dpy);
- }
}
static void clear(hwc_context_t* ctx, int dpy)
@@ -65,10 +58,6 @@
delete ctx->mFBUpdate[dpy];
ctx->mFBUpdate[dpy] = NULL;
}
- if(ctx->mCopyBit[dpy]){
- delete ctx->mCopyBit[dpy];
- ctx->mCopyBit[dpy] = NULL;
- }
if(ctx->mMDPComp[dpy]) {
delete ctx->mMDPComp[dpy];
ctx->mMDPComp[dpy] = NULL;
diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp
index 0663f67..001bc8c 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -142,16 +142,18 @@
ctx->mFBUpdate[HWC_DISPLAY_PRIMARY] =
IFBUpdate::getObject(ctx, HWC_DISPLAY_PRIMARY);
- // Check if the target supports copybit compostion (dyn/mdp/c2d) to
+ // Check if the target supports copybit compostion (dyn/mdp) to
// decide if we need to open the copybit module.
int compositionType =
qdutils::QCCompositionType::getInstance().getCompositionType();
- if (compositionType & (qdutils::COMPOSITION_TYPE_DYN |
- qdutils::COMPOSITION_TYPE_MDP |
- qdutils::COMPOSITION_TYPE_C2D)) {
- ctx->mCopyBit[HWC_DISPLAY_PRIMARY] = new CopyBit(ctx,
- HWC_DISPLAY_PRIMARY);
+ // Only MDP copybit is used
+ if ((compositionType & (qdutils::COMPOSITION_TYPE_DYN |
+ qdutils::COMPOSITION_TYPE_MDP)) &&
+ (qdutils::MDPVersion::getInstance().getMDPVersion() ==
+ qdutils::MDP_V3_0_4)) {
+ ctx->mCopyBit[HWC_DISPLAY_PRIMARY] = new CopyBit(ctx,
+ HWC_DISPLAY_PRIMARY);
}
ctx->mExtDisplay = new ExternalDisplay(ctx);