copybit: Ensure that copybit is not generating alpha values
When image was being up scaled beyond 4 times and intermediate
buffer is used, alpha value would be 0 in intermediate buffer.
This would then be blitted onto final buffer that contained alpha
value. Since fg had alpha value of 0 entire image would be blended
out.
Change-Id: I6daf03e93719212ee597c218655ae8692ae79e72
diff --git a/libhwcomposer/hwc_copybit.cpp b/libhwcomposer/hwc_copybit.cpp
index 287c11d..d405f87 100644
--- a/libhwcomposer/hwc_copybit.cpp
+++ b/libhwcomposer/hwc_copybit.cpp
@@ -423,8 +423,14 @@
ALOGE("%s:%d::tmp_w = %d,tmp_h = %d",__FUNCTION__,__LINE__,tmp_w,tmp_h);
int usage = GRALLOC_USAGE_PRIVATE_IOMMU_HEAP;
+ int format = fbHandle->format;
- if (0 == alloc_buffer(&tmpHnd, tmp_w, tmp_h, fbHandle->format, usage)){
+ // We do not want copybit to generate alpha values from nothing
+ if (format == HAL_PIXEL_FORMAT_RGBA_8888 &&
+ src.format != HAL_PIXEL_FORMAT_RGBA_8888) {
+ format = HAL_PIXEL_FORMAT_RGBX_8888;
+ }
+ if (0 == alloc_buffer(&tmpHnd, tmp_w, tmp_h, format, usage)){
copybit_image_t tmp_dst;
copybit_rect_t tmp_rect;
tmp_dst.w = tmp_w;