HACK: hwc: reserve gscalers 1 & 2 for camera
authorGreg Hackmann <ghackmann@google.com>
Fri, 17 Aug 2012 22:41:29 +0000 (15:41 -0700)
committerGreg Hackmann <ghackmann@google.com>
Mon, 20 Aug 2012 16:22:10 +0000 (09:22 -0700)
Change-Id: Ie278cfa6dbd53f6776297727f41b5ee7c8dcf47b
Signed-off-by: Greg Hackmann <ghackmann@google.com>
libhwc/hwc.cpp

index 344d09338471e46b439bfef203e53ff7adbb7b19..5d98957d038d0fe07140e308aca1a78612cbea99 100644 (file)
@@ -55,9 +55,11 @@ typedef android::Vector<struct hwc_callback_entry> hwc_callback_queue_t;
 const size_t NUM_HW_WINDOWS = 5;
 const size_t NO_FB_NEEDED = NUM_HW_WINDOWS + 1;
 const size_t MAX_PIXELS = 2560 * 1600 * 2;
-const size_t NUM_GSC_UNITS = 4;
 const size_t GSC_W_ALIGNMENT = 16;
 const size_t GSC_H_ALIGNMENT = 16;
+const int AVAILABLE_GSC_UNITS[] = { 0, 3 };
+const size_t NUM_GSC_UNITS = sizeof(AVAILABLE_GSC_UNITS) /
+        sizeof(AVAILABLE_GSC_UNITS[0]);
 
 struct exynos5_hwc_composer_device_1_t;
 
@@ -661,7 +663,7 @@ static int exynos5_prepare(hwc_composer_device_1_t *dev,
                 private_handle_t *handle =
                         private_handle_t::dynamicCast(layer.handle);
                 if (exynos5_format_requires_gscaler(handle->format)) {
-                    ALOGV("\tusing gscaler %u", nextGsc);
+                    ALOGV("\tusing gscaler %u", AVAILABLE_GSC_UNITS[nextGsc]);
                     pdev->bufs.gsc_map[i].mode =
                             exynos5_gsc_map_t::GSC_M2M;
                     pdev->bufs.gsc_map[i].idx = nextGsc++;
@@ -787,8 +789,8 @@ static int exynos5_config_gsc_m2m(hwc_layer_1_t &layer,
     ALOGV("destination configuration:");
     dump_gsc_img(dst_cfg);
 
-    gsc_data->gsc = exynos_gsc_create_exclusive(gsc_idx, GSC_M2M_MODE,
-            GSC_DUMMY);
+    gsc_data->gsc = exynos_gsc_create_exclusive(AVAILABLE_GSC_UNITS[gsc_idx],
+            GSC_M2M_MODE, GSC_DUMMY);
     if (!gsc_data->gsc) {
         ALOGE("failed to create gscaler handle");
         ret = -1;