OSDN Git Service

Update Android.bp after merge
[android-x86/external-minigbm.git] / rockchip.c
index 25f16ab..9ef7962 100644 (file)
@@ -88,24 +88,20 @@ static int rockchip_init(struct driver *drv)
        drv_add_combinations(drv, texture_only_formats, ARRAY_SIZE(texture_only_formats), &metadata,
                             BO_USE_TEXTURE_MASK);
 
-       /*
-        * Chrome uses DMA-buf mmap to write to YV12 buffers, which are then accessed by the
-        * Video Encoder Accelerator (VEA). It could also support NV12 potentially in the future.
-        */
-       drv_modify_combination(drv, DRM_FORMAT_YVU420, &metadata, BO_USE_HW_VIDEO_ENCODER);
+       /* NV12 format for camera, display, decoding and encoding. */
        /* Camera ISP supports only NV12 output. */
        drv_modify_combination(drv, DRM_FORMAT_NV12, &metadata,
-                              BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | BO_USE_HW_VIDEO_DECODER |
-                                  BO_USE_HW_VIDEO_ENCODER | BO_USE_SCANOUT);
+                              BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | BO_USE_SCANOUT |
+                                  BO_USE_HW_VIDEO_DECODER | BO_USE_HW_VIDEO_ENCODER);
 
        drv_modify_linear_combinations(drv);
        /*
         * R8 format is used for Android's HAL_PIXEL_FORMAT_BLOB and is used for JPEG snapshots
-        * from camera.
+        * from camera and input/output from hardware decoder/encoder.
         */
        drv_add_combination(drv, DRM_FORMAT_R8, &metadata,
                            BO_USE_CAMERA_READ | BO_USE_CAMERA_WRITE | BO_USE_SW_MASK |
-                               BO_USE_LINEAR | BO_USE_PROTECTED);
+                               BO_USE_LINEAR | BO_USE_HW_VIDEO_DECODER | BO_USE_HW_VIDEO_ENCODER);
 
        return 0;
 }
@@ -116,7 +112,7 @@ static int rockchip_bo_create_with_modifiers(struct bo *bo, uint32_t width, uint
 {
        int ret;
        size_t plane;
-       struct drm_rockchip_gem_create gem_create;
+       struct drm_rockchip_gem_create gem_create = { 0 };
 
        if (format == DRM_FORMAT_NV12) {
                uint32_t w_mbs = DIV_ROUND_UP(width, 16);
@@ -159,9 +155,7 @@ static int rockchip_bo_create_with_modifiers(struct bo *bo, uint32_t width, uint
                drv_bo_from_format(bo, stride, height, format);
        }
 
-       memset(&gem_create, 0, sizeof(gem_create));
        gem_create.size = bo->meta.total_size;
-
        ret = drmIoctl(bo->drv->fd, DRM_IOCTL_ROCKCHIP_GEM_CREATE, &gem_create);
 
        if (ret) {
@@ -187,17 +181,15 @@ static int rockchip_bo_create(struct bo *bo, uint32_t width, uint32_t height, ui
 static void *rockchip_bo_map(struct bo *bo, struct vma *vma, size_t plane, uint32_t map_flags)
 {
        int ret;
-       struct drm_rockchip_gem_map_off gem_map;
        struct rockchip_private_map_data *priv;
+       struct drm_rockchip_gem_map_off gem_map = { 0 };
 
        /* We can only map buffers created with SW access flags, which should
         * have no modifiers (ie, not AFBC). */
        if (bo->meta.format_modifiers[0] == DRM_FORMAT_MOD_CHROMEOS_ROCKCHIP_AFBC)
                return MAP_FAILED;
 
-       memset(&gem_map, 0, sizeof(gem_map));
        gem_map.handle = bo->handles[0].u32;
-
        ret = drmIoctl(bo->drv->fd, DRM_IOCTL_ROCKCHIP_GEM_MAP_OFFSET, &gem_map);
        if (ret) {
                drv_log("DRM_IOCTL_ROCKCHIP_GEM_MAP_OFFSET failed\n");