minigbm: mediatek: Conditionally resolve DRM_FORMAT_BGR888 to DRM_FORMAT_XBGR8888
Since the original DRM_FORMAT_BGR888 format did not support
BO_USE_RENDERING or BO_USE_TEXTURE flag and Chromium doesn't
support 24-bit RGB format, resolve the DRM_FORMAT_BGR888
to DRM_FORMAT_XBGR8888 to solve the problem.
BUG=b:191096118
TEST=deploy vendor image and open "My Talking Tom 2" app
Signed-off-by: Nick Fan <Nick.Fan@mediatek.com>
Change-Id: Ibfc76b3790045731c95f1cd387e67ecc5d775e0b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/2976161
Reviewed-by: Nick Fan <nick.fan@mediatek.corp-partner.google.com>
Reviewed-by: Fei Shao <fshao@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: Nick Fan <nick.fan@mediatek.corp-partner.google.com>
Commit-Queue: Fei Shao <fshao@chromium.org>
diff --git a/mediatek.c b/mediatek.c
index de492e2..ab79798 100644
--- a/mediatek.c
+++ b/mediatek.c
@@ -286,6 +286,13 @@
return DRM_FORMAT_NV12;
}
return DRM_FORMAT_YVU420;
+ case DRM_FORMAT_BGR888:
+ if(use_flags & (BO_USE_RENDERING | BO_USE_TEXTURE)) {
+ /* Some Android app required these flags for DRM_FORMAT_BGR888
+ * and Chrome does not support DRM_FORMAT_BGR888, so remap the
+ * DRM_FORMAT_BGR888 to DRM_FORMAT_XBGR8888 to solve this issue*/
+ return DRM_FORMAT_XBGR8888;
+ }
default:
return format;
}