OSDN Git Service

ANDROID: Add target/device support am: 8884508fa6 am: cf0ceff91e am: 96f63775f7 am...
[android-x86/external-minigbm.git] / mediatek.c
index 5581e8f..cdfc9ab 100644 (file)
@@ -49,7 +49,7 @@ static int mediatek_init(struct driver *drv)
        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);
@@ -128,6 +128,15 @@ static int mediatek_bo_create_with_modifiers(struct bo *bo, uint32_t width, uint
 
                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);
        }
 
@@ -169,8 +178,8 @@ static void *mediatek_bo_map(struct bo *bo, struct vma *vma, size_t plane, uint3
                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;
        }