diff --git a/patch/ics_strawberry/hardware/qcom/display/0001-hwc-display-hal-should-report-drawLayerUsingCopybit-.patch b/patch/ics_strawberry/hardware/qcom/display/0001-hwc-display-hal-should-report-drawLayerUsingCopybit-.patch new file mode 100644 index 0000000000000000000000000000000000000000..761a041b32f77fdf08c2e4e9ff9bb6b766cea390 --- /dev/null +++ b/patch/ics_strawberry/hardware/qcom/display/0001-hwc-display-hal-should-report-drawLayerUsingCopybit-.patch @@ -0,0 +1,44 @@ +From 2cc3d4d9d547866e7fc1b2c38ab27cc9dda4775b Mon Sep 17 00:00:00 2001 +From: Sushil Chauhan <sushilchauhan@codeaurora.org> +Date: Tue, 10 Sep 2013 15:51:12 -0700 +Subject: [PATCH] hwc: display hal should report drawLayerUsingCopybit failure. + +Display HAL should report drawLayerUsingCopybit failure otherwise +framework assumes HWC layers have been drawn and do not fallback +to GPU, which leads to flickers. + +Change-Id: Id7366701016eb7f66bc0cf0b23ea7a5b911741a3 +--- + libhwcomposer/a-family/hwcomposer.cpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/libhwcomposer/a-family/hwcomposer.cpp b/libhwcomposer/a-family/hwcomposer.cpp +index 3c0f1db..f0b21f0 100644 +--- a/libhwcomposer/a-family/hwcomposer.cpp ++++ b/libhwcomposer/a-family/hwcomposer.cpp +@@ -1879,17 +1879,21 @@ static int hwc_set(hwc_composer_device_t *dev, + ctx->idleInvalidator->markForSleep(); + drawLayerUsingBypass(ctx, &(list->hwLayers[i]), i); + #endif + } else if (list->hwLayers[i].compositionType == HWC_USE_OVERLAY) { + drawLayerUsingOverlay(ctx, &(list->hwLayers[i])); + } else if (list->flags & HWC_SKIP_COMPOSITION) { + continue; + } else if (list->hwLayers[i].compositionType == HWC_USE_COPYBIT) { +- drawLayerUsingCopybit(dev, &(list->hwLayers[i]), (EGLDisplay)dpy, (EGLSurface)sur); ++ ret = drawLayerUsingCopybit(dev, &(list->hwLayers[i]), (EGLDisplay)dpy, (EGLSurface)sur); ++ if (ret < 0) { ++ LOGE("%s: Copybit layer draw failed!", __FUNCTION__); ++ return ret; ++ } + } + } + } else { + if (ctx->hwcOverlayStatus == HWC_OVERLAY_OPEN) + ctx->hwcOverlayStatus = HWC_OVERLAY_PREPARE_TO_CLOSE; + } + + bool canSkipComposition = list && list->flags & HWC_SKIP_COMPOSITION; +-- +1.8.2.1 +