virtgpu_virgl: force linear for hw encoder with impl defined

BUG=b:264408280
TEST=video capture

Change-Id: Iffefbefb061def63905c6db7982c19bc16f2c223
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/4137158
Reviewed-by: Dominik Laskowski <domlaskowski@chromium.org>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Dawn Han <dawnhan@google.com>
Reviewed-by: Dawn Han <dawnhan@google.com>
diff --git a/virtgpu_virgl.c b/virtgpu_virgl.c
index 2de97ca..ce40b57 100644
--- a/virtgpu_virgl.c
+++ b/virtgpu_virgl.c
@@ -992,9 +992,12 @@
 		if (use_flags & (BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE)) {
 			*out_format = DRM_FORMAT_NV12;
 		} else {
-			/* HACK: See b/28671744 */
+			/* HACK: See b/28671744 and b/264408280 */
 			*out_format = DRM_FORMAT_XBGR8888;
-			*out_use_flags &= ~BO_USE_HW_VIDEO_ENCODER;
+			if (use_flags & BO_USE_HW_VIDEO_ENCODER) {
+				*out_use_flags &= ~BO_USE_HW_VIDEO_ENCODER;
+				*out_use_flags |= BO_USE_LINEAR;
+			}
 		}
 		break;
 	case DRM_FORMAT_FLEX_YCbCr_420_888: