From 2babecc511488f806d1ab13ab5360d9ab02a2ae3 Mon Sep 17 00:00:00 2001 From: Sushil Chauhan Date: Wed, 4 Dec 2013 17:29:48 -0800 Subject: [PATCH] copybit: Set default value on COPYBIT_TRANSFORM for Color layer. 1. For Color layer, set zero transform value on COPYBIT_TRANSFORM otherwise it causes MDP IOMMU page fault at 90/270 degree rotation. 2. Color layer is part of Copybit context list, so no need to call msm_copybit() explicitly for it, that will be called during flush. Change-Id: I4421b4bddfeca56b0ad8534d921c3d743a7d92bb --- libcopybit/copybit.cpp | 7 ++++++- libhwcomposer/hwc_copybit.cpp | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libcopybit/copybit.cpp b/libcopybit/copybit.cpp index 5d8da05d..7f37bdad 100644 --- a/libcopybit/copybit.cpp +++ b/libcopybit/copybit.cpp @@ -637,6 +637,7 @@ static int fill_color(struct copybit_device_t *dev, return -EINVAL; } + int status = 0; struct blitReq* list = &ctx->list; mdp_blit_req* req = &list->req[list->count++]; set_infos(ctx, req, MDP_SOLID_FILL); @@ -654,7 +655,11 @@ static int fill_color(struct copybit_device_t *dev, req->const_color.b = (uint32_t)((color >> 16) & 0xff); req->const_color.alpha = (uint32_t)((color >> 24) & 0xff); - int status = msm_copybit(ctx, list); + if (list->count == sizeof(list->req)/sizeof(list->req[0])) { + status = msm_copybit(ctx, list); + list->sync.acq_fen_fd_cnt = 0; + list->count = 0; + } return status; } diff --git a/libhwcomposer/hwc_copybit.cpp b/libhwcomposer/hwc_copybit.cpp index bb1b0327..1e9d0664 100644 --- a/libhwcomposer/hwc_copybit.cpp +++ b/libhwcomposer/hwc_copybit.cpp @@ -618,6 +618,7 @@ int CopyBit::fillColorUsingCopybit(hwc_layer_1_t *layer, copybit->set_parameter(copybit, COPYBIT_DITHER, (dst.format == HAL_PIXEL_FORMAT_RGB_565) ? COPYBIT_ENABLE : COPYBIT_DISABLE); + copybit->set_parameter(copybit, COPYBIT_TRANSFORM, 0); copybit->set_parameter(copybit, COPYBIT_BLEND_MODE, layer->blending); copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, layer->planeAlpha); copybit->set_parameter(copybit, COPYBIT_BLIT_TO_FRAMEBUFFER,COPYBIT_ENABLE);