summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Tasayco Loarte <victorx.tasayco.loarte@intel.com>2016-05-28 19:13:21 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-05-28 19:13:21 +0000
commit5865d9b9eb979157ad3145fd3a7673a59a3ef12f (patch)
treed471c3381ad2286dbf9e4917cb31c0d2ce8c3a25
parenta09429d2b7eb946544eec4fc7f731204fa002657 (diff)
parent48cca7a3f23a3698df1bd5b6fe044bf2e06818d5 (diff)
downloadhwcomposer-5865d9b9eb979157ad3145fd3a7673a59a3ef12f.tar.gz
display: add 180 rotation feature to plane am: a130370d8a am: ded83f8544
am: 48cca7a3f2 * commit '48cca7a3f23a3698df1bd5b6fe044bf2e06818d5': display: add 180 rotation feature to plane Change-Id: Iffda8c5356218e0ffd230d3c3cbcdf28039264be
-rw-r--r--merrifield/ips/tangier/TngPrimaryPlane.cpp11
-rw-r--r--merrifield/ips/tangier/TngSpritePlane.cpp10
-rw-r--r--merrifield/platforms/merrifield/Android.mk4
3 files changed, 22 insertions, 3 deletions
diff --git a/merrifield/ips/tangier/TngPrimaryPlane.cpp b/merrifield/ips/tangier/TngPrimaryPlane.cpp
index 7d72f0f..cfa1406 100644
--- a/merrifield/ips/tangier/TngPrimaryPlane.cpp
+++ b/merrifield/ips/tangier/TngPrimaryPlane.cpp
@@ -55,8 +55,12 @@ void TngPrimaryPlane::setFramebufferTarget(buffer_handle_t handle)
mContext.ctx.prim_ctx.update_mask = SPRITE_UPDATE_ALL;
mContext.ctx.prim_ctx.index = mIndex;
mContext.ctx.prim_ctx.pipe = mDevice;
- mContext.ctx.prim_ctx.linoff = 0;
mContext.ctx.prim_ctx.stride = align_to((4 * align_to(mPosition.w, 32)), 64);
+#ifdef ENABLE_ROTATION_180
+ mContext.ctx.prim_ctx.linoff = (mPosition.h - 1) * mContext.ctx.prim_ctx.stride + mPosition.w * 4;
+#else
+ mContext.ctx.prim_ctx.linoff = 0;
+#endif
mContext.ctx.prim_ctx.pos = 0;
mContext.ctx.prim_ctx.size =
((mPosition.h - 1) & 0xfff) << 16 | ((mPosition.w - 1) & 0xfff);
@@ -64,8 +68,11 @@ void TngPrimaryPlane::setFramebufferTarget(buffer_handle_t handle)
mContext.ctx.prim_ctx.contalpa = 0;
mContext.ctx.prim_ctx.cntr = PixelFormat::PLANE_PIXEL_FORMAT_BGRA8888;
+#ifdef ENABLE_ROTATION_180
+ mContext.ctx.prim_ctx.cntr |= 0x80008000;
+#else
mContext.ctx.prim_ctx.cntr |= 0x80000000;
-
+#endif
mCurrentDataBuffer = handle;
}
diff --git a/merrifield/ips/tangier/TngSpritePlane.cpp b/merrifield/ips/tangier/TngSpritePlane.cpp
index c4e7e2c..8e5a7f1 100644
--- a/merrifield/ips/tangier/TngSpritePlane.cpp
+++ b/merrifield/ips/tangier/TngSpritePlane.cpp
@@ -64,7 +64,13 @@ bool TngSpritePlane::setDataBuffer(BufferMapper& mapper)
srcX = mapper.getCrop().x;
srcY = mapper.getCrop().y;
stride = mapper.getStride().rgb.stride;
+#ifdef ENABLE_ROTATION_180
+ linoff = (mapper.getCrop().h + srcY - 1) * stride + (srcX + mapper.getCrop().w) * bpp;
+ dstX = dstW - (srcX + mapper.getCrop().w);
+ dstY = dstH - (srcY + mapper.getCrop().h);
+#else
linoff = srcY * stride + srcX * bpp;
+#endif
// setup plane alpha
if ((mBlending == HWC_BLENDING_PREMULT) && (mPlaneAlpha == 0)) {
@@ -99,7 +105,9 @@ bool TngSpritePlane::setDataBuffer(BufferMapper& mapper)
mContext.ctx.sp_ctx.contalpa = planeAlpha;
mContext.ctx.sp_ctx.update_mask = SPRITE_UPDATE_ALL;
mContext.gtt_key = (uint64_t)mapper.getCpuAddress(0);
-
+#ifdef ENABLE_ROTATION_180
+ mContext.ctx.sp_ctx.cntr |= 1 << 15;
+#endif
VTRACE("cntr = %#x, linoff = %#x, stride = %#x,"
"surf = %#x, pos = %#x, size = %#x, contalpa = %#x",
mContext.ctx.sp_ctx.cntr,
diff --git a/merrifield/platforms/merrifield/Android.mk b/merrifield/platforms/merrifield/Android.mk
index f671d82..81086b7 100644
--- a/merrifield/platforms/merrifield/Android.mk
+++ b/merrifield/platforms/merrifield/Android.mk
@@ -116,6 +116,10 @@ LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := hwcomposer.$(TARGET_BOARD_PLATFORM)
LOCAL_CFLAGS += -DLINUX
+ifeq ($(BOARD_PANEL_IS_180_ROTATED), true)
+ $(warning "Panel rotates 180")
+ LOCAL_CFLAGS += -DENABLE_ROTATION_180
+endif
ifeq ($(INTEL_WIDI), true)
LOCAL_SHARED_LIBRARIES += libhwcwidi libbinder
LOCAL_CFLAGS += -DINTEL_WIDI