minigbm: msm: Allow DRM_FORMAT_YVU420_ANDROID for camera, encoding and display use

In order to support external/usb camera provider on db845c with
AOSP, add flag combination for the YV12 format so is_supported()
will succeed.

Similar logic may be needed elsewhere as well

Bug: b:194817426
Test: Manually run camera app in AOSP on db845c with usb webcam
Change-Id: Idcb98e93164eb51c58943f0ae992d8123b6ede68
Signed-off-by: John Stultz <john.stultz@linaro.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3058396
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
diff --git a/msm.c b/msm.c
index 16e781f..a4c56d9 100644
--- a/msm.c
+++ b/msm.c
@@ -252,6 +252,15 @@
 			       BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | BO_USE_HW_VIDEO_DECODER |
 				   BO_USE_HW_VIDEO_ENCODER);
 
+	/*
+	 * Android also frequently requests YV12 formats for some camera implementations
+	 * (including the external provider implmenetation). So mark it as well as valid
+	 * for camera display and encoding.
+	 */
+	drv_modify_combination(drv, DRM_FORMAT_YVU420_ANDROID, &LINEAR_METADATA,
+			       BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | BO_USE_SCANOUT |
+				   BO_USE_HW_VIDEO_ENCODER);
+
 	/* Android CTS tests require this. */
 	drv_add_combination(drv, DRM_FORMAT_BGR888, &LINEAR_METADATA, BO_USE_SW_MASK);