diff --git a/libhwcomposer/hwc_fbupdate.cpp b/libhwcomposer/hwc_fbupdate.cpp index 7ba2ddcc..ba3b5d27 100644 --- a/libhwcomposer/hwc_fbupdate.cpp +++ b/libhwcomposer/hwc_fbupdate.cpp @@ -288,16 +288,8 @@ bool FBUpdateHighRes::configure(hwc_context_t *ctx, hwc_rect_t displayFrame = layer->displayFrame; const float xres = ctx->dpyAttr[mDpy].xres; - //Default even split for all displays with high res - float lSplit = xres / 2; - if(mDpy == HWC_DISPLAY_PRIMARY && - qdutils::MDPVersion::getInstance().getLeftSplit()) { - //Override if split published by driver for primary - lSplit = qdutils::MDPVersion::getInstance().getLeftSplit(); - } - + const int lSplit = getLeftSplit(ctx, mDpy); const float lSplitRatio = lSplit / xres; - const float lCropWidth = (sourceCrop.right - sourceCrop.left) * lSplitRatio; diff --git a/libhwcomposer/hwc_mdpcomp.cpp b/libhwcomposer/hwc_mdpcomp.cpp index 462cc6d0..69e81db7 100644 --- a/libhwcomposer/hwc_mdpcomp.cpp +++ b/libhwcomposer/hwc_mdpcomp.cpp @@ -980,13 +980,8 @@ int MDPCompHighRes::pipesNeeded(hwc_context_t *ctx, int mixer) { int pipesNeeded = 0; const int xres = ctx->dpyAttr[mDpy].xres; - //Default even split for all displays with high res - int lSplit = xres / 2; - if(mDpy == HWC_DISPLAY_PRIMARY && - qdutils::MDPVersion::getInstance().getLeftSplit()) { - //Override if split published by driver for primary - lSplit = qdutils::MDPVersion::getInstance().getLeftSplit(); - } + + const int lSplit = getLeftSplit(ctx, mDpy); for(int i = 0; i < mCurrentFrame.layerCount; ++i) { if(!mCurrentFrame.isFBComposed[i]) { @@ -1028,13 +1023,7 @@ bool MDPCompHighRes::acquireMDPPipes(hwc_context_t *ctx, hwc_layer_1_t* layer, MdpPipeInfoHighRes& pipe_info, ePipeType type) { const int xres = ctx->dpyAttr[mDpy].xres; - //Default even split for all displays with high res - int lSplit = xres / 2; - if(mDpy == HWC_DISPLAY_PRIMARY && - qdutils::MDPVersion::getInstance().getLeftSplit()) { - //Override if split published by driver for primary - lSplit = qdutils::MDPVersion::getInstance().getLeftSplit(); - } + const int lSplit = getLeftSplit(ctx, mDpy); hwc_rect_t dst = layer->displayFrame; pipe_info.lIndex = ovutils::OV_INVALID; diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp index 93017c5d..1c881cb5 100644 --- a/libhwcomposer/hwc_utils.cpp +++ b/libhwcomposer/hwc_utils.cpp @@ -1090,7 +1090,8 @@ int configureHighRes(hwc_context_t *ctx, hwc_layer_1_t *layer, hwc_rect_t tmp_cropL, tmp_dstL; hwc_rect_t tmp_cropR, tmp_dstR; - const int lSplit = qdutils::MDPVersion::getInstance().getLeftSplit(); + const int lSplit = getLeftSplit(ctx, dpy); + if(lDest != OV_INVALID) { tmp_cropL = crop; tmp_dstL = dst; @@ -1166,6 +1167,16 @@ bool canUseRotator(hwc_context_t *ctx) { return true; } +int getLeftSplit(hwc_context_t *ctx, const int& dpy) { + //Default even split for all displays with high res + int lSplit = ctx->dpyAttr[dpy].xres / 2; + if(dpy == HWC_DISPLAY_PRIMARY && + qdutils::MDPVersion::getInstance().getLeftSplit()) { + //Override if split published by driver for primary + lSplit = qdutils::MDPVersion::getInstance().getLeftSplit(); + } + return lSplit; +} void BwcPM::setBwc(hwc_context_t *ctx, const hwc_rect_t& crop, const hwc_rect_t& dst, const int& transform, diff --git a/libhwcomposer/hwc_utils.h b/libhwcomposer/hwc_utils.h index cf359ee8..e214aee3 100644 --- a/libhwcomposer/hwc_utils.h +++ b/libhwcomposer/hwc_utils.h @@ -225,6 +225,8 @@ int configureHighRes(hwc_context_t *ctx, hwc_layer_1_t *layer, const int& dpy, //but the variety of scenarios is too high to warrant that. bool canUseRotator(hwc_context_t *ctx); +int getLeftSplit(hwc_context_t *ctx, const int& dpy); + // Inline utility functions static inline bool isSkipLayer(const hwc_layer_1_t* l) { return (UNLIKELY(l && (l->flags & HWC_SKIP_LAYER)));