summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsin-Yi Wang <hsinyi@chromium.org>2022-04-06 17:34:33 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-04-08 09:24:14 +0000
commit2581c470d653c98507f5015f63f99e55c588988d (patch)
treed733b567bb532572e24d6f7ce03dfb68fc5d407c
parent853b8542fbf5711cca4b00d0e30cd3e559c925fd (diff)
downloadminigbm-2581c470d653c98507f5015f63f99e55c588988d.tar.gz
minigbm: mediatek: check BO_USE_CAMERA_WRITE flag on camera preview case
We only want camera preview use case to use the same padding as BO_USE_HW_VIDEO_ENCODER. Previously we check this by BO_USE_SCANOUT flag. This would cause some format issues in CTS drm tests. This patch updates CL:3551188 to check for BO_USE_CAMERA_WRITE flag as well. BUG=b:227983122 TEST=check camera is normal on kukui TEST=android.media.cts.MediaDrmClearkeyTest#* pass on kukui Change-Id: I1606b677678dfafc6331713f67d327a2b6030394 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3574581 Tested-by: Hsin-Yi Wang <hsinyi@chromium.org> Reviewed-by: Miguel Casas-Sanchez <mcasas@chromium.org> Reviewed-by: Miguel Casas <mcasas@google.com> Reviewed-by: Kazuhiro Inaba <kinaba@chromium.org> Tested-by: Kazuhiro Inaba <kinaba@chromium.org> Commit-Queue: Hsin-Yi Wang <hsinyi@chromium.org>
-rw-r--r--mediatek.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/mediatek.c b/mediatek.c
index 17de0d3..562b1d1 100644
--- a/mediatek.c
+++ b/mediatek.c
@@ -140,6 +140,12 @@ static int mediatek_bo_create_with_modifiers(struct bo *bo, uint32_t width, uint
size_t plane;
uint32_t stride;
struct drm_mtk_gem_create gem_create = { 0 };
+ /*
+ * We identify the ChromeOS Camera App buffers via these two USE flags. Those buffers need
+ * the same alignment as the video hardware encoding.
+ */
+ const bool is_camera_preview =
+ (bo->meta.use_flags & BO_USE_SCANOUT) && (bo->meta.use_flags & BO_USE_CAMERA_WRITE);
if (!drv_has_modifier(modifiers, count, DRM_FORMAT_MOD_LINEAR)) {
errno = EINVAL;
@@ -161,7 +167,7 @@ static int mediatek_bo_create_with_modifiers(struct bo *bo, uint32_t width, uint
stride = ALIGN(stride, 64);
#endif
- if (bo->meta.use_flags & (BO_USE_HW_VIDEO_ENCODER | BO_USE_SCANOUT)) {
+ if ((bo->meta.use_flags & BO_USE_HW_VIDEO_ENCODER) || is_camera_preview) {
uint32_t aligned_height = ALIGN(height, 32);
uint32_t padding[DRV_MAX_PLANES] = { 0 };