OSDN Git Service

Add HAL_PIXEL_FORMAT_BLOB format in cros gralloc
authorHeng-Ruey Hsu <henryhsu@chromium.org>
Thu, 27 Apr 2017 03:33:35 +0000 (11:33 +0800)
committerchrome-bot <chrome-bot@chromium.org>
Wed, 3 May 2017 05:50:31 +0000 (22:50 -0700)
We convert HAL_PIXEL_FORMAT_BLOB to DRM_FORMAT_R8 for camera picture
taking. Choose DRM_FORMAT_R8 because <system/graphics.h> requires the
buffers with a format HAL_PIXEL_FORMAT_BLOB have a height of 1, and
width equal to their size in bytes.

BUG=b:37692495
TEST=open camera app and take a picture.

Change-Id: I11a82b057b7c1174dd946e0b7d3cbde9c1d630d9
Reviewed-on: https://chromium-review.googlesource.com/487552
Commit-Ready: Heng-ruey Hsu <henryhsu@google.com>
Tested-by: Heng-ruey Hsu <henryhsu@google.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
cros_gralloc/cros_gralloc_helpers.cc
mediatek.c
rockchip.c
vgem.c
virtio_gpu.c

index 366ca75..280e5f8 100644 (file)
@@ -81,6 +81,13 @@ uint32_t cros_gralloc_convert_format(int format)
                return DRM_FORMAT_FLEX_YCbCr_420_888;
        case HAL_PIXEL_FORMAT_YV12:
                return DRM_FORMAT_YVU420_ANDROID;
+       /*
+        * Choose DRM_FORMAT_R8 because <system/graphics.h> requires the buffers
+        * with a format HAL_PIXEL_FORMAT_BLOB have a height of 1, and width
+        * equal to their size in bytes.
+        */
+       case HAL_PIXEL_FORMAT_BLOB:
+               return DRM_FORMAT_R8;
        }
 
        return DRM_FORMAT_NONE;
index db3c9fa..ce7ff87 100644 (file)
 #include "helpers.h"
 #include "util.h"
 
-static const uint32_t supported_formats[] = { DRM_FORMAT_ABGR8888,      DRM_FORMAT_ARGB8888,
-                                             DRM_FORMAT_RGB565,        DRM_FORMAT_XBGR8888,
-                                             DRM_FORMAT_XRGB8888,      DRM_FORMAT_YVU420,
-                                             DRM_FORMAT_YVU420_ANDROID };
+static const uint32_t supported_formats[] = { DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB8888,
+                                             DRM_FORMAT_R8,       DRM_FORMAT_RGB565,
+                                             DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888,
+                                             DRM_FORMAT_YVU420,   DRM_FORMAT_YVU420_ANDROID };
 
 static int mediatek_init(struct driver *drv)
 {
index 4d10581..45b813d 100644 (file)
 #include "helpers.h"
 #include "util.h"
 
-static const uint32_t supported_formats[] = { DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB8888,
-                                             DRM_FORMAT_NV12,     DRM_FORMAT_RGB565,
-                                             DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888,
-                                             DRM_FORMAT_YVU420,   DRM_FORMAT_YVU420_ANDROID };
+static const uint32_t supported_formats[] = { DRM_FORMAT_ABGR8888,      DRM_FORMAT_ARGB8888,
+                                             DRM_FORMAT_NV12,          DRM_FORMAT_R8,
+                                             DRM_FORMAT_RGB565,        DRM_FORMAT_XBGR8888,
+                                             DRM_FORMAT_XRGB8888,      DRM_FORMAT_YVU420,
+                                             DRM_FORMAT_YVU420_ANDROID };
 
 static int afbc_bo_from_format(struct bo *bo, uint32_t width, uint32_t height, uint32_t format)
 {
diff --git a/vgem.c b/vgem.c
index 2c8ccd5..15da101 100644 (file)
--- a/vgem.c
+++ b/vgem.c
 #define MESA_LLVMPIPE_TILE_ORDER 6
 #define MESA_LLVMPIPE_TILE_SIZE (1 << MESA_LLVMPIPE_TILE_ORDER)
 
-static const uint32_t supported_formats[] = { DRM_FORMAT_ABGR8888,      DRM_FORMAT_ARGB8888,
-                                             DRM_FORMAT_RGB565,        DRM_FORMAT_XBGR8888,
-                                             DRM_FORMAT_XRGB8888,      DRM_FORMAT_YVU420,
-                                             DRM_FORMAT_YVU420_ANDROID };
+static const uint32_t supported_formats[] = { DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB8888,
+                                             DRM_FORMAT_R8,       DRM_FORMAT_RGB565,
+                                             DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888,
+                                             DRM_FORMAT_YVU420,   DRM_FORMAT_YVU420_ANDROID };
 
 static int vgem_init(struct driver *drv)
 {
index c4c3b19..0a351dd 100644 (file)
 #define MESA_LLVMPIPE_TILE_ORDER 6
 #define MESA_LLVMPIPE_TILE_SIZE (1 << MESA_LLVMPIPE_TILE_ORDER)
 
-static const uint32_t supported_formats[] = { DRM_FORMAT_ABGR8888,      DRM_FORMAT_ARGB8888,
-                                             DRM_FORMAT_RGB565,        DRM_FORMAT_XBGR8888,
-                                             DRM_FORMAT_XRGB8888,      DRM_FORMAT_YVU420,
-                                             DRM_FORMAT_YVU420_ANDROID };
+static const uint32_t supported_formats[] = { DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB8888,
+                                             DRM_FORMAT_R8,       DRM_FORMAT_RGB565,
+                                             DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888,
+                                             DRM_FORMAT_YVU420,   DRM_FORMAT_YVU420_ANDROID };
 
 static int virtio_gpu_init(struct driver *drv)
 {