diff options
| author | Gurchetan Singh <gurchetansingh@chromium.org> | 2016-11-21 10:46:38 -0800 |
|---|---|---|
| committer | chrome-bot <chrome-bot@chromium.org> | 2016-11-28 23:59:30 -0800 |
| commit | f3b22da397567eaa9d7cd59b50f43eea92b9be61 (patch) | |
| tree | f335dddd3b8528808796ef559e54955a04b1bf51 | |
| parent | c746dca555369056a6a74924bba576e904f0b38d (diff) | |
| download | platform_external_minigbm-f3b22da397567eaa9d7cd59b50f43eea92b9be61.tar.gz platform_external_minigbm-f3b22da397567eaa9d7cd59b50f43eea92b9be61.tar.bz2 platform_external_minigbm-f3b22da397567eaa9d7cd59b50f43eea92b9be61.zip | |
minigbm: Switch to <drm_fourcc.h>
We were duplicating formats. The original rationale behind this was
DRV_FORMAT_* would be a superset of Android and DRM formats. However,
there are only 2 HAL flexible formats not defined by DRM, and we can
deal with these easily. The DRM format namespace is large enough to
handle any additions we may need.
BUG=NONE
TEST=Ran graphics_Gbm,
arc-cros-gralloc still builds
Change-Id: Ie173eee6ac6926947a3b98c3ae809e38a0ea8014
Reviewed-on: https://chromium-review.googlesource.com/405790
Commit-Ready: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
| -rw-r--r-- | amdgpu.c | 10 | ||||
| -rw-r--r-- | cirrus.c | 10 | ||||
| -rw-r--r-- | cros_gralloc/cros_alloc_device.cc | 2 | ||||
| -rw-r--r-- | cros_gralloc/cros_gralloc_helpers.cc | 20 | ||||
| -rw-r--r-- | cros_gralloc/cros_gralloc_helpers.h | 2 | ||||
| -rw-r--r-- | cros_gralloc/cros_gralloc_module.cc | 6 | ||||
| -rw-r--r-- | drv.c | 120 | ||||
| -rw-r--r-- | drv.h | 102 | ||||
| -rw-r--r-- | drv_priv.h | 6 | ||||
| -rw-r--r-- | evdi.c | 8 | ||||
| -rw-r--r-- | exynos.c | 14 | ||||
| -rw-r--r-- | gbm.c | 11 | ||||
| -rw-r--r-- | gbm_helpers.c | 132 | ||||
| -rw-r--r-- | gbm_helpers.h | 1 | ||||
| -rw-r--r-- | gma500.c | 2 | ||||
| -rw-r--r-- | helpers.c | 100 | ||||
| -rw-r--r-- | helpers.h | 2 | ||||
| -rw-r--r-- | i915.c | 46 | ||||
| -rw-r--r-- | marvell.c | 8 | ||||
| -rw-r--r-- | mediatek.c | 26 | ||||
| -rw-r--r-- | rockchip.c | 34 | ||||
| -rw-r--r-- | tegra.c | 10 | ||||
| -rw-r--r-- | udl.c | 8 | ||||
| -rw-r--r-- | vgem.c | 14 | ||||
| -rw-r--r-- | virtio_gpu.c | 8 |
25 files changed, 249 insertions, 453 deletions
@@ -346,12 +346,12 @@ const struct backend backend_amdgpu = { .bo_destroy = drv_gem_bo_destroy, .format_list = { /* Linear support */ - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_LINEAR}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, /* Blocklinear support */ - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING}, } }; @@ -14,10 +14,10 @@ const struct backend backend_cirrus = .bo_destroy = drv_dumb_bo_destroy, .bo_map = drv_dumb_bo_map, .format_list = { - {DRV_FORMAT_RGB888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_RGB888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, } }; diff --git a/cros_gralloc/cros_alloc_device.cc b/cros_gralloc/cros_alloc_device.cc index 8e0dbc8..7af21fa 100644 --- a/cros_gralloc/cros_alloc_device.cc +++ b/cros_gralloc/cros_alloc_device.cc @@ -11,7 +11,7 @@ static struct cros_gralloc_bo *cros_gralloc_bo_create(struct driver *drv, int format, int usage) { uint64_t drv_usage; - drv_format_t drv_format; + uint32_t drv_format; struct cros_gralloc_bo *bo; drv_format = cros_gralloc_convert_format(format); diff --git a/cros_gralloc/cros_gralloc_helpers.cc b/cros_gralloc/cros_gralloc_helpers.cc index a6fd3ea..36f56b8 100644 --- a/cros_gralloc/cros_gralloc_helpers.cc +++ b/cros_gralloc/cros_gralloc_helpers.cc @@ -56,7 +56,7 @@ uint64_t cros_gralloc_convert_flags(int flags) return usage; } -drv_format_t cros_gralloc_convert_format(int format) +uint32_t cros_gralloc_convert_format(int format) { /* * Conversion from HAL to fourcc-based DRV formats based on @@ -65,24 +65,24 @@ drv_format_t cros_gralloc_convert_format(int format) switch (format) { case HAL_PIXEL_FORMAT_BGRA_8888: - return DRV_FORMAT_ARGB8888; + return DRM_FORMAT_ARGB8888; case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: - return DRV_FORMAT_FLEX_IMPLEMENTATION_DEFINED; + return DRM_FORMAT_FLEX_IMPLEMENTATION_DEFINED; case HAL_PIXEL_FORMAT_RGB_565: - return DRV_FORMAT_RGB565; + return DRM_FORMAT_RGB565; case HAL_PIXEL_FORMAT_RGB_888: - return DRV_FORMAT_RGB888; + return DRM_FORMAT_RGB888; case HAL_PIXEL_FORMAT_RGBA_8888: - return DRV_FORMAT_ABGR8888; + return DRM_FORMAT_ABGR8888; case HAL_PIXEL_FORMAT_RGBX_8888: - return DRV_FORMAT_XBGR8888; + return DRM_FORMAT_XBGR8888; case HAL_PIXEL_FORMAT_YCbCr_420_888: - return DRV_FORMAT_FLEX_YCbCr_420_888; + return DRM_FORMAT_FLEX_YCbCr_420_888; case HAL_PIXEL_FORMAT_YV12: - return DRV_FORMAT_YVU420; + return DRM_FORMAT_YVU420; } - return DRV_FORMAT_NONE; + return DRM_FORMAT_NONE; } static int32_t cros_gralloc_query_rendernode(struct driver **drv, diff --git a/cros_gralloc/cros_gralloc_helpers.h b/cros_gralloc/cros_gralloc_helpers.h index 93f12fd..4fbe8c2 100644 --- a/cros_gralloc/cros_gralloc_helpers.h +++ b/cros_gralloc/cros_gralloc_helpers.h @@ -71,7 +71,7 @@ constexpr uint32_t sw_write(void) uint64_t cros_gralloc_convert_flags(int flags); -drv_format_t cros_gralloc_convert_format(int format); +uint32_t cros_gralloc_convert_format(int format); int32_t cros_gralloc_rendernode_open(struct driver **drv); diff --git a/cros_gralloc/cros_gralloc_module.cc b/cros_gralloc/cros_gralloc_module.cc index 5946741..b7ce03b 100644 --- a/cros_gralloc/cros_gralloc_module.cc +++ b/cros_gralloc/cros_gralloc_module.cc @@ -306,7 +306,7 @@ static int cros_gralloc_lock_ycbcr(struct gralloc_module_t const* module, offsets[p] = drv_bo_get_plane_offset(bo->bo, p); switch (hnd->data.format) { - case DRV_FORMAT_NV12: + case DRM_FORMAT_NV12: ycbcr->y = addr; ycbcr->cb = addr + offsets[1]; ycbcr->cr = addr + offsets[1] + 1; @@ -314,7 +314,7 @@ static int cros_gralloc_lock_ycbcr(struct gralloc_module_t const* module, ycbcr->cstride = drv_bo_get_plane_stride(bo->bo, 1); ycbcr->chroma_step = 2; break; - case DRV_FORMAT_YVU420: + case DRM_FORMAT_YVU420: ycbcr->y = addr; ycbcr->cb = addr + offsets[2]; ycbcr->cr = addr + offsets[1]; @@ -322,7 +322,7 @@ static int cros_gralloc_lock_ycbcr(struct gralloc_module_t const* module, ycbcr->cstride = drv_bo_get_plane_stride(bo->bo, 1); ycbcr->chroma_step = 1; break; - case DRV_FORMAT_UYVY: + case DRM_FORMAT_UYVY: ycbcr->y = addr + 1; ycbcr->cb = addr; ycbcr->cr = addr + 2; @@ -164,12 +164,12 @@ drv_get_name(struct driver *drv) return drv->backend->name; } -int drv_is_format_supported(struct driver *drv, drv_format_t format, +int drv_is_format_supported(struct driver *drv, uint32_t format, uint64_t usage) { unsigned int i; - if (format == DRV_FORMAT_NONE || usage == DRV_BO_USE_NONE) + if (format == DRM_FORMAT_NONE || usage == DRV_BO_USE_NONE) return 0; for (i = 0 ; i < ARRAY_SIZE(drv->backend->format_list); i++) @@ -186,7 +186,7 @@ int drv_is_format_supported(struct driver *drv, drv_format_t format, } struct bo *drv_bo_new(struct driver *drv, uint32_t width, uint32_t height, - drv_format_t format) + uint32_t format) { struct bo *bo; @@ -210,7 +210,7 @@ struct bo *drv_bo_new(struct driver *drv, uint32_t width, uint32_t height, } struct bo *drv_bo_create(struct driver *drv, uint32_t width, uint32_t height, - drv_format_t format, uint64_t flags) + uint32_t format, uint64_t flags) { int ret; size_t plane; @@ -443,12 +443,12 @@ uint64_t drv_bo_get_plane_format_modifier(struct bo *bo, size_t plane) return bo->format_modifiers[plane]; } -drv_format_t drv_bo_get_format(struct bo *bo) +uint32_t drv_bo_get_format(struct bo *bo) { return bo->format; } -drv_format_t drv_resolve_format(struct driver *drv, drv_format_t format) +uint32_t drv_resolve_format(struct driver *drv, uint32_t format) { if (drv->backend->resolve_format) return drv->backend->resolve_format(format); @@ -471,8 +471,8 @@ int drv_stride_from_format(uint32_t format, uint32_t width, size_t plane) */ if (plane != 0) { switch (format) { - case DRV_FORMAT_NV12: - case DRV_FORMAT_YVU420: + case DRM_FORMAT_NV12: + case DRM_FORMAT_YVU420: stride = stride / 2; break; } @@ -484,57 +484,57 @@ int drv_stride_from_format(uint32_t format, uint32_t width, size_t plane) size_t drv_num_planes_from_format(uint32_t format) { switch (format) { - case DRV_FORMAT_C8: - case DRV_FORMAT_R8: - case DRV_FORMAT_RG88: - case DRV_FORMAT_GR88: - case DRV_FORMAT_RGB332: - case DRV_FORMAT_BGR233: - case DRV_FORMAT_XRGB4444: - case DRV_FORMAT_XBGR4444: - case DRV_FORMAT_RGBX4444: - case DRV_FORMAT_BGRX4444: - case DRV_FORMAT_ARGB4444: - case DRV_FORMAT_ABGR4444: - case DRV_FORMAT_RGBA4444: - case DRV_FORMAT_BGRA4444: - case DRV_FORMAT_XRGB1555: - case DRV_FORMAT_XBGR1555: - case DRV_FORMAT_RGBX5551: - case DRV_FORMAT_BGRX5551: - case DRV_FORMAT_ARGB1555: - case DRV_FORMAT_ABGR1555: - case DRV_FORMAT_RGBA5551: - case DRV_FORMAT_BGRA5551: - case DRV_FORMAT_RGB565: - case DRV_FORMAT_BGR565: - case DRV_FORMAT_YUYV: - case DRV_FORMAT_YVYU: - case DRV_FORMAT_UYVY: - case DRV_FORMAT_VYUY: - case DRV_FORMAT_RGB888: - case DRV_FORMAT_BGR888: - case DRV_FORMAT_XRGB8888: - case DRV_FORMAT_XBGR8888: - case DRV_FORMAT_RGBX8888: - case DRV_FORMAT_BGRX8888: - case DRV_FORMAT_ARGB8888: - case DRV_FORMAT_ABGR8888: - case DRV_FORMAT_RGBA8888: - case DRV_FORMAT_BGRA8888: - case DRV_FORMAT_XRGB2101010: - case DRV_FORMAT_XBGR2101010: - case DRV_FORMAT_RGBX1010102: - case DRV_FORMAT_BGRX1010102: - case DRV_FORMAT_ARGB2101010: - case DRV_FORMAT_ABGR2101010: - case DRV_FORMAT_RGBA1010102: - case DRV_FORMAT_BGRA1010102: - case DRV_FORMAT_AYUV: + case DRM_FORMAT_C8: + case DRM_FORMAT_R8: + case DRM_FORMAT_RG88: + case DRM_FORMAT_GR88: + case DRM_FORMAT_RGB332: + case DRM_FORMAT_BGR233: + case DRM_FORMAT_XRGB4444: + case DRM_FORMAT_XBGR4444: + case DRM_FORMAT_RGBX4444: + case DRM_FORMAT_BGRX4444: + case DRM_FORMAT_ARGB4444: + case DRM_FORMAT_ABGR4444: + case DRM_FORMAT_RGBA4444: + case DRM_FORMAT_BGRA4444: + case DRM_FORMAT_XRGB1555: + case DRM_FORMAT_XBGR1555: + case DRM_FORMAT_RGBX5551: + case DRM_FORMAT_BGRX5551: + case DRM_FORMAT_ARGB1555: + case DRM_FORMAT_ABGR1555: + case DRM_FORMAT_RGBA5551: + case DRM_FORMAT_BGRA5551: + case DRM_FORMAT_RGB565: + case DRM_FORMAT_BGR565: + case DRM_FORMAT_YUYV: + case DRM_FORMAT_YVYU: + case DRM_FORMAT_UYVY: + case DRM_FORMAT_VYUY: + case DRM_FORMAT_RGB888: + case DRM_FORMAT_BGR888: + case DRM_FORMAT_XRGB8888: + case DRM_FORMAT_XBGR8888: + case DRM_FORMAT_RGBX8888: + case DRM_FORMAT_BGRX8888: + case DRM_FORMAT_ARGB8888: + case DRM_FORMAT_ABGR8888: + case DRM_FORMAT_RGBA8888: + case DRM_FORMAT_BGRA8888: + case DRM_FORMAT_XRGB2101010: + case DRM_FORMAT_XBGR2101010: + case DRM_FORMAT_RGBX1010102: + case DRM_FORMAT_BGRX1010102: + case DRM_FORMAT_ARGB2101010: + case DRM_FORMAT_ABGR2101010: + case DRM_FORMAT_RGBA1010102: + case DRM_FORMAT_BGRA1010102: + case DRM_FORMAT_AYUV: return 1; - case DRV_FORMAT_NV12: + case DRM_FORMAT_NV12: return 2; - case DRV_FORMAT_YVU420: + case DRM_FORMAT_YVU420: return 3; } @@ -542,15 +542,15 @@ size_t drv_num_planes_from_format(uint32_t format) return 0; } -uint32_t drv_size_from_format(drv_format_t format, uint32_t stride, +uint32_t drv_size_from_format(uint32_t format, uint32_t stride, uint32_t height, size_t plane) { assert(plane < drv_num_planes_from_format(format)); uint32_t vertical_subsampling; switch (format) { - case DRV_FORMAT_YVU420: - case DRV_FORMAT_NV12: + case DRM_FORMAT_YVU420: + case DRM_FORMAT_NV12: vertical_subsampling = (plane == 0) ? 1 : 2; break; default: @@ -11,21 +11,11 @@ extern "C" { #endif +#include <drm_fourcc.h> #include <stdint.h> #define DRV_MAX_PLANES 4 -/* Vendor ids and mod_code fourcc function must match gbm.h */ -#define DRV_FORMAT_MOD_NONE 0 -#define DRV_FORMAT_MOD_VENDOR_INTEL 0x01 -#define DRV_FORMAT_MOD_VENDOR_AMD 0x02 -#define DRV_FORMAT_MOD_VENDOR_NV 0x03 -#define DRV_FORMAT_MOD_VENDOR_SAMSUNG 0x04 -#define DRV_FORMAT_MOD_VENDOR_QCOM 0x05 - -#define drv_fourcc_mod_code(vendor, val) \ - ((((__u64)DRV_FORMAT_MOD_VENDOR_## vendor) << 56) | (val & 0x00ffffffffffffffULL)) - /* Use flags */ #define DRV_BO_USE_NONE 0 #define DRV_BO_USE_SCANOUT (1ull << 0) @@ -47,72 +37,14 @@ extern "C" { #define DRV_BO_USE_HW_CAMERA_ZSL (1ull << 15) #define DRV_BO_USE_RENDERSCRIPT (1ull << 16) -typedef enum { - DRV_FORMAT_NONE, - DRV_FORMAT_C8, - DRV_FORMAT_R8, - DRV_FORMAT_RG88, - DRV_FORMAT_GR88, - DRV_FORMAT_RGB332, - DRV_FORMAT_BGR233, - DRV_FORMAT_XRGB4444, - DRV_FORMAT_XBGR4444, - DRV_FORMAT_RGBX4444, - DRV_FORMAT_BGRX4444, - DRV_FORMAT_ARGB4444, - DRV_FORMAT_ABGR4444, - DRV_FORMAT_RGBA4444, - DRV_FORMAT_BGRA4444, - DRV_FORMAT_XRGB1555, - DRV_FORMAT_XBGR1555, - DRV_FORMAT_RGBX5551, - DRV_FORMAT_BGRX5551, - DRV_FORMAT_ARGB1555, - DRV_FORMAT_ABGR1555, - DRV_FORMAT_RGBA5551, - DRV_FORMAT_BGRA5551, - DRV_FORMAT_RGB565, - DRV_FORMAT_BGR565, - DRV_FORMAT_RGB888, - DRV_FORMAT_BGR888, - DRV_FORMAT_XRGB8888, - DRV_FORMAT_XBGR8888, - DRV_FORMAT_RGBX8888, - DRV_FORMAT_BGRX8888, - DRV_FORMAT_ARGB8888, - DRV_FORMAT_ABGR8888, - DRV_FORMAT_RGBA8888, - DRV_FORMAT_BGRA8888, - DRV_FORMAT_XRGB2101010, - DRV_FORMAT_XBGR2101010, - DRV_FORMAT_RGBX1010102, - DRV_FORMAT_BGRX1010102, - DRV_FORMAT_ARGB2101010, - DRV_FORMAT_ABGR2101010, - DRV_FORMAT_RGBA1010102, - DRV_FORMAT_BGRA1010102, - DRV_FORMAT_YUYV, - DRV_FORMAT_YVYU, - DRV_FORMAT_UYVY, - DRV_FORMAT_VYUY, - DRV_FORMAT_AYUV, - DRV_FORMAT_NV12, - DRV_FORMAT_NV21, - DRV_FORMAT_NV16, - DRV_FORMAT_NV61, - DRV_FORMAT_YUV410, - DRV_FORMAT_YVU410, - DRV_FORMAT_YUV411, - DRV_FORMAT_YVU411, - DRV_FORMAT_YUV420, - DRV_FORMAT_YVU420, - DRV_FORMAT_YUV422, - DRV_FORMAT_YVU422, - DRV_FORMAT_YUV444, - DRV_FORMAT_YVU444, - DRV_FORMAT_FLEX_IMPLEMENTATION_DEFINED, - DRV_FORMAT_FLEX_YCbCr_420_888, -} drv_format_t; +/* This is our extension to <drm_fourcc.h>. We need to make sure we don't step + * on the namespace of already defined formats, which can be done by using invalid + * fourcc codes. + */ + +#define DRM_FORMAT_NONE fourcc_code('0', '0', '0', '0') +#define DRM_FORMAT_FLEX_IMPLEMENTATION_DEFINED fourcc_code('9', '9', '9', '8') +#define DRM_FORMAT_FLEX_YCbCr_420_888 fourcc_code('9', '9', '9', '9') struct driver; struct bo; @@ -133,7 +65,7 @@ struct drv_import_fd_data { uint64_t format_modifiers[DRV_MAX_PLANES]; uint32_t width; uint32_t height; - drv_format_t format; + uint32_t format; }; struct driver * @@ -149,16 +81,16 @@ const char * drv_get_name(struct driver *drv); int -drv_is_format_supported(struct driver *drv, drv_format_t format, +drv_is_format_supported(struct driver *drv, uint32_t format, uint64_t usage); struct bo * drv_bo_new(struct driver *drv, uint32_t width, uint32_t height, - drv_format_t format); + uint32_t format); struct bo * drv_bo_create(struct driver *drv, uint32_t width, uint32_t height, - drv_format_t format, uint64_t flags); + uint32_t format, uint64_t flags); void drv_bo_destroy(struct bo *bo); @@ -203,11 +135,11 @@ drv_bo_get_plane_stride(struct bo *bo, size_t plane); uint64_t drv_bo_get_plane_format_modifier(struct bo *bo, size_t plane); -drv_format_t +uint32_t drv_bo_get_format(struct bo *bo); -drv_format_t -drv_resolve_format(struct driver *drv, drv_format_t format); +uint32_t +drv_resolve_format(struct driver *drv, uint32_t format); int drv_stride_from_format(uint32_t format, uint32_t width, size_t plane); @@ -216,7 +148,7 @@ size_t drv_num_planes_from_format(uint32_t format); uint32_t -drv_size_from_format(drv_format_t format, uint32_t stride, uint32_t height, +drv_size_from_format(uint32_t format, uint32_t stride, uint32_t height, size_t plane); uint32_t @@ -53,12 +53,12 @@ struct backend int (*init)(struct driver *drv); void (*close)(struct driver *drv); int (*bo_create)(struct bo *bo, uint32_t width, uint32_t height, - drv_format_t format, uint32_t flags); + uint32_t format, uint32_t flags); void* (*bo_map)(struct bo *bo, struct map_info *data, size_t plane); int (*bo_destroy)(struct bo *bo); - drv_format_t (*resolve_format)(drv_format_t format); + uint32_t (*resolve_format)(uint32_t format); struct format_supported { - drv_format_t format; + uint32_t format; uint64_t usage; } format_list[19]; @@ -14,10 +14,10 @@ const struct backend backend_evdi = .bo_destroy = drv_dumb_bo_destroy, .bo_map = drv_dumb_bo_map, .format_list = { - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, } }; @@ -22,7 +22,7 @@ static int exynos_bo_create(struct bo *bo, uint32_t width, uint32_t height, { size_t plane; - if (format == DRV_FORMAT_NV12) { + if (format == DRM_FORMAT_NV12) { uint32_t chroma_height; /* V4L2 s5p-mfc requires width to be 16 byte aligned and height 32. */ width = ALIGN(width, 16); @@ -34,7 +34,7 @@ static int exynos_bo_create(struct bo *bo, uint32_t width, uint32_t height, bo->sizes[1] = bo->strides[1] * chroma_height + 64; bo->offsets[0] = bo->offsets[1] = 0; bo->total_size = bo->sizes[0] + bo->sizes[1]; - } else if (format == DRV_FORMAT_XRGB8888 || format == DRV_FORMAT_ARGB8888) { + } else if (format == DRM_FORMAT_XRGB8888 || format == DRM_FORMAT_ARGB8888) { bo->strides[0] = drv_stride_from_format(format, width, 0); bo->total_size = bo->sizes[0] = height * bo->strides[0]; bo->offsets[0] = 0; @@ -93,11 +93,11 @@ const struct backend backend_exynos = .bo_destroy = drv_gem_bo_destroy, .bo_map = drv_dumb_bo_map, .format_list = { - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, - {DRV_FORMAT_NV12, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_NV12, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING}, } }; @@ -34,17 +34,15 @@ PUBLIC int gbm_device_is_format_supported(struct gbm_device *gbm, uint32_t format, uint32_t usage) { - uint32_t drv_format; uint64_t drv_usage; if (usage & GBM_BO_USE_CURSOR && usage & GBM_BO_USE_RENDERING) return 0; - drv_format = gbm_convert_format(format); drv_usage = gbm_convert_flags(usage); - return drv_is_format_supported(gbm->drv, drv_format, drv_usage); + return drv_is_format_supported(gbm->drv, format, drv_usage); } PUBLIC struct gbm_device *gbm_create_device(int fd) @@ -127,8 +125,7 @@ PUBLIC struct gbm_bo *gbm_bo_create(struct gbm_device *gbm, uint32_t width, if (!bo) return NULL; - bo->bo = drv_bo_create(gbm->drv, width, height, - gbm_convert_format(format), + bo->bo = drv_bo_create(gbm->drv, width, height, format, gbm_convert_flags(flags)); if (!bo->bo) { @@ -169,7 +166,7 @@ gbm_bo_import(struct gbm_device *gbm, uint32_t type, gbm_format = fd_data->format; drv_data.width = fd_data->width; drv_data.height = fd_data->height; - drv_data.format = gbm_convert_format(fd_data->format); + drv_data.format = fd_data->format; drv_data.fds[0] = fd_data->fd; drv_data.strides[0] = fd_data->stride; drv_data.sizes[0] = fd_data->height * fd_data->stride; @@ -178,7 +175,7 @@ gbm_bo_import(struct gbm_device *gbm, uint32_t type, gbm_format = fd_planar_data->format; drv_data.width = fd_planar_data->width; drv_data.height = fd_planar_data->height; - drv_data.format = gbm_convert_format(fd_planar_data->format); + drv_data.format = fd_planar_data->format; num_planes = drv_num_planes_from_format(drv_data.format); assert(num_planes); diff --git a/gbm_helpers.c b/gbm_helpers.c index 2f7e034..9d4645b 100644 --- a/gbm_helpers.c +++ b/gbm_helpers.c @@ -10,138 +10,6 @@ #include "drv.h" #include "gbm.h" -drv_format_t gbm_convert_format(uint32_t format) -{ - - switch (format) { - case GBM_FORMAT_C8: - return DRV_FORMAT_C8; - case GBM_FORMAT_R8: - return DRV_FORMAT_R8; - case GBM_FORMAT_RG88: - return DRV_FORMAT_RG88; - case GBM_FORMAT_GR88: - return DRV_FORMAT_GR88; - case GBM_FORMAT_RGB332: - return DRV_FORMAT_RGB332; - case GBM_FORMAT_BGR233: - return DRV_FORMAT_BGR233; - case GBM_FORMAT_XRGB4444: - return DRV_FORMAT_XRGB4444; - case GBM_FORMAT_XBGR4444: - return DRV_FORMAT_XBGR4444; - case GBM_FORMAT_RGBX4444: - return DRV_FORMAT_RGBX4444; - case GBM_FORMAT_BGRX4444: - return DRV_FORMAT_BGRX4444; - case GBM_FORMAT_ARGB4444: - return DRV_FORMAT_ARGB4444; - case GBM_FORMAT_ABGR4444: - return DRV_FORMAT_ABGR4444; - case GBM_FORMAT_RGBA4444: - return DRV_FORMAT_RGBA4444; - case GBM_FORMAT_BGRA4444: - return DRV_FORMAT_BGRA4444; - case GBM_FORMAT_XRGB1555: - return DRV_FORMAT_XRGB1555; - case GBM_FORMAT_XBGR1555: - return DRV_FORMAT_XBGR1555; - case GBM_FORMAT_RGBX5551: - return DRV_FORMAT_RGBX5551; - case GBM_FORMAT_BGRX5551: - return DRV_FORMAT_BGRX5551; - case GBM_FORMAT_ARGB1555: - return DRV_FORMAT_ARGB1555; - case GBM_FORMAT_ABGR1555: - return DRV_FORMAT_ABGR1555; - case GBM_FORMAT_RGBA5551: - return DRV_FORMAT_RGBA5551; - case GBM_FORMAT_BGRA5551: - return DRV_FORMAT_BGRA5551; - case GBM_FORMAT_RGB565: - return DRV_FORMAT_RGB565; - case GBM_FORMAT_BGR565: - return DRV_FORMAT_BGR565; - case GBM_FORMAT_RGB888: - return DRV_FORMAT_RGB888; - case GBM_FORMAT_BGR888: - return DRV_FORMAT_BGR888; - case GBM_FORMAT_XRGB8888: - return DRV_FORMAT_XRGB8888; - case GBM_FORMAT_XBGR8888: - return DRV_FORMAT_XBGR8888; - case GBM_FORMAT_RGBX8888: - return DRV_FORMAT_RGBX8888; - case GBM_FORMAT_BGRX8888: - return DRV_FORMAT_BGRX8888; - case GBM_FORMAT_ARGB8888: - return DRV_FORMAT_ARGB8888; - case GBM_FORMAT_ABGR8888: - return DRV_FORMAT_ABGR8888; - case GBM_FORMAT_RGBA8888: - return DRV_FORMAT_RGBA8888; - case GBM_FORMAT_BGRA8888: - return DRV_FORMAT_BGRA8888; - case GBM_FORMAT_XRGB2101010: - return DRV_FORMAT_XRGB2101010; - case GBM_FORMAT_XBGR2101010: - return DRV_FORMAT_XBGR2101010; - case GBM_FORMAT_RGBX1010102: - return DRV_FORMAT_RGBX1010102; - case GBM_FORMAT_BGRX1010102: - return DRV_FORMAT_BGRX1010102; - case GBM_FORMAT_ARGB2101010: - return DRV_FORMAT_ARGB2101010; - case GBM_FORMAT_ABGR2101010: - return DRV_FORMAT_ABGR2101010; - case GBM_FORMAT_RGBA1010102: - return DRV_FORMAT_RGBA1010102; - case GBM_FORMAT_BGRA1010102: - return DRV_FORMAT_BGRA1010102; - case GBM_FORMAT_YUYV: - return DRV_FORMAT_YUYV; - case GBM_FORMAT_YVYU: - return DRV_FORMAT_YVYU; - case GBM_FORMAT_UYVY: - return DRV_FORMAT_UYVY; - case GBM_FORMAT_VYUY: - return DRV_FORMAT_VYUY; - case GBM_FORMAT_AYUV: - return DRV_FORMAT_AYUV; - case GBM_FORMAT_NV12: - return DRV_FORMAT_NV12; - case GBM_FORMAT_NV21: - return DRV_FORMAT_NV21; - case GBM_FORMAT_NV16: - return DRV_FORMAT_NV16; - case GBM_FORMAT_NV61: - return DRV_FORMAT_NV61; - case GBM_FORMAT_YUV410: - return DRV_FORMAT_YUV410; - case GBM_FORMAT_YVU410: - return DRV_FORMAT_YVU410; - case GBM_FORMAT_YUV411: - return DRV_FORMAT_YUV411; - case GBM_FORMAT_YVU411: - return DRV_FORMAT_YVU411; - case GBM_FORMAT_YUV420: - return DRV_FORMAT_YUV420; - case GBM_FORMAT_YVU420: - return DRV_FORMAT_YVU420; - case GBM_FORMAT_YUV422: - return DRV_FORMAT_YUV422; - case GBM_FORMAT_YVU422: - return DRV_FORMAT_YVU422; - case GBM_FORMAT_YUV444: - return DRV_FORMAT_YVU444; - case GBM_FORMAT_YVU444: - return DRV_FORMAT_YVU444; - } - - fprintf(stderr, "minigbm: UNKNOWN FORMAT %d\n", format); - return DRV_FORMAT_NONE; -} - uint64_t gbm_convert_flags(uint32_t flags) { uint64_t usage = DRV_BO_USE_NONE; diff --git a/gbm_helpers.h b/gbm_helpers.h index c2f7e37..8e0b8b0 100644 --- a/gbm_helpers.h +++ b/gbm_helpers.h @@ -7,7 +7,6 @@ #ifndef GBM_HELPERS_H #define GBM_HELPERS_H -drv_format_t gbm_convert_format(uint32_t format); uint64_t gbm_convert_flags(uint32_t flags); #endif @@ -14,6 +14,6 @@ const struct backend backend_gma500 = .bo_destroy = drv_dumb_bo_destroy, .bo_map = drv_dumb_bo_map, .format_list = { - {DRV_FORMAT_RGBX8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_RGBX8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, } }; @@ -21,11 +21,11 @@ int drv_bpp_from_format(uint32_t format, size_t plane) assert(plane < drv_num_planes_from_format(format)); switch (format) { - case DRV_FORMAT_C8: - case DRV_FORMAT_R8: - case DRV_FORMAT_RGB332: - case DRV_FORMAT_BGR233: - case DRV_FORMAT_YVU420: + case DRM_FORMAT_C8: + case DRM_FORMAT_R8: + case DRM_FORMAT_RGB332: + case DRM_FORMAT_BGR233: + case DRM_FORMAT_YVU420: return 8; /* @@ -45,56 +45,56 @@ int drv_bpp_from_format(uint32_t format, size_t plane) * Y0_1, Cb01_01 and Cr01_01. So for a single pixel, 2 bytes of luma data * are required. */ - case DRV_FORMAT_NV12: + case DRM_FORMAT_NV12: return (plane == 0) ? 8 : 16; - case DRV_FORMAT_RG88: - case DRV_FORMAT_GR88: - case DRV_FORMAT_XRGB4444: - case DRV_FORMAT_XBGR4444: - case DRV_FORMAT_RGBX4444: - case DRV_FORMAT_BGRX4444: - case DRV_FORMAT_ARGB4444: - case DRV_FORMAT_ABGR4444: - case DRV_FORMAT_RGBA4444: - case DRV_FORMAT_BGRA4444: - case DRV_FORMAT_XRGB1555: - case DRV_FORMAT_XBGR1555: - case DRV_FORMAT_RGBX5551: - case DRV_FORMAT_BGRX5551: - case DRV_FORMAT_ARGB1555: - case DRV_FORMAT_ABGR1555: - case DRV_FORMAT_RGBA5551: - case DRV_FORMAT_BGRA5551: - case DRV_FORMAT_RGB565: - case DRV_FORMAT_BGR565: - case DRV_FORMAT_YUYV: - case DRV_FORMAT_YVYU: - case DRV_FORMAT_UYVY: - case DRV_FORMAT_VYUY: + case DRM_FORMAT_RG88: + case DRM_FORMAT_GR88: + case DRM_FORMAT_XRGB4444: + case DRM_FORMAT_XBGR4444: + case DRM_FORMAT_RGBX4444: + case DRM_FORMAT_BGRX4444: + case DRM_FORMAT_ARGB4444: + case DRM_FORMAT_ABGR4444: + case DRM_FORMAT_RGBA4444: + case DRM_FORMAT_BGRA4444: + case DRM_FORMAT_XRGB1555: + case DRM_FORMAT_XBGR1555: + case DRM_FORMAT_RGBX5551: + case DRM_FORMAT_BGRX5551: + case DRM_FORMAT_ARGB1555: + case DRM_FORMAT_ABGR1555: + case DRM_FORMAT_RGBA5551: + case DRM_FORMAT_BGRA5551: + case DRM_FORMAT_RGB565: + case DRM_FORMAT_BGR565: + case DRM_FORMAT_YUYV: + case DRM_FORMAT_YVYU: + case DRM_FORMAT_UYVY: + case DRM_FORMAT_VYUY: return 16; - case DRV_FORMAT_RGB888: - case DRV_FORMAT_BGR888: + case DRM_FORMAT_RGB888: + case DRM_FORMAT_BGR888: return 24; - case DRV_FORMAT_XRGB8888: - case DRV_FORMAT_XBGR8888: - case DRV_FORMAT_RGBX8888: - case DRV_FORMAT_BGRX8888: - case DRV_FORMAT_ARGB8888: - case DRV_FORMAT_ABGR8888: - case DRV_FORMAT_RGBA8888: - case DRV_FORMAT_BGRA8888: - case DRV_FORMAT_XRGB2101010: - case DRV_FORMAT_XBGR2101010: - case DRV_FORMAT_RGBX1010102: - case DRV_FORMAT_BGRX1010102: - case DRV_FORMAT_ARGB2101010: - case DRV_FORMAT_ABGR2101010: - case DRV_FORMAT_RGBA1010102: - case DRV_FORMAT_BGRA1010102: - case DRV_FORMAT_AYUV: + case DRM_FORMAT_XRGB8888: + case DRM_FORMAT_XBGR8888: + case DRM_FORMAT_RGBX8888: + case DRM_FORMAT_BGRX8888: + case DRM_FORMAT_ARGB8888: + case DRM_FORMAT_ABGR8888: + case DRM_FORMAT_RGBA8888: + case DRM_FORMAT_BGRA8888: + case DRM_FORMAT_XRGB2101010: + case DRM_FORMAT_XBGR2101010: + case DRM_FORMAT_RGBX1010102: + case DRM_FORMAT_BGRX1010102: + case DRM_FORMAT_ARGB2101010: + case DRM_FORMAT_ABGR2101010: + case DRM_FORMAT_RGBA1010102: + case DRM_FORMAT_BGRA1010102: + case DRM_FORMAT_AYUV: return 32; } @@ -108,7 +108,7 @@ int drv_bpp_from_format(uint32_t format, size_t plane) * buffer object. */ int drv_bo_from_format(struct bo *bo, uint32_t width, uint32_t height, - drv_format_t format) + uint32_t format) { size_t p, num_planes; @@ -11,7 +11,7 @@ int drv_bpp_from_format(uint32_t format, size_t plane); int drv_bo_from_format(struct bo *bo, uint32_t width, uint32_t height, - drv_format_t format); + uint32_t format); int drv_dumb_bo_create(struct bo *bo, uint32_t width, uint32_t height, uint32_t format, uint32_t flags); int drv_dumb_bo_destroy(struct bo *bo); @@ -203,14 +203,14 @@ 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; } @@ -226,41 +226,41 @@ const struct backend backend_i915 = .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 + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 | + {DRM_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 + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 | + {DRM_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 + {DRM_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, - {DRV_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | + {DRM_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN}, - {DRV_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING + {DRM_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, - {DRV_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | DRV_BO_USE_CURSOR + {DRM_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | DRV_BO_USE_CURSOR | DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN}, - {DRV_FORMAT_XRGB1555, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING + {DRM_FORMAT_XRGB1555, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 + {DRM_FORMAT_ARGB1555, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 + {DRM_FORMAT_RGB565, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 + {DRM_FORMAT_UYVY, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 | + {DRM_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 + {DRM_FORMAT_YUYV, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 | + {DRM_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 | + {DRM_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 | + {DRM_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_RENDERING | DRV_BO_USE_SW_READ_RARELY | + {DRM_FORMAT_YVU420, DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, } }; @@ -16,10 +16,10 @@ const struct backend backend_marvell = .bo_destroy = drv_dumb_bo_destroy, .bo_map = drv_dumb_bo_map, .format_list = { - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, } }; @@ -60,14 +60,14 @@ static void *mediatek_bo_map(struct bo *bo, struct map_info *data, size_t plane) bo->drv->fd, gem_map.offset); } -static drv_format_t mediatek_resolve_format(drv_format_t format) +static uint32_t mediatek_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; } @@ -81,23 +81,23 @@ const struct backend backend_mediatek = .bo_map = mediatek_bo_map, .resolve_format = mediatek_resolve_format, .format_list = { - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 + {DRM_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 + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 | + {DRM_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_ABGR8888, DRV_BO_USE_RENDERING + {DRM_FORMAT_ABGR8888, DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, - {DRV_FORMAT_XBGR8888, DRV_BO_USE_RENDERING + {DRM_FORMAT_XBGR8888, DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN | 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 + {DRM_FORMAT_RGB565, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, - {DRV_FORMAT_YVU420, DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | + {DRM_FORMAT_YVU420, DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, } }; @@ -24,7 +24,7 @@ static int rockchip_bo_create(struct bo *bo, uint32_t width, uint32_t height, size_t plane; struct drm_rockchip_gem_create gem_create; - if (format == DRV_FORMAT_NV12) { + if (format == DRM_FORMAT_NV12) { uint32_t w_mbs = DIV_ROUND_UP(ALIGN(width, 16), 16); uint32_t h_mbs = DIV_ROUND_UP(ALIGN(width, 16), 16); @@ -78,14 +78,14 @@ static void *rockchip_bo_map(struct bo *bo, struct map_info *data, size_t plane) bo->drv->fd, gem_map.offset); } -static drv_format_t rockchip_resolve_format(drv_format_t format) +static uint32_t rockchip_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_NV12; + return DRM_FORMAT_XBGR8888; + case DRM_FORMAT_FLEX_YCbCr_420_888: + return DRM_FORMAT_NV12; default: return format; } @@ -99,29 +99,29 @@ const struct backend backend_rockchip = .bo_map = rockchip_bo_map, .resolve_format = rockchip_resolve_format, .format_list = { - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 | + {DRM_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_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING + {DRM_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, - {DRV_FORMAT_XBGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR | + {DRM_FORMAT_XBGR8888, 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 + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 + {DRM_FORMAT_RGB565, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | 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 | + {DRM_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_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING + {DRM_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, - {DRV_FORMAT_NV12, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | + {DRM_FORMAT_NV12, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, - {DRV_FORMAT_NV12, DRV_BO_USE_SCANOUT | DRV_BO_USE_LINEAR | + {DRM_FORMAT_NV12, 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_RENDERING | DRV_BO_USE_SW_READ_RARELY | + {DRM_FORMAT_YVU420, DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, } }; @@ -135,7 +135,7 @@ static int tegra_bo_create(struct bo *bo, uint32_t width, uint32_t height, /* Encode blocklinear parameters for EGLImage creation. */ bo->tiling = (kind & 0xff) | ((block_height_log2 & 0xf) << 8); - bo->format_modifiers[0] = drv_fourcc_mod_code(NV, bo->tiling); + bo->format_modifiers[0] = fourcc_mod_code(NV, bo->tiling); } return 0; @@ -170,14 +170,14 @@ const struct backend backend_tegra = .bo_map = tegra_bo_map, .format_list = { /* Linear support */ - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR + {DRM_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_LINEAR + {DRM_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}, /* Blocklinear support */ - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, } }; @@ -14,9 +14,9 @@ const struct backend backend_udl = .bo_destroy = drv_dumb_bo_destroy, .bo_map = drv_dumb_bo_map, .format_list = { - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, } }; @@ -7,14 +7,14 @@ #include "drv_priv.h" #include "helpers.h" -static drv_format_t vgem_resolve_format(drv_format_t format) +static uint32_t vgem_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; } @@ -28,9 +28,9 @@ const struct backend backend_vgem = .bo_map = drv_dumb_bo_map, .resolve_format = vgem_resolve_format, .format_list = { - {DRV_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | DRV_BO_USE_CURSOR + {DRM_FORMAT_ABGR8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | DRV_BO_USE_CURSOR | DRV_BO_USE_SW_READ_OFTEN | DRV_BO_USE_SW_WRITE_OFTEN}, - {DRV_FORMAT_YVU420, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | + {DRM_FORMAT_YVU420, DRV_BO_USE_SCANOUT | DRV_BO_USE_RENDERING | DRV_BO_USE_SW_READ_RARELY | DRV_BO_USE_SW_WRITE_RARELY}, } }; diff --git a/virtio_gpu.c b/virtio_gpu.c index ed50bc0..20420cc 100644 --- a/virtio_gpu.c +++ b/virtio_gpu.c @@ -14,10 +14,10 @@ const struct backend backend_virtio_gpu = .bo_destroy = drv_dumb_bo_destroy, .bo_map = drv_dumb_bo_map, .format_list = { - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, - {DRV_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_XRGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_RENDERING}, + {DRM_FORMAT_ARGB8888, DRV_BO_USE_SCANOUT | DRV_BO_USE_CURSOR | DRV_BO_USE_LINEAR}, } }; |
