gbm.h revision 496bf3822a724127b2632596dc45648fdeda0afb
1eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke/* 2eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * Copyright © 2011 Intel Corporation 3eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * 4eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * Permission is hereby granted, free of charge, to any person obtaining a 5eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * copy of this software and associated documentation files (the "Software"), 6eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * to deal in the Software without restriction, including without limitation 7eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * and/or sell copies of the Software, and to permit persons to whom the 9eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * Software is furnished to do so, subject to the following conditions: 10eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * 11eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * The above copyright notice and this permission notice (including the next 12eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * paragraph) shall be included in all copies or substantial portions of the 13eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * Software. 14eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * 15eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * DEALINGS IN THE SOFTWARE. 23eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * 24eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * Authors: 25eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke * Benjamin Franzke <benjaminfranzke@googlemail.com> 26eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke */ 27eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 28eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke#ifndef _GBM_H_ 29eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke#define _GBM_H_ 30eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 31496bf3822a724127b2632596dc45648fdeda0afbJørgen Lind#ifdef __cplusplus 32496bf3822a724127b2632596dc45648fdeda0afbJørgen Lindextern "C" { 33496bf3822a724127b2632596dc45648fdeda0afbJørgen Lind#endif 34496bf3822a724127b2632596dc45648fdeda0afbJørgen Lind 35496bf3822a724127b2632596dc45648fdeda0afbJørgen Lind 36eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke#define __GBM__ 1 37eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 38eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke#include <stdint.h> 39eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 40eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkestruct gbm_device; 41eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkestruct gbm_bo; 42eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 43eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkeunion gbm_bo_handle { 44eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke void *ptr; 45eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke int32_t s32; 46eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke uint32_t u32; 47eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke int64_t s64; 48eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke uint64_t u64; 49eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke}; 50eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 51eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkeenum gbm_bo_format { 52eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke GBM_BO_FORMAT_XRGB8888, 53eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke GBM_BO_FORMAT_ARGB8888, 54eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke}; 55eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 56eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkeenum gbm_bo_flags { 57eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke GBM_BO_USE_SCANOUT = (1 << 0), 58eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke GBM_BO_USE_CURSOR_64X64 = (1 << 1), 59eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke GBM_BO_USE_RENDERING = (1 << 2), 60eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke}; 61eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 62eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkeint 63eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_device_get_fd(struct gbm_device *gbm); 64eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 65eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkeconst char * 66eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_device_get_backend_name(struct gbm_device *gbm); 67eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 68eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkeint 69eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_device_is_format_supported(struct gbm_device *gbm, 70eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke enum gbm_bo_format format, 71eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke uint32_t usage); 72eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 73eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkevoid 74eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_device_destroy(struct gbm_device *gbm); 75eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 76eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkestruct gbm_device * 77eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_create_device(int fd); 78eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 79eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkestruct gbm_bo * 80eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_bo_create(struct gbm_device *gbm, 81eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke uint32_t width, uint32_t height, 82eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke enum gbm_bo_format format, uint32_t flags); 83eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 84eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkestruct gbm_bo * 85eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_bo_create_from_egl_image(struct gbm_device *gbm, 86eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke void *egl_dpy, void *egl_img, 87eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke uint32_t width, uint32_t height, 88eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke uint32_t usage); 89eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 90eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkeuint32_t 91eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_bo_get_width(struct gbm_bo *bo); 92eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 93eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkeuint32_t 94eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_bo_get_height(struct gbm_bo *bo); 95eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 96eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkeuint32_t 97eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_bo_get_pitch(struct gbm_bo *bo); 98eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 99eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkeunion gbm_bo_handle 100eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_bo_get_handle(struct gbm_bo *bo); 101eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 102eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkevoid 103eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzkegbm_bo_destroy(struct gbm_bo *bo); 104eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke 105496bf3822a724127b2632596dc45648fdeda0afbJørgen Lind#ifdef __cplusplus 106496bf3822a724127b2632596dc45648fdeda0afbJørgen Lind} 107496bf3822a724127b2632596dc45648fdeda0afbJørgen Lind#endif 108496bf3822a724127b2632596dc45648fdeda0afbJørgen Lind 109eddcecbf74da26716509c047b95e85b00c12bab4Benjamin Franzke#endif 110