2 * Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
14 int gbm_bpp_from_format(uint32_t format)
16 if (format == GBM_BO_FORMAT_XRGB8888)
17 format = GBM_FORMAT_XRGB8888;
18 if (format == GBM_BO_FORMAT_ARGB8888)
19 format = GBM_FORMAT_ARGB8888;
24 case GBM_FORMAT_RGB332:
25 case GBM_FORMAT_BGR233:
28 case GBM_FORMAT_XRGB4444:
29 case GBM_FORMAT_XBGR4444:
30 case GBM_FORMAT_RGBX4444:
31 case GBM_FORMAT_BGRX4444:
32 case GBM_FORMAT_ARGB4444:
33 case GBM_FORMAT_ABGR4444:
34 case GBM_FORMAT_RGBA4444:
35 case GBM_FORMAT_BGRA4444:
36 case GBM_FORMAT_XRGB1555:
37 case GBM_FORMAT_XBGR1555:
38 case GBM_FORMAT_RGBX5551:
39 case GBM_FORMAT_BGRX5551:
40 case GBM_FORMAT_ARGB1555:
41 case GBM_FORMAT_ABGR1555:
42 case GBM_FORMAT_RGBA5551:
43 case GBM_FORMAT_BGRA5551:
44 case GBM_FORMAT_RGB565:
45 case GBM_FORMAT_BGR565:
48 case GBM_FORMAT_RGB888:
49 case GBM_FORMAT_BGR888:
52 case GBM_FORMAT_XRGB8888:
53 case GBM_FORMAT_XBGR8888:
54 case GBM_FORMAT_RGBX8888:
55 case GBM_FORMAT_BGRX8888:
56 case GBM_FORMAT_ARGB8888:
57 case GBM_FORMAT_ABGR8888:
58 case GBM_FORMAT_RGBA8888:
59 case GBM_FORMAT_BGRA8888:
60 case GBM_FORMAT_XRGB2101010:
61 case GBM_FORMAT_XBGR2101010:
62 case GBM_FORMAT_RGBX1010102:
63 case GBM_FORMAT_BGRX1010102:
64 case GBM_FORMAT_ARGB2101010:
65 case GBM_FORMAT_ABGR2101010:
66 case GBM_FORMAT_RGBA1010102:
67 case GBM_FORMAT_BGRA1010102:
76 printf("UNKNOWN FORMAT %d\n", format);
80 int gbm_bytes_from_format(uint32_t format)
82 return gbm_bpp_from_format(format) / 8;
85 int gbm_is_format_supported(struct gbm_bo *bo)
90 int gbm_dumb_bo_create(struct gbm_bo *bo, uint32_t width, uint32_t height, uint32_t format, uint32_t flags)
92 struct drm_mode_create_dumb create_dumb;
95 memset(&create_dumb, 0, sizeof(create_dumb));
96 create_dumb.height = height;
97 create_dumb.width = width;
98 create_dumb.bpp = gbm_bpp_from_format(format);
99 create_dumb.flags = 0;
101 ret = drmIoctl(bo->gbm->fd, DRM_IOCTL_MODE_CREATE_DUMB, &create_dumb);
105 bo->handle.u32 = create_dumb.handle;
106 bo->size = create_dumb.size;
107 bo->stride = create_dumb.pitch;
112 int gbm_dumb_bo_destroy(struct gbm_bo *bo)
114 struct drm_mode_destroy_dumb destroy_dumb;
117 memset(&destroy_dumb, 0, sizeof(destroy_dumb));
118 destroy_dumb.handle = bo->handle.u32;
120 ret = drmIoctl(bo->gbm->fd, DRM_IOCTL_MODE_DESTROY_DUMB, &destroy_dumb);
127 int gbm_gem_bo_destroy(struct gbm_bo *bo)
129 struct drm_gem_close gem_close;
132 memset(&gem_close, 0, sizeof(gem_close));
133 gem_close.handle = bo->handle.u32;
135 ret = drmIoctl(bo->gbm->fd, DRM_IOCTL_GEM_CLOSE, &gem_close);