diff options
author | Victor Tasayco Loarte <victorx.tasayco.loarte@intel.com> | 2016-05-28 19:13:21 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-05-28 19:13:21 +0000 |
commit | 5865d9b9eb979157ad3145fd3a7673a59a3ef12f (patch) | |
tree | d471c3381ad2286dbf9e4917cb31c0d2ce8c3a25 | |
parent | a09429d2b7eb946544eec4fc7f731204fa002657 (diff) | |
parent | 48cca7a3f23a3698df1bd5b6fe044bf2e06818d5 (diff) | |
download | hwcomposer-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.cpp | 11 | ||||
-rw-r--r-- | merrifield/ips/tangier/TngSpritePlane.cpp | 10 | ||||
-rw-r--r-- | merrifield/platforms/merrifield/Android.mk | 4 |
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 |