OSDN Git Service

[automerger skipped] Adds Android.bp files back after merge. am: 1e4aff7321 -s ours...
[android-x86/external-minigbm.git] / msm.c
diff --git a/msm.c b/msm.c
index 6a1a3de..fac1fd0 100644 (file)
--- a/msm.c
+++ b/msm.c
@@ -109,7 +109,7 @@ static void msm_calculate_layout(struct bo *bo)
                        DRM_FORMAT_R8 of height one is used for JPEG camera output, so don't
                        height align that. */
                if (bo->meta.format == DRM_FORMAT_YVU420_ANDROID ||
-                                               (bo->meta.format == DRM_FORMAT_R8 && height == 1)) {
+                   (bo->meta.format == DRM_FORMAT_R8 && height == 1)) {
                        alignh = height;
                } else {
                        alignh = ALIGN(height, DEFAULT_ALIGNMENT);
@@ -160,7 +160,7 @@ static void msm_add_ubwc_combinations(struct driver *drv, const uint32_t *format
 static int msm_init(struct driver *drv)
 {
        struct format_metadata metadata;
-       uint64_t render_use_flags = BO_USE_RENDER_MASK;
+       uint64_t render_use_flags = BO_USE_RENDER_MASK | BO_USE_SCANOUT;
        uint64_t texture_use_flags = BO_USE_TEXTURE_MASK | BO_USE_HW_VIDEO_DECODER;
        uint64_t sw_flags = (BO_USE_RENDERSCRIPT | BO_USE_SW_WRITE_OFTEN | BO_USE_SW_READ_OFTEN |
                             BO_USE_LINEAR | BO_USE_PROTECTED);
@@ -180,7 +180,7 @@ static int msm_init(struct driver *drv)
 
        /* The camera stack standardizes on NV12 for YUV buffers. */
        drv_modify_combination(drv, DRM_FORMAT_NV12, &LINEAR_METADATA,
-                              BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE);
+                              BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | BO_USE_SCANOUT);
        /*
         * R8 format is used for Android's HAL_PIXEL_FORMAT_BLOB and is used for JPEG snapshots
         * from camera.
@@ -201,7 +201,7 @@ static int msm_init(struct driver *drv)
        texture_use_flags &= ~sw_flags;
 
        msm_add_ubwc_combinations(drv, render_target_formats, ARRAY_SIZE(render_target_formats),
-                                 &metadata, render_use_flags | BO_USE_SCANOUT);
+                                 &metadata, render_use_flags);
 
        msm_add_ubwc_combinations(drv, texture_source_formats, ARRAY_SIZE(texture_source_formats),
                                  &metadata, texture_use_flags);
@@ -289,6 +289,16 @@ static void *msm_bo_map(struct bo *bo, struct vma *vma, size_t plane, uint32_t m
                    req.offset);
 }
 
+static uint32_t msm_resolve_format(struct driver *drv, uint32_t format, uint64_t use_flags)
+{
+       switch (format) {
+       case DRM_FORMAT_FLEX_YCbCr_420_888:
+               return DRM_FORMAT_NV12;
+       default:
+               return format;
+       }
+}
+
 const struct backend backend_msm = {
        .name = "msm",
        .init = msm_init,
@@ -298,5 +308,6 @@ const struct backend backend_msm = {
        .bo_import = drv_prime_bo_import,
        .bo_map = msm_bo_map,
        .bo_unmap = drv_bo_munmap,
+       .resolve_format = msm_resolve_format,
 };
 #endif /* DRV_MSM */