struct format_metadata metadata;
drv_add_combinations(drv, render_target_formats, ARRAY_SIZE(render_target_formats),
- &LINEAR_METADATA, BO_USE_RENDER_MASK);
+ &LINEAR_METADATA, BO_USE_RENDER_MASK | BO_USE_SCANOUT);
drv_add_combinations(drv, texture_source_formats, ARRAY_SIZE(texture_source_formats),
&LINEAR_METADATA, BO_USE_TEXTURE_MASK);
drv_bo_from_format_and_padding(bo, stride, aligned_height, format, padding);
} else {
+#ifdef MTK_MT8183
+ /*
+ * JPEG Encoder Accelerator requires 16x16 alignment. We want the buffer
+ * from camera can be put in JEA directly so align the height to 16
+ * bytes.
+ */
+ if (format == DRM_FORMAT_NV12)
+ height = ALIGN(height, 16);
+#endif
drv_bo_from_format(bo, stride, height, format);
}
return MAP_FAILED;
}
- ret = drmPrimeHandleToFD(bo->drv->fd, gem_map.handle, DRM_CLOEXEC, &prime_fd);
- if (ret) {
+ prime_fd = drv_bo_get_plane_fd(bo, 0);
+ if (prime_fd < 0) {
drv_log("Failed to get a prime fd\n");
return MAP_FAILED;
}