OSDN Git Service

minigbm: cros_gralloc: fix rendernode query
[android-x86/external-minigbm.git] / i915.c
diff --git a/i915.c b/i915.c
index 4df5879..769e6a3 100644 (file)
--- a/i915.c
+++ b/i915.c
 #include "helpers.h"
 #include "util.h"
 
+static struct supported_combination combos[18] = {
+       {DRM_FORMAT_ARGB1555, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+       {DRM_FORMAT_ABGR8888, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN},
+       {DRM_FORMAT_ABGR8888, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+       {DRM_FORMAT_ARGB8888, DRM_FORMAT_MOD_NONE,
+               BO_USE_CURSOR | BO_USE_LINEAR | BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN},
+       {DRM_FORMAT_ARGB8888, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+       {DRM_FORMAT_GR88, DRM_FORMAT_MOD_NONE,
+               BO_USE_LINEAR | BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN},
+       {DRM_FORMAT_R8, DRM_FORMAT_MOD_NONE,
+               BO_USE_LINEAR | BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN},
+       {DRM_FORMAT_RGB565, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+       {DRM_FORMAT_UYVY, DRM_FORMAT_MOD_NONE,
+               BO_USE_LINEAR | BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN},
+       {DRM_FORMAT_UYVY, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+       {DRM_FORMAT_XBGR8888, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN},
+       {DRM_FORMAT_XBGR8888, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+       {DRM_FORMAT_XRGB1555, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+       {DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_NONE,
+               BO_USE_CURSOR | BO_USE_LINEAR | BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN},
+       {DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+       {DRM_FORMAT_YUYV, DRM_FORMAT_MOD_NONE,
+               BO_USE_LINEAR | BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN},
+       {DRM_FORMAT_YUYV, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+       {DRM_FORMAT_YVU420, DRM_FORMAT_MOD_NONE,
+               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+};
+
 struct i915_device
 {
        int gen;
 };
 
-
 static int get_gen(int device_id)
 {
        const uint16_t gen3_ids[] = {0x2582, 0x2592, 0x2772, 0x27A2, 0x27AE,
@@ -60,7 +98,8 @@ static int i915_init(struct driver *drv)
 
        drv->priv = i915_drv;
 
-       return 0;
+       drv_insert_combinations(drv, combos, ARRAY_SIZE(combos));
+       return drv_add_kms_flags(drv);
 }
 
 static void i915_close(struct driver *drv)
@@ -130,14 +169,12 @@ static int i915_bo_create(struct bo *bo, uint32_t width, uint32_t height,
        size_t plane;
        int ret;
 
-       if (flags & (DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR |
-                    DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN))
+       if (flags & (BO_USE_CURSOR | BO_USE_LINEAR |
+                    BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN))
                tiling_mode = I915_TILING_NONE;
-       else if (flags & DRV_BO_USE_SCANOUT)
+       else if (flags & BO_USE_SCANOUT)
                tiling_mode = I915_TILING_X;
-       else if (flags & (DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
-                         DRV_BO_USE_HW_RENDER | DRV_BO_USE_SW_READ_RARELY |
-                         DRV_BO_USE_HW_2D | DRV_BO_USE_SW_WRITE_RARELY))
+       else
                tiling_mode = I915_TILING_Y;
 
        i915_align_dimensions(drv, tiling_mode, &width, &height, bpp);
@@ -205,20 +242,20 @@ static void *i915_bo_map(struct bo *bo, struct map_info *data, size_t plane)
                    bo->drv->fd, gem_map.offset);
 }
 
-static drv_format_t i915_resolve_format(drv_format_t format)
+static uint32_t i915_resolve_format(uint32_t format)
 {
        switch (format) {
-       case DRV_FORMAT_FLEX_IMPLEMENTATION_DEFINED:
+       case DRM_FORMAT_FLEX_IMPLEMENTATION_DEFINED:
                /*HACK: See b/28671744 */
-               return DRV_FORMAT_XBGR8888;
-       case DRV_FORMAT_FLEX_YCbCr_420_888:
-               return DRV_FORMAT_YVU420;
+               return DRM_FORMAT_XBGR8888;
+       case DRM_FORMAT_FLEX_YCbCr_420_888:
+               return DRM_FORMAT_YVU420;
        default:
                return format;
        }
 }
 
-const struct backend backend_i915 =
+struct backend backend_i915 =
 {
        .name = "i915",
        .init = i915_init,
@@ -227,62 +264,6 @@ const struct backend backend_i915 =
        .bo_destroy = drv_gem_bo_destroy,
        .bo_map = i915_bo_map,
        .resolve_format = i915_resolve_format,
-       .format_list = {
-               {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
-                                     DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
-                                     DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
-               {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
-                                     DRV_BO_USE_SW_WRITE_OFTEN},
-               {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
-                                     DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
-                                     DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
-               {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
-                                     DRV_BO_USE_SW_WRITE_OFTEN},
-               {DRV_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
-                                     DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
-                                     DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
-               {DRV_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
-                                     DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
-                                     DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
-               {DRV_FORMAT_XRGB1555, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
-                                     DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
-                                     DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
-               {DRV_FORMAT_ARGB1555, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
-                                     DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
-                                     DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
-               {DRV_FORMAT_RGB565,   DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
-                                     DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
-                                     DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
-               {DRV_FORMAT_UYVY,     DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
-                                     DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
-                                     DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
-               {DRV_FORMAT_UYVY,     DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
-                                     DRV_BO_USE_SW_WRITE_OFTEN},
-               {DRV_FORMAT_YUYV,     DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_RENDERING | DRV_BO_USE_HW_TEXTURE |
-                                     DRV_BO_USE_HW_RENDER | DRV_BO_USE_HW_2D |
-                                     DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY},
-               {DRV_FORMAT_YUYV,     DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR |
-                                     DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
-                                     DRV_BO_USE_SW_WRITE_OFTEN},
-               {DRV_FORMAT_R8,       DRV_BO_USE_SCANOUT | DRV_BO_USE_LINEAR |
-                                     DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
-               {DRV_FORMAT_GR88,     DRV_BO_USE_SCANOUT | DRV_BO_USE_LINEAR |
-                                     DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN},
-               {DRV_FORMAT_YVU420,   DRV_BO_USE_LINEAR | DRV_BO_USE_SW_READ_OFTEN |
-                                     DRV_BO_USE_SW_WRITE_OFTEN},
-       }
 };
 
 #endif