diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-08-01 12:59:39 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2016-08-04 12:40:43 +0000 |
commit | 28b1110370900897ab652cb420c371fab8857ad4 (patch) | |
tree | 41b32127d23b0df4f2add2a27e12dc87bddb260e /chromium/third_party/minigbm | |
parent | 399c965b6064c440ddcf4015f5f8e9d131c7a0a6 (diff) | |
download | qtwebengine-chromium-28b1110370900897ab652cb420c371fab8857ad4.tar.gz |
BASELINE: Update Chromium to 53.0.2785.41
Also adds a few extra files for extensions.
Change-Id: Iccdd55d98660903331cf8b7b29188da781830af4
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/minigbm')
-rw-r--r-- | chromium/third_party/minigbm/BUILD.gn | 5 | ||||
-rw-r--r-- | chromium/third_party/minigbm/minigbm.gyp | 1 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/cirrus.c | 12 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/evdi.c | 8 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/exynos.c | 38 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/gbm.c | 32 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/gbm.h | 47 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/gbm_priv.h | 3 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/gma500.c | 4 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/helpers.c | 16 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/i915.c | 37 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/marvell.c | 10 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/mediatek.c | 15 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/rockchip.c | 91 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/tegra.c | 19 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/udl.c | 8 | ||||
-rw-r--r-- | chromium/third_party/minigbm/src/virtio_gpu.c | 22 |
17 files changed, 244 insertions, 124 deletions
diff --git a/chromium/third_party/minigbm/BUILD.gn b/chromium/third_party/minigbm/BUILD.gn index f01cfd5b91d..002cc0c78d6 100644 --- a/chromium/third_party/minigbm/BUILD.gn +++ b/chromium/third_party/minigbm/BUILD.gn @@ -37,6 +37,7 @@ if (!use_system_minigbm) { "src/rockchip.c", "src/tegra.c", "src/udl.c", + "src/virtio_gpu.c", ] configs -= [ "//build/config/compiler:chromium_code" ] @@ -46,6 +47,10 @@ if (!use_system_minigbm) { ] public_configs = [ ":minigbm_config" ] + + # Clients need this to pick up the shared library correctly. + all_dependent_configs = + [ "//build/config/gcc:rpath_for_built_shared_libraries" ] } } diff --git a/chromium/third_party/minigbm/minigbm.gyp b/chromium/third_party/minigbm/minigbm.gyp index 2315addc513..c8c71d33655 100644 --- a/chromium/third_party/minigbm/minigbm.gyp +++ b/chromium/third_party/minigbm/minigbm.gyp @@ -28,6 +28,7 @@ 'src/rockchip.c', 'src/tegra.c', 'src/udl.c', + 'src/virtio_gpu.c', ], 'include_dirs': [ 'src', diff --git a/chromium/third_party/minigbm/src/cirrus.c b/chromium/third_party/minigbm/src/cirrus.c index 3f2f7ba00b3..cda858aa201 100644 --- a/chromium/third_party/minigbm/src/cirrus.c +++ b/chromium/third_party/minigbm/src/cirrus.c @@ -7,16 +7,16 @@ #include "gbm_priv.h" #include "helpers.h" -struct gbm_driver gbm_driver_cirrus = +const struct gbm_driver gbm_driver_cirrus = { .name = "cirrus", .bo_create = gbm_dumb_bo_create, .bo_destroy = gbm_dumb_bo_destroy, .format_list = { - {GBM_FORMAT_RGB888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_RGB888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, } }; diff --git a/chromium/third_party/minigbm/src/evdi.c b/chromium/third_party/minigbm/src/evdi.c index 428b97cb9bb..3aeee2cbd91 100644 --- a/chromium/third_party/minigbm/src/evdi.c +++ b/chromium/third_party/minigbm/src/evdi.c @@ -13,10 +13,10 @@ const struct gbm_driver gbm_driver_evdi = .bo_create = gbm_dumb_bo_create, .bo_destroy = gbm_dumb_bo_destroy, .format_list = { - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, } }; diff --git a/chromium/third_party/minigbm/src/exynos.c b/chromium/third_party/minigbm/src/exynos.c index ba960fd8a0a..e74e56db4cf 100644 --- a/chromium/third_party/minigbm/src/exynos.c +++ b/chromium/third_party/minigbm/src/exynos.c @@ -17,8 +17,9 @@ #include "helpers.h" #include "util.h" -int gbm_exynos_bo_create(struct gbm_bo *bo, uint32_t width, uint32_t height, - uint32_t format, uint32_t flags) +static int gbm_exynos_bo_create(struct gbm_bo *bo, + uint32_t width, uint32_t height, + uint32_t format, uint32_t flags) { size_t plane; @@ -33,8 +34,7 @@ int gbm_exynos_bo_create(struct gbm_bo *bo, uint32_t width, uint32_t height, bo->sizes[0] = bo->strides[0] * height + 64; bo->sizes[1] = bo->strides[1] * chroma_height + 64; bo->offsets[0] = bo->offsets[1] = 0; - } else if (format == GBM_FORMAT_XRGB8888 || format == GBM_FORMAT_ARGB8888 || - format == GBM_BO_FORMAT_XRGB8888 || format == GBM_BO_FORMAT_ARGB8888 ) { + } else if (format == GBM_FORMAT_XRGB8888 || format == GBM_FORMAT_ARGB8888) { bo->strides[0] = gbm_stride_from_format(format, width); bo->sizes[0] = height * bo->strides[0]; bo->offsets[0] = 0; @@ -44,10 +44,10 @@ int gbm_exynos_bo_create(struct gbm_bo *bo, uint32_t width, uint32_t height, return -EINVAL; } + int ret; for (plane = 0; plane < bo->num_planes; plane++) { size_t size = bo->sizes[plane]; struct drm_exynos_gem_create gem_create; - int ret; memset(&gem_create, 0, sizeof(gem_create)); gem_create.size = size; @@ -57,13 +57,29 @@ int gbm_exynos_bo_create(struct gbm_bo *bo, uint32_t width, uint32_t height, if (ret) { fprintf(stderr, "minigbm: DRM_IOCTL_EXYNOS_GEM_CREATE failed " "(size=%zu)\n", size); - return ret; + goto cleanup_planes; } bo->handles[plane].u32 = gem_create.handle; } return 0; + +cleanup_planes: + for ( ; plane != 0; plane--) { + struct drm_gem_close gem_close; + memset(&gem_close, 0, sizeof(gem_close)); + gem_close.handle = bo->handles[plane - 1].u32; + int gem_close_ret = drmIoctl(bo->gbm->fd, DRM_IOCTL_GEM_CLOSE, + &gem_close); + if (gem_close_ret) { + fprintf(stderr, + "minigbm: DRM_IOCTL_GEM_CLOSE failed: %d\n", + gem_close_ret); + } + } + + return ret; } const struct gbm_driver gbm_driver_exynos = @@ -72,11 +88,11 @@ const struct gbm_driver gbm_driver_exynos = .bo_create = gbm_exynos_bo_create, .bo_destroy = gbm_gem_bo_destroy, .format_list = { - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_NV12, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_NV12, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING}, } }; diff --git a/chromium/third_party/minigbm/src/gbm.c b/chromium/third_party/minigbm/src/gbm.c index 2408d0c0728..5c501af5693 100644 --- a/chromium/third_party/minigbm/src/gbm.c +++ b/chromium/third_party/minigbm/src/gbm.c @@ -38,6 +38,7 @@ extern struct gbm_driver gbm_driver_rockchip; extern struct gbm_driver gbm_driver_tegra; #endif extern struct gbm_driver gbm_driver_udl; +extern struct gbm_driver gbm_driver_virtio_gpu; static struct gbm_driver *gbm_get_driver(int fd) { @@ -72,6 +73,7 @@ static struct gbm_driver *gbm_get_driver(int fd) &gbm_driver_tegra, #endif &gbm_driver_udl, + &gbm_driver_virtio_gpu, }; for(i = 0; i < ARRAY_SIZE(driver_list); i++) @@ -103,11 +105,6 @@ gbm_device_is_format_supported(struct gbm_device *gbm, { unsigned i; - if (format == GBM_BO_FORMAT_XRGB8888) - format = GBM_FORMAT_XRGB8888; - if (format == GBM_BO_FORMAT_ARGB8888) - format = GBM_FORMAT_ARGB8888; - if (usage & GBM_BO_USE_CURSOR && usage & GBM_BO_USE_RENDERING) return 0; @@ -267,11 +264,13 @@ gbm_bo_import(struct gbm_device *gbm, uint32_t type, return NULL; bo = gbm_bo_new(gbm, fd_data->width, fd_data->height, fd_data->format); - bo->strides[0] = fd_data->stride; - if (!bo) return NULL; + bo->strides[0] = fd_data->stride; + bo->sizes[0] = fd_data->height * fd_data->stride; + + memset(&prime_handle, 0, sizeof(prime_handle)); prime_handle.fd = fd_data->fd; ret = drmIoctl(bo->gbm->fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &prime_handle); @@ -317,6 +316,12 @@ gbm_bo_get_format(struct gbm_bo *bo) return bo->format; } +PUBLIC uint64_t +gbm_bo_get_format_modifier(struct gbm_bo *bo) +{ + return gbm_bo_get_plane_format_modifier(bo, 0); +} + PUBLIC struct gbm_device * gbm_bo_get_device(struct gbm_bo *bo) { @@ -348,6 +353,10 @@ gbm_bo_get_plane_handle(struct gbm_bo *bo, size_t plane) return bo->handles[plane]; } +#ifndef DRM_RDWR +#define DRM_RDWR O_RDWR +#endif + PUBLIC int gbm_bo_get_plane_fd(struct gbm_bo *bo, size_t plane) { @@ -357,7 +366,7 @@ gbm_bo_get_plane_fd(struct gbm_bo *bo, size_t plane) if (drmPrimeHandleToFD( gbm_device_get_fd(bo->gbm), gbm_bo_get_plane_handle(bo, plane).u32, - DRM_CLOEXEC, + DRM_CLOEXEC | DRM_RDWR, &fd)) return -1; else @@ -385,6 +394,13 @@ gbm_bo_get_plane_stride(struct gbm_bo *bo, size_t plane) return bo->strides[plane]; } +PUBLIC uint64_t +gbm_bo_get_plane_format_modifier(struct gbm_bo *bo, size_t plane) +{ + assert(plane < bo->num_planes); + return bo->format_modifiers[plane]; +} + PUBLIC void gbm_bo_set_user_data(struct gbm_bo *bo, void *data, void (*destroy_user_data)(struct gbm_bo *, void *)) diff --git a/chromium/third_party/minigbm/src/gbm.h b/chromium/third_party/minigbm/src/gbm.h index a40d4cda241..8ec9349b4f3 100644 --- a/chromium/third_party/minigbm/src/gbm.h +++ b/chromium/third_party/minigbm/src/gbm.h @@ -68,14 +68,6 @@ union gbm_bo_handle { uint64_t u64; }; -/** Format of the allocated buffer */ -enum gbm_bo_format { - /** RGB with 8 bits per channel in a 32 bit value */ - GBM_BO_FORMAT_XRGB8888, - /** ARGB with 8 bits per channel in a 32 bit value */ - GBM_BO_FORMAT_ARGB8888 -}; - #define __gbm_fourcc_code(a,b,c,d) ((uint32_t)(a) | ((uint32_t)(b) << 8) | \ ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24)) @@ -84,6 +76,13 @@ enum gbm_bo_format { /* color index */ #define GBM_FORMAT_C8 __gbm_fourcc_code('C', '8', ' ', ' ') /* [7:0] C */ +/* 8 bpp Red */ +#define GBM_FORMAT_R8 __gbm_fourcc_code('R', '8', ' ', ' ') /* [7:0] R */ + +/* 16 bpp RG */ +#define GBM_FORMAT_RG88 __gbm_fourcc_code('R', 'G', '8', '8') /* [15:0] R:G 8:8 little endian */ +#define GBM_FORMAT_GR88 __gbm_fourcc_code('G', 'R', '8', '8') /* [15:0] G:R 8:8 little endian */ + /* 8 bpp RGB */ #define GBM_FORMAT_RGB332 __gbm_fourcc_code('R', 'G', 'B', '8') /* [7:0] R:G:B 3:3:2 */ #define GBM_FORMAT_BGR233 __gbm_fourcc_code('B', 'G', 'R', '8') /* [7:0] B:G:R 2:3:3 */ @@ -177,6 +176,28 @@ enum gbm_bo_format { #define GBM_FORMAT_YUV444 __gbm_fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */ #define GBM_FORMAT_YVU444 __gbm_fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */ +/* + * Format Modifiers: + * + * Format modifiers describe, typically, a re-ordering or modification + * of the data in a plane of an FB. This can be used to express tiled/ + * swizzled formats, or compression, or a combination of the two. + * + * The upper 8 bits of the format modifier are a vendor-id as assigned + * below. The lower 56 bits are assigned as vendor sees fit. + */ + +/* Vendor Ids: */ +#define GBM_FORMAT_MOD_NONE 0 +#define GBM_FORMAT_MOD_VENDOR_INTEL 0x01 +#define GBM_FORMAT_MOD_VENDOR_AMD 0x02 +#define GBM_FORMAT_MOD_VENDOR_NV 0x03 +#define GBM_FORMAT_MOD_VENDOR_SAMSUNG 0x04 +#define GBM_FORMAT_MOD_VENDOR_QCOM 0x05 +/* add more to the end as needed */ + +#define gbm_fourcc_mod_code(vendor, val) \ + ((((__u64)GBM_FORMAT_MOD_VENDOR_## vendor) << 56) | (val & 0x00ffffffffffffffULL)) /** * Flags to indicate the intended use for the buffer - these are passed into @@ -205,8 +226,7 @@ enum gbm_bo_flags { */ GBM_BO_USE_RENDERING = (1 << 2), /** - * Buffer can be used for gbm_bo_write. This is guaranteed to work - * with GBM_BO_USE_CURSOR. but may not work for other combinations. + * Deprecated */ GBM_BO_USE_WRITE = (1 << 3), /** @@ -271,6 +291,9 @@ gbm_bo_get_stride_or_tiling(struct gbm_bo *bo); uint32_t gbm_bo_get_format(struct gbm_bo *bo); +uint64_t +gbm_bo_get_format_modifier(struct gbm_bo *bo); + struct gbm_device * gbm_bo_get_device(struct gbm_bo *bo); @@ -298,8 +321,8 @@ gbm_bo_get_plane_size(struct gbm_bo *bo, size_t plane); uint32_t gbm_bo_get_plane_stride(struct gbm_bo *bo, size_t plane); -int -gbm_bo_write(struct gbm_bo *bo, const void *buf, size_t count); +uint64_t +gbm_bo_get_plane_format_modifier(struct gbm_bo *bo, size_t plane); void gbm_bo_set_user_data(struct gbm_bo *bo, void *data, diff --git a/chromium/third_party/minigbm/src/gbm_priv.h b/chromium/third_party/minigbm/src/gbm_priv.h index 187970460ce..f8373fc3959 100644 --- a/chromium/third_party/minigbm/src/gbm_priv.h +++ b/chromium/third_party/minigbm/src/gbm_priv.h @@ -37,6 +37,7 @@ struct gbm_bo uint32_t offsets[GBM_MAX_PLANES]; uint32_t sizes[GBM_MAX_PLANES]; uint32_t strides[GBM_MAX_PLANES]; + uint64_t format_modifiers[GBM_MAX_PLANES]; void *priv; void *user_data; void (*destroy_user_data)(struct gbm_bo *, void *); @@ -53,7 +54,7 @@ struct gbm_driver uint32_t format; enum gbm_bo_flags usage; } - format_list[16]; + format_list[18]; }; #endif diff --git a/chromium/third_party/minigbm/src/gma500.c b/chromium/third_party/minigbm/src/gma500.c index 95d663c5db1..07e5c5c8710 100644 --- a/chromium/third_party/minigbm/src/gma500.c +++ b/chromium/third_party/minigbm/src/gma500.c @@ -7,12 +7,12 @@ #include "gbm_priv.h" #include "helpers.h" -struct gbm_driver gbm_driver_gma500 = +const struct gbm_driver gbm_driver_gma500 = { .name = "gma500", .bo_create = gbm_dumb_bo_create, .bo_destroy = gbm_dumb_bo_destroy, .format_list = { - {GBM_FORMAT_RGBX8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, + {GBM_FORMAT_RGBX8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, } }; diff --git a/chromium/third_party/minigbm/src/helpers.c b/chromium/third_party/minigbm/src/helpers.c index 1ad10ce8ad4..2cb0408642c 100644 --- a/chromium/third_party/minigbm/src/helpers.c +++ b/chromium/third_party/minigbm/src/helpers.c @@ -17,14 +17,12 @@ size_t gbm_num_planes_from_format(uint32_t format) { - if (format == GBM_BO_FORMAT_XRGB8888) - format = GBM_FORMAT_XRGB8888; - if (format == GBM_BO_FORMAT_ARGB8888) - format = GBM_FORMAT_ARGB8888; - switch(format) { case GBM_FORMAT_C8: + case GBM_FORMAT_R8: + case GBM_FORMAT_RG88: + case GBM_FORMAT_GR88: case GBM_FORMAT_RGB332: case GBM_FORMAT_BGR233: case GBM_FORMAT_XRGB4444: @@ -79,14 +77,10 @@ size_t gbm_num_planes_from_format(uint32_t format) int gbm_bpp_from_format(uint32_t format) { - if (format == GBM_BO_FORMAT_XRGB8888) - format = GBM_FORMAT_XRGB8888; - if (format == GBM_BO_FORMAT_ARGB8888) - format = GBM_FORMAT_ARGB8888; - switch(format) { case GBM_FORMAT_C8: + case GBM_FORMAT_R8: case GBM_FORMAT_RGB332: case GBM_FORMAT_BGR233: return 8; @@ -94,6 +88,8 @@ int gbm_bpp_from_format(uint32_t format) case GBM_FORMAT_NV12: return 12; + case GBM_FORMAT_RG88: + case GBM_FORMAT_GR88: case GBM_FORMAT_XRGB4444: case GBM_FORMAT_XBGR4444: case GBM_FORMAT_RGBX4444: diff --git a/chromium/third_party/minigbm/src/i915.c b/chromium/third_party/minigbm/src/i915.c index 6616a54b1d3..88d55e58f5a 100644 --- a/chromium/third_party/minigbm/src/i915.c +++ b/chromium/third_party/minigbm/src/i915.c @@ -35,7 +35,7 @@ static int get_gen(int device_id) return 4; } -int gbm_i915_init(struct gbm_device *gbm) +static int gbm_i915_init(struct gbm_device *gbm) { struct gbm_i915_device *i915_gbm; drm_i915_getparam_t get_param; @@ -63,7 +63,7 @@ int gbm_i915_init(struct gbm_device *gbm) return 0; } -void gbm_i915_close(struct gbm_device *gbm) +static void gbm_i915_close(struct gbm_device *gbm) { free(gbm->priv); gbm->priv = NULL; @@ -119,8 +119,9 @@ static int i915_verify_dimensions(struct gbm_device *gbm, uint32_t stride, return 1; } -int gbm_i915_bo_create(struct gbm_bo *bo, uint32_t width, uint32_t height, - uint32_t format, uint32_t flags) +static int gbm_i915_bo_create(struct gbm_bo *bo, + uint32_t width, uint32_t height, + uint32_t format, uint32_t flags) { struct gbm_device *gbm = bo->gbm; int bpp = gbm_stride_from_format(format, 1); @@ -191,19 +192,21 @@ const struct gbm_driver gbm_driver_i915 = .bo_create = gbm_i915_bo_create, .bo_destroy = gbm_gem_bo_destroy, .format_list = { - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_XBGR8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_ABGR8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_XRGB1555, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_ARGB1555, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_RGB565, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_UYVY, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_UYVY, GBM_BO_USE_SCANOUT | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_YUYV, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_YUYV, GBM_BO_USE_SCANOUT | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_XBGR8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ABGR8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB1555, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ARGB1555, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_RGB565, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_UYVY, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_UYVY, GBM_BO_USE_SCANOUT | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_YUYV, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_YUYV, GBM_BO_USE_SCANOUT | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_R8, GBM_BO_USE_RENDERING | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_GR88, GBM_BO_USE_RENDERING | GBM_BO_USE_LINEAR}, } }; diff --git a/chromium/third_party/minigbm/src/marvell.c b/chromium/third_party/minigbm/src/marvell.c index 6a5b4427c18..979cf5ad1b5 100644 --- a/chromium/third_party/minigbm/src/marvell.c +++ b/chromium/third_party/minigbm/src/marvell.c @@ -9,16 +9,16 @@ #include "gbm_priv.h" #include "helpers.h" -struct gbm_driver gbm_driver_marvell = +const struct gbm_driver gbm_driver_marvell = { .name = "marvell", .bo_create = gbm_dumb_bo_create, .bo_destroy = gbm_dumb_bo_destroy, .format_list = { - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, } }; diff --git a/chromium/third_party/minigbm/src/mediatek.c b/chromium/third_party/minigbm/src/mediatek.c index cfc166a1814..3f418742e0e 100644 --- a/chromium/third_party/minigbm/src/mediatek.c +++ b/chromium/third_party/minigbm/src/mediatek.c @@ -14,8 +14,9 @@ #include "gbm_priv.h" #include "helpers.h" -int gbm_mediatek_bo_create(struct gbm_bo *bo, uint32_t width, uint32_t height, - uint32_t format, uint32_t flags) +static int gbm_mediatek_bo_create(struct gbm_bo *bo, + uint32_t width, uint32_t height, + uint32_t format, uint32_t flags) { size_t size; struct drm_mtk_gem_create gem_create; @@ -41,16 +42,16 @@ int gbm_mediatek_bo_create(struct gbm_bo *bo, uint32_t width, uint32_t height, return 0; } -struct gbm_driver gbm_driver_mediatek = +const struct gbm_driver gbm_driver_mediatek = { .name = "mediatek", .bo_create = gbm_mediatek_bo_create, .bo_destroy = gbm_gem_bo_destroy, .format_list = { - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, } }; diff --git a/chromium/third_party/minigbm/src/rockchip.c b/chromium/third_party/minigbm/src/rockchip.c index e43c760d844..0c0e0a8e53c 100644 --- a/chromium/third_party/minigbm/src/rockchip.c +++ b/chromium/third_party/minigbm/src/rockchip.c @@ -6,6 +6,8 @@ #ifdef GBM_ROCKCHIP +#include <assert.h> +#include <errno.h> #include <stdio.h> #include <string.h> #include <xf86drm.h> @@ -13,45 +15,88 @@ #include "gbm_priv.h" #include "helpers.h" +#include "util.h" -int gbm_rockchip_bo_create(struct gbm_bo *bo, uint32_t width, uint32_t height, - uint32_t format, uint32_t flags) +static int gbm_rockchip_bo_create(struct gbm_bo *bo, + uint32_t width, uint32_t height, + uint32_t format, uint32_t flags) { - size_t size; - struct drm_rockchip_gem_create gem_create; + size_t plane; + + switch (format) { + case GBM_FORMAT_NV12: + width = ALIGN(width, 4); + height = ALIGN(height, 4); + bo->strides[0] = bo->strides[1] = width; + bo->sizes[0] = height * bo->strides[0]; + bo->sizes[1] = height * bo->strides[1] / 2; + bo->offsets[0] = bo->offsets[1] = 0; + break; + case GBM_FORMAT_XRGB8888: + case GBM_FORMAT_ARGB8888: + case GBM_FORMAT_ABGR8888: + bo->strides[0] = gbm_stride_from_format(format, width); + bo->sizes[0] = height * bo->strides[0]; + bo->offsets[0] = 0; + break; + default: + fprintf(stderr, "minigbm: rockchip: unsupported format %4.4s\n", + (char*)&format); + assert(0); + return -EINVAL; + } + int ret; + for (plane = 0; plane < bo->num_planes; plane++) { + size_t size = bo->sizes[plane]; + struct drm_rockchip_gem_create gem_create; - bo->strides[0] = gbm_stride_from_format(format, width); - size = height * bo->strides[0]; + memset(&gem_create, 0, sizeof(gem_create)); + gem_create.size = size; - memset(&gem_create, 0, sizeof(gem_create)); - gem_create.size = size; + ret = drmIoctl(bo->gbm->fd, DRM_IOCTL_ROCKCHIP_GEM_CREATE, + &gem_create); + if (ret) { + fprintf(stderr, "minigbm: DRM_IOCTL_ROCKCHIP_GEM_CREATE failed " + "(size=%zu)\n", size); + goto cleanup_planes; + } - ret = drmIoctl(bo->gbm->fd, DRM_IOCTL_ROCKCHIP_GEM_CREATE, &gem_create); - if (ret) { - fprintf(stderr, "minigbm: DRM_IOCTL_ROCKCHIP_GEM_CREATE failed " - "(size=%zu)\n", size); - return ret; + bo->handles[plane].u32 = gem_create.handle; } - bo->handles[0].u32 = gem_create.handle; - bo->sizes[0] = size; - bo->offsets[0] = 0; - return 0; + +cleanup_planes: + for ( ; plane != 0; plane--) { + struct drm_gem_close gem_close; + memset(&gem_close, 0, sizeof(gem_close)); + gem_close.handle = bo->handles[plane - 1].u32; + int gem_close_ret = drmIoctl(bo->gbm->fd, DRM_IOCTL_GEM_CLOSE, + &gem_close); + if (gem_close_ret) { + fprintf(stderr, + "minigbm: DRM_IOCTL_GEM_CLOSE failed: %d\n", + gem_close_ret); + } + } + + return ret; } -struct gbm_driver gbm_driver_rockchip = +const struct gbm_driver gbm_driver_rockchip = { .name = "rockchip", .bo_create = gbm_rockchip_bo_create, .bo_destroy = gbm_gem_bo_destroy, .format_list = { - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_ABGR8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ABGR8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_NV12, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_NV12, GBM_BO_USE_SCANOUT | GBM_BO_USE_LINEAR}, } }; diff --git a/chromium/third_party/minigbm/src/tegra.c b/chromium/third_party/minigbm/src/tegra.c index 6e9cba1e1eb..69c068b5276 100644 --- a/chromium/third_party/minigbm/src/tegra.c +++ b/chromium/third_party/minigbm/src/tegra.c @@ -131,32 +131,23 @@ static int gbm_tegra_bo_create(struct gbm_bo *bo, uint32_t width, } /* Encode blocklinear parameters for EGLImage creation. */ - - /* XXX Bringup hack: If the highest order bit is set in - * EGL_DMA_BUF_PLANE0_PITCH_EXT, Nvidia driver treats it as - * a hint that the buffer is tiled, and the remaining bits in - * the pitch attribute are treated as vendor specific tiling - * arguments. Using this hack means that we don't need to add - * a new FOURCC format, or EGL_DMA_BUF_PLANE0_TILING_EXT - * attribute to the dma-buf import extension. - */ - bo->tiling = (1 << 31) | - (kind & 0xff) | + bo->tiling = (kind & 0xff) | ((block_height_log2 & 0xf) << 8); + bo->format_modifiers[0] = gbm_fourcc_mod_code(NV, bo->tiling); } return 0; } -struct gbm_driver gbm_driver_tegra = +const struct gbm_driver gbm_driver_tegra = { .name = "tegra", .bo_create = gbm_tegra_bo_create, .bo_destroy = gbm_gem_bo_destroy, .format_list = { /* Linear support */ - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, /* Blocklinear support */ {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING}, {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING}, diff --git a/chromium/third_party/minigbm/src/udl.c b/chromium/third_party/minigbm/src/udl.c index 4f00faf95b6..58a440c27d0 100644 --- a/chromium/third_party/minigbm/src/udl.c +++ b/chromium/third_party/minigbm/src/udl.c @@ -13,9 +13,9 @@ const struct gbm_driver gbm_driver_udl = .bo_create = gbm_dumb_bo_create, .bo_destroy = gbm_dumb_bo_destroy, .format_list = { - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE}, - {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, } }; diff --git a/chromium/third_party/minigbm/src/virtio_gpu.c b/chromium/third_party/minigbm/src/virtio_gpu.c new file mode 100644 index 00000000000..14259dc6e2f --- /dev/null +++ b/chromium/third_party/minigbm/src/virtio_gpu.c @@ -0,0 +1,22 @@ +/* + * Copyright 2016 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "gbm_priv.h" +#include "helpers.h" + +const struct gbm_driver gbm_driver_virtio_gpu = +{ + .name = "virtio_gpu", + .bo_create = gbm_dumb_bo_create, + .bo_destroy = gbm_dumb_bo_destroy, + .format_list = { + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_XRGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_RENDERING}, + {GBM_FORMAT_ARGB8888, GBM_BO_USE_SCANOUT | GBM_BO_USE_CURSOR | GBM_BO_USE_LINEAR}, + } +}; + |