Merge "hwc: split display: Fix left split default value if not published"
diff --git a/libhwcomposer/hwc_fbupdate.cpp b/libhwcomposer/hwc_fbupdate.cpp
index 7ba2ddc..ba3b5d2 100644
--- a/libhwcomposer/hwc_fbupdate.cpp
+++ b/libhwcomposer/hwc_fbupdate.cpp
@@ -288,16 +288,8 @@
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 462cc6d..69e81db 100644
--- a/libhwcomposer/hwc_mdpcomp.cpp
+++ b/libhwcomposer/hwc_mdpcomp.cpp
@@ -980,13 +980,8 @@
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 @@
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 93017c5..1c881cb 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -1090,7 +1090,8 @@
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 @@
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 cf359ee..e214aee 100644
--- a/libhwcomposer/hwc_utils.h
+++ b/libhwcomposer/hwc_utils.h
@@ -225,6 +225,8 @@
//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)));