summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicky Liang <jcliang@chromium.org>2017-11-10 09:17:17 +0800
committerchrome-bot <chrome-bot@chromium.org>2017-11-11 05:28:27 -0800
commit0b78e0716b1806806ef2babc870cc19f8a485abe (patch)
tree492d000020f42c5024113a868c2b1d7a0d1cd0d5
parent39f66c0cf95dc64c263feb91b493c49acdbd6c71 (diff)
minigbm: amdgpu: add supported formats for camera
Set the CAMERA_{READ|WRITE} flags for formats that are used by the camera stack. BUG=b:69109002 TEST=Verify that camera works on Kahlee. Change-Id: I4c9aacdc71d3b18188783007f8c88da37ed28dca Reviewed-on: https://chromium-review.googlesource.com/762687 Commit-Ready: Ricky Liang <jcliang@chromium.org> Tested-by: Justin TerAvest <teravest@chromium.org> Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
-rw-r--r--amdgpu.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/amdgpu.c b/amdgpu.c
index a874fd1..57d82e5 100644
--- a/amdgpu.c
+++ b/amdgpu.c
@@ -289,6 +289,16 @@ static int amdgpu_init(struct driver *drv)
if (ret)
return ret;
+ /* YUV format for camera */
+ drv_modify_combination(drv, DRM_FORMAT_NV12, &LINEAR_METADATA,
+ BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE);
+ /*
+ * R8 format is used for Android's HAL_PIXEL_FORMAT_BLOB and is used for JPEG snapshots
+ * from camera.
+ */
+ drv_modify_combination(drv, DRM_FORMAT_R8, &LINEAR_METADATA,
+ BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE);
+
drv_modify_combination(drv, DRM_FORMAT_NV21, &LINEAR_METADATA, BO_USE_SCANOUT);
drv_modify_combination(drv, DRM_FORMAT_NV12, &LINEAR_METADATA, BO_USE_SCANOUT);
@@ -419,6 +429,12 @@ static void *amdgpu_bo_map(struct bo *bo, struct mapping *mapping, size_t plane,
static uint32_t amdgpu_resolve_format(uint32_t format, uint64_t use_flags)
{
switch (format) {
+ case DRM_FORMAT_FLEX_IMPLEMENTATION_DEFINED:
+ /* Camera subsystem requires NV12. */
+ if (use_flags & (BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE))
+ return DRM_FORMAT_NV12;
+ /*HACK: See b/28671744 */
+ return DRM_FORMAT_XBGR8888;
case DRM_FORMAT_FLEX_YCbCr_420_888:
return DRM_FORMAT_NV12;
default: