Merge "Fix a build break due to a change in libui"
[GitHub/LineageOS/android_hardware_samsung_slsi_exynos5.git] / libhwc / hwc.cpp
index ef0fbd9fbc79d2b47d725442c524fded5e2bed4d..dca45ef852c63dda104e4c2c2e2308e55430bed6 100644 (file)
@@ -274,8 +274,6 @@ static enum s3c_fb_pixel_format exynos5_format_to_s3c_format(int format)
         return S3C_FB_PIXEL_FORMAT_RGBA_8888;
     case HAL_PIXEL_FORMAT_RGBX_8888:
         return S3C_FB_PIXEL_FORMAT_RGBX_8888;
-    case HAL_PIXEL_FORMAT_RGBA_5551:
-        return S3C_FB_PIXEL_FORMAT_RGBA_5551;
     case HAL_PIXEL_FORMAT_RGB_565:
         return S3C_FB_PIXEL_FORMAT_RGB_565;
     case HAL_PIXEL_FORMAT_BGRA_8888:
@@ -298,8 +296,6 @@ static bool exynos5_format_is_rgb(int format)
     case HAL_PIXEL_FORMAT_RGB_888:
     case HAL_PIXEL_FORMAT_RGB_565:
     case HAL_PIXEL_FORMAT_BGRA_8888:
-    case HAL_PIXEL_FORMAT_RGBA_5551:
-    case HAL_PIXEL_FORMAT_RGBA_4444:
         return true;
 
     default:
@@ -341,8 +337,6 @@ static uint8_t exynos5_format_to_bpp(int format)
     case HAL_PIXEL_FORMAT_BGRA_8888:
         return 32;
 
-    case HAL_PIXEL_FORMAT_RGBA_5551:
-    case HAL_PIXEL_FORMAT_RGBA_4444:
     case HAL_PIXEL_FORMAT_RGB_565:
         return 16;
 
@@ -407,11 +401,11 @@ static bool exynos5_supports_gscaler(hwc_layer_1_t &layer, int format,
             dst_crop_w_aligned(dest_w) &&
             handle->stride <= max_w &&
             handle->stride % GSC_W_ALIGNMENT == 0 &&
-            src_w <= dest_w * max_downscale &&
+            src_w < dest_w * max_downscale &&
             dest_w <= src_w * max_upscale &&
             handle->vstride <= max_h &&
             handle->vstride % GSC_H_ALIGNMENT == 0 &&
-            src_h <= dest_h * max_downscale &&
+            src_h < dest_h * max_downscale &&
             dest_h <= src_h * max_upscale &&
             // per 46.2
             (!rot90or270 || layer.sourceCrop.top % 2 == 0) &&
@@ -805,10 +799,6 @@ bool exynos5_supports_overlay(hwc_layer_1_t &layer, size_t i,
         return false;
     }
 
-    if (exynos5_visible_width(layer, handle->format, pdev) < BURSTLEN_BYTES) {
-        ALOGV("\tlayer %u: visible area is too narrow", i);
-        return false;
-    }
     if (exynos5_requires_gscaler(layer, handle->format)) {
         if (!exynos5_supports_gscaler(layer, handle->format, false)) {
             ALOGV("\tlayer %u: gscaler required but not supported", i);
@@ -820,6 +810,10 @@ bool exynos5_supports_overlay(hwc_layer_1_t &layer, size_t i,
             return false;
         }
     }
+    if (exynos5_visible_width(layer, handle->format, pdev) < BURSTLEN_BYTES) {
+        ALOGV("\tlayer %u: visible area is too narrow", i);
+        return false;
+    }
     if (!exynos5_blending_is_supported(layer.blending)) {
         ALOGV("\tlayer %u: blending %d not supported", i, layer.blending);
         return false;
@@ -1622,6 +1616,10 @@ static int exynos5_set_hdmi(exynos5_hwc_composer_device_1_t *pdev,
                     contents->retireFenceFd = merged;
                 }
             } else {
+                if (layer.acquireFenceFd >= 0) {
+                    close(layer.acquireFenceFd);
+                    layer.acquireFenceFd = -1;
+                }
                 hdmi_hide_layer(pdev, pdev->hdmi_layers[1]);
             }
         }