1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright © 2011 Intel Corporation 3*61046927SAndroid Build Coastguard Worker * 4*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*61046927SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 6*61046927SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 7*61046927SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*61046927SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 9*61046927SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 10*61046927SAndroid Build Coastguard Worker * 11*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 12*61046927SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 13*61046927SAndroid Build Coastguard Worker * Software. 14*61046927SAndroid Build Coastguard Worker * 15*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16*61046927SAndroid Build Coastguard Worker * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17*61046927SAndroid Build Coastguard Worker * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18*61046927SAndroid Build Coastguard Worker * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19*61046927SAndroid Build Coastguard Worker * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20*61046927SAndroid Build Coastguard Worker * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21*61046927SAndroid Build Coastguard Worker * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22*61046927SAndroid Build Coastguard Worker * DEALINGS IN THE SOFTWARE. 23*61046927SAndroid Build Coastguard Worker * 24*61046927SAndroid Build Coastguard Worker * Authors: 25*61046927SAndroid Build Coastguard Worker * Benjamin Franzke <[email protected]> 26*61046927SAndroid Build Coastguard Worker */ 27*61046927SAndroid Build Coastguard Worker 28*61046927SAndroid Build Coastguard Worker #ifndef _GBM_H_ 29*61046927SAndroid Build Coastguard Worker #define _GBM_H_ 30*61046927SAndroid Build Coastguard Worker 31*61046927SAndroid Build Coastguard Worker #define __GBM__ 1 32*61046927SAndroid Build Coastguard Worker 33*61046927SAndroid Build Coastguard Worker #include <stddef.h> 34*61046927SAndroid Build Coastguard Worker #include <stdint.h> 35*61046927SAndroid Build Coastguard Worker 36*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 37*61046927SAndroid Build Coastguard Worker extern "C" { 38*61046927SAndroid Build Coastguard Worker #endif 39*61046927SAndroid Build Coastguard Worker 40*61046927SAndroid Build Coastguard Worker 41*61046927SAndroid Build Coastguard Worker /** 42*61046927SAndroid Build Coastguard Worker * \file gbm.h 43*61046927SAndroid Build Coastguard Worker * \brief Generic Buffer Manager 44*61046927SAndroid Build Coastguard Worker */ 45*61046927SAndroid Build Coastguard Worker 46*61046927SAndroid Build Coastguard Worker struct gbm_device; 47*61046927SAndroid Build Coastguard Worker struct gbm_bo; 48*61046927SAndroid Build Coastguard Worker struct gbm_surface; 49*61046927SAndroid Build Coastguard Worker 50*61046927SAndroid Build Coastguard Worker /** 51*61046927SAndroid Build Coastguard Worker * \mainpage The Generic Buffer Manager 52*61046927SAndroid Build Coastguard Worker * 53*61046927SAndroid Build Coastguard Worker * This module provides an abstraction that the caller can use to request a 54*61046927SAndroid Build Coastguard Worker * buffer from the underlying memory management system for the platform. 55*61046927SAndroid Build Coastguard Worker * 56*61046927SAndroid Build Coastguard Worker * This allows the creation of portable code whilst still allowing access to 57*61046927SAndroid Build Coastguard Worker * the underlying memory manager. 58*61046927SAndroid Build Coastguard Worker */ 59*61046927SAndroid Build Coastguard Worker 60*61046927SAndroid Build Coastguard Worker /** 61*61046927SAndroid Build Coastguard Worker * Abstraction representing the handle to a buffer allocated by the 62*61046927SAndroid Build Coastguard Worker * manager 63*61046927SAndroid Build Coastguard Worker */ 64*61046927SAndroid Build Coastguard Worker union gbm_bo_handle { 65*61046927SAndroid Build Coastguard Worker void *ptr; 66*61046927SAndroid Build Coastguard Worker int32_t s32; 67*61046927SAndroid Build Coastguard Worker uint32_t u32; 68*61046927SAndroid Build Coastguard Worker int64_t s64; 69*61046927SAndroid Build Coastguard Worker uint64_t u64; 70*61046927SAndroid Build Coastguard Worker }; 71*61046927SAndroid Build Coastguard Worker 72*61046927SAndroid Build Coastguard Worker /** Format of the allocated buffer */ 73*61046927SAndroid Build Coastguard Worker enum gbm_bo_format { 74*61046927SAndroid Build Coastguard Worker /** RGB with 8 bits per channel in a 32 bit value */ 75*61046927SAndroid Build Coastguard Worker GBM_BO_FORMAT_XRGB8888, 76*61046927SAndroid Build Coastguard Worker /** ARGB with 8 bits per channel in a 32 bit value */ 77*61046927SAndroid Build Coastguard Worker GBM_BO_FORMAT_ARGB8888 78*61046927SAndroid Build Coastguard Worker }; 79*61046927SAndroid Build Coastguard Worker 80*61046927SAndroid Build Coastguard Worker 81*61046927SAndroid Build Coastguard Worker /** 82*61046927SAndroid Build Coastguard Worker * The FourCC format codes are taken from the drm_fourcc.h definition, and 83*61046927SAndroid Build Coastguard Worker * re-namespaced. New GBM formats must not be added, unless they are 84*61046927SAndroid Build Coastguard Worker * identical ports from drm_fourcc. 85*61046927SAndroid Build Coastguard Worker */ 86*61046927SAndroid Build Coastguard Worker #define __gbm_fourcc_code(a,b,c,d) ((uint32_t)(a) | ((uint32_t)(b) << 8) | \ 87*61046927SAndroid Build Coastguard Worker ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24)) 88*61046927SAndroid Build Coastguard Worker 89*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BIG_ENDIAN (1<<31) /* format is big endian instead of little endian */ 90*61046927SAndroid Build Coastguard Worker 91*61046927SAndroid Build Coastguard Worker /* color index */ 92*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_C8 __gbm_fourcc_code('C', '8', ' ', ' ') /* [7:0] C */ 93*61046927SAndroid Build Coastguard Worker 94*61046927SAndroid Build Coastguard Worker /* 8 bpp Red */ 95*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_R8 __gbm_fourcc_code('R', '8', ' ', ' ') /* [7:0] R */ 96*61046927SAndroid Build Coastguard Worker 97*61046927SAndroid Build Coastguard Worker /* 16 bpp Red */ 98*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_R16 __gbm_fourcc_code('R', '1', '6', ' ') /* [15:0] R little endian */ 99*61046927SAndroid Build Coastguard Worker 100*61046927SAndroid Build Coastguard Worker /* 16 bpp RG */ 101*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_GR88 __gbm_fourcc_code('G', 'R', '8', '8') /* [15:0] G:R 8:8 little endian */ 102*61046927SAndroid Build Coastguard Worker 103*61046927SAndroid Build Coastguard Worker /* 32 bpp RG */ 104*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RG1616 __gbm_fourcc_code('R', 'G', '3', '2') /* [31:0] R:G 16:16 little endian */ 105*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_GR1616 __gbm_fourcc_code('G', 'R', '3', '2') /* [31:0] G:R 16:16 little endian */ 106*61046927SAndroid Build Coastguard Worker 107*61046927SAndroid Build Coastguard Worker /* 8 bpp RGB */ 108*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGB332 __gbm_fourcc_code('R', 'G', 'B', '8') /* [7:0] R:G:B 3:3:2 */ 109*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGR233 __gbm_fourcc_code('B', 'G', 'R', '8') /* [7:0] B:G:R 2:3:3 */ 110*61046927SAndroid Build Coastguard Worker 111*61046927SAndroid Build Coastguard Worker /* 16 bpp RGB */ 112*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_XRGB4444 __gbm_fourcc_code('X', 'R', '1', '2') /* [15:0] x:R:G:B 4:4:4:4 little endian */ 113*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_XBGR4444 __gbm_fourcc_code('X', 'B', '1', '2') /* [15:0] x:B:G:R 4:4:4:4 little endian */ 114*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGBX4444 __gbm_fourcc_code('R', 'X', '1', '2') /* [15:0] R:G:B:x 4:4:4:4 little endian */ 115*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGRX4444 __gbm_fourcc_code('B', 'X', '1', '2') /* [15:0] B:G:R:x 4:4:4:4 little endian */ 116*61046927SAndroid Build Coastguard Worker 117*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_ARGB4444 __gbm_fourcc_code('A', 'R', '1', '2') /* [15:0] A:R:G:B 4:4:4:4 little endian */ 118*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_ABGR4444 __gbm_fourcc_code('A', 'B', '1', '2') /* [15:0] A:B:G:R 4:4:4:4 little endian */ 119*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGBA4444 __gbm_fourcc_code('R', 'A', '1', '2') /* [15:0] R:G:B:A 4:4:4:4 little endian */ 120*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGRA4444 __gbm_fourcc_code('B', 'A', '1', '2') /* [15:0] B:G:R:A 4:4:4:4 little endian */ 121*61046927SAndroid Build Coastguard Worker 122*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_XRGB1555 __gbm_fourcc_code('X', 'R', '1', '5') /* [15:0] x:R:G:B 1:5:5:5 little endian */ 123*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_XBGR1555 __gbm_fourcc_code('X', 'B', '1', '5') /* [15:0] x:B:G:R 1:5:5:5 little endian */ 124*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGBX5551 __gbm_fourcc_code('R', 'X', '1', '5') /* [15:0] R:G:B:x 5:5:5:1 little endian */ 125*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGRX5551 __gbm_fourcc_code('B', 'X', '1', '5') /* [15:0] B:G:R:x 5:5:5:1 little endian */ 126*61046927SAndroid Build Coastguard Worker 127*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_ARGB1555 __gbm_fourcc_code('A', 'R', '1', '5') /* [15:0] A:R:G:B 1:5:5:5 little endian */ 128*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_ABGR1555 __gbm_fourcc_code('A', 'B', '1', '5') /* [15:0] A:B:G:R 1:5:5:5 little endian */ 129*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGBA5551 __gbm_fourcc_code('R', 'A', '1', '5') /* [15:0] R:G:B:A 5:5:5:1 little endian */ 130*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGRA5551 __gbm_fourcc_code('B', 'A', '1', '5') /* [15:0] B:G:R:A 5:5:5:1 little endian */ 131*61046927SAndroid Build Coastguard Worker 132*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGB565 __gbm_fourcc_code('R', 'G', '1', '6') /* [15:0] R:G:B 5:6:5 little endian */ 133*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGR565 __gbm_fourcc_code('B', 'G', '1', '6') /* [15:0] B:G:R 5:6:5 little endian */ 134*61046927SAndroid Build Coastguard Worker 135*61046927SAndroid Build Coastguard Worker /* 24 bpp RGB */ 136*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGB888 __gbm_fourcc_code('R', 'G', '2', '4') /* [23:0] R:G:B little endian */ 137*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGR888 __gbm_fourcc_code('B', 'G', '2', '4') /* [23:0] B:G:R little endian */ 138*61046927SAndroid Build Coastguard Worker 139*61046927SAndroid Build Coastguard Worker /* 32 bpp RGB */ 140*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_XRGB8888 __gbm_fourcc_code('X', 'R', '2', '4') /* [31:0] x:R:G:B 8:8:8:8 little endian */ 141*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_XBGR8888 __gbm_fourcc_code('X', 'B', '2', '4') /* [31:0] x:B:G:R 8:8:8:8 little endian */ 142*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGBX8888 __gbm_fourcc_code('R', 'X', '2', '4') /* [31:0] R:G:B:x 8:8:8:8 little endian */ 143*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGRX8888 __gbm_fourcc_code('B', 'X', '2', '4') /* [31:0] B:G:R:x 8:8:8:8 little endian */ 144*61046927SAndroid Build Coastguard Worker 145*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_ARGB8888 __gbm_fourcc_code('A', 'R', '2', '4') /* [31:0] A:R:G:B 8:8:8:8 little endian */ 146*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_ABGR8888 __gbm_fourcc_code('A', 'B', '2', '4') /* [31:0] A:B:G:R 8:8:8:8 little endian */ 147*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGBA8888 __gbm_fourcc_code('R', 'A', '2', '4') /* [31:0] R:G:B:A 8:8:8:8 little endian */ 148*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGRA8888 __gbm_fourcc_code('B', 'A', '2', '4') /* [31:0] B:G:R:A 8:8:8:8 little endian */ 149*61046927SAndroid Build Coastguard Worker 150*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_XRGB2101010 __gbm_fourcc_code('X', 'R', '3', '0') /* [31:0] x:R:G:B 2:10:10:10 little endian */ 151*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_XBGR2101010 __gbm_fourcc_code('X', 'B', '3', '0') /* [31:0] x:B:G:R 2:10:10:10 little endian */ 152*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGBX1010102 __gbm_fourcc_code('R', 'X', '3', '0') /* [31:0] R:G:B:x 10:10:10:2 little endian */ 153*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGRX1010102 __gbm_fourcc_code('B', 'X', '3', '0') /* [31:0] B:G:R:x 10:10:10:2 little endian */ 154*61046927SAndroid Build Coastguard Worker 155*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_ARGB2101010 __gbm_fourcc_code('A', 'R', '3', '0') /* [31:0] A:R:G:B 2:10:10:10 little endian */ 156*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_ABGR2101010 __gbm_fourcc_code('A', 'B', '3', '0') /* [31:0] A:B:G:R 2:10:10:10 little endian */ 157*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_RGBA1010102 __gbm_fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */ 158*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_BGRA1010102 __gbm_fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */ 159*61046927SAndroid Build Coastguard Worker 160*61046927SAndroid Build Coastguard Worker /* 64 bpp RGB */ 161*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_XBGR16161616 __gbm_fourcc_code('X', 'B', '4', '8') /* [63:0] x:B:G:R 16:16:16:16 little endian */ 162*61046927SAndroid Build Coastguard Worker 163*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_ABGR16161616 __gbm_fourcc_code('A', 'B', '4', '8') /* [63:0] A:B:G:R 16:16:16:16 little endian */ 164*61046927SAndroid Build Coastguard Worker 165*61046927SAndroid Build Coastguard Worker /* 166*61046927SAndroid Build Coastguard Worker * Floating point 64bpp RGB 167*61046927SAndroid Build Coastguard Worker * IEEE 754-2008 binary16 half-precision float 168*61046927SAndroid Build Coastguard Worker * [15:0] sign:exponent:mantissa 1:5:10 169*61046927SAndroid Build Coastguard Worker */ 170*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_XBGR16161616F __gbm_fourcc_code('X', 'B', '4', 'H') /* [63:0] x:B:G:R 16:16:16:16 little endian */ 171*61046927SAndroid Build Coastguard Worker 172*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_ABGR16161616F __gbm_fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */ 173*61046927SAndroid Build Coastguard Worker 174*61046927SAndroid Build Coastguard Worker /* packed YCbCr */ 175*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YUYV __gbm_fourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */ 176*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YVYU __gbm_fourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */ 177*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_UYVY __gbm_fourcc_code('U', 'Y', 'V', 'Y') /* [31:0] Y1:Cr0:Y0:Cb0 8:8:8:8 little endian */ 178*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_VYUY __gbm_fourcc_code('V', 'Y', 'U', 'Y') /* [31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian */ 179*61046927SAndroid Build Coastguard Worker 180*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_AYUV __gbm_fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */ 181*61046927SAndroid Build Coastguard Worker 182*61046927SAndroid Build Coastguard Worker /* 183*61046927SAndroid Build Coastguard Worker * 2 plane YCbCr 184*61046927SAndroid Build Coastguard Worker * index 0 = Y plane, [7:0] Y 185*61046927SAndroid Build Coastguard Worker * index 1 = Cr:Cb plane, [15:0] Cr:Cb little endian 186*61046927SAndroid Build Coastguard Worker * or 187*61046927SAndroid Build Coastguard Worker * index 1 = Cb:Cr plane, [15:0] Cb:Cr little endian 188*61046927SAndroid Build Coastguard Worker */ 189*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_NV12 __gbm_fourcc_code('N', 'V', '1', '2') /* 2x2 subsampled Cr:Cb plane */ 190*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_NV21 __gbm_fourcc_code('N', 'V', '2', '1') /* 2x2 subsampled Cb:Cr plane */ 191*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_NV16 __gbm_fourcc_code('N', 'V', '1', '6') /* 2x1 subsampled Cr:Cb plane */ 192*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_NV61 __gbm_fourcc_code('N', 'V', '6', '1') /* 2x1 subsampled Cb:Cr plane */ 193*61046927SAndroid Build Coastguard Worker 194*61046927SAndroid Build Coastguard Worker /* 195*61046927SAndroid Build Coastguard Worker * 3 plane YCbCr 196*61046927SAndroid Build Coastguard Worker * index 0: Y plane, [7:0] Y 197*61046927SAndroid Build Coastguard Worker * index 1: Cb plane, [7:0] Cb 198*61046927SAndroid Build Coastguard Worker * index 2: Cr plane, [7:0] Cr 199*61046927SAndroid Build Coastguard Worker * or 200*61046927SAndroid Build Coastguard Worker * index 1: Cr plane, [7:0] Cr 201*61046927SAndroid Build Coastguard Worker * index 2: Cb plane, [7:0] Cb 202*61046927SAndroid Build Coastguard Worker */ 203*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YUV410 __gbm_fourcc_code('Y', 'U', 'V', '9') /* 4x4 subsampled Cb (1) and Cr (2) planes */ 204*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YVU410 __gbm_fourcc_code('Y', 'V', 'U', '9') /* 4x4 subsampled Cr (1) and Cb (2) planes */ 205*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YUV411 __gbm_fourcc_code('Y', 'U', '1', '1') /* 4x1 subsampled Cb (1) and Cr (2) planes */ 206*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YVU411 __gbm_fourcc_code('Y', 'V', '1', '1') /* 4x1 subsampled Cr (1) and Cb (2) planes */ 207*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YUV420 __gbm_fourcc_code('Y', 'U', '1', '2') /* 2x2 subsampled Cb (1) and Cr (2) planes */ 208*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YVU420 __gbm_fourcc_code('Y', 'V', '1', '2') /* 2x2 subsampled Cr (1) and Cb (2) planes */ 209*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YUV422 __gbm_fourcc_code('Y', 'U', '1', '6') /* 2x1 subsampled Cb (1) and Cr (2) planes */ 210*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YVU422 __gbm_fourcc_code('Y', 'V', '1', '6') /* 2x1 subsampled Cr (1) and Cb (2) planes */ 211*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YUV444 __gbm_fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */ 212*61046927SAndroid Build Coastguard Worker #define GBM_FORMAT_YVU444 __gbm_fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */ 213*61046927SAndroid Build Coastguard Worker 214*61046927SAndroid Build Coastguard Worker struct gbm_format_name_desc { 215*61046927SAndroid Build Coastguard Worker char name[5]; 216*61046927SAndroid Build Coastguard Worker }; 217*61046927SAndroid Build Coastguard Worker 218*61046927SAndroid Build Coastguard Worker /** 219*61046927SAndroid Build Coastguard Worker * Flags to indicate the intended use for the buffer - these are passed into 220*61046927SAndroid Build Coastguard Worker * gbm_bo_create(). The caller must set the union of all the flags that are 221*61046927SAndroid Build Coastguard Worker * appropriate 222*61046927SAndroid Build Coastguard Worker * 223*61046927SAndroid Build Coastguard Worker * \sa Use gbm_device_is_format_supported() to check if the combination of format 224*61046927SAndroid Build Coastguard Worker * and use flags are supported 225*61046927SAndroid Build Coastguard Worker */ 226*61046927SAndroid Build Coastguard Worker enum gbm_bo_flags { 227*61046927SAndroid Build Coastguard Worker /** 228*61046927SAndroid Build Coastguard Worker * Buffer is going to be presented to the screen using an API such as KMS 229*61046927SAndroid Build Coastguard Worker */ 230*61046927SAndroid Build Coastguard Worker GBM_BO_USE_SCANOUT = (1 << 0), 231*61046927SAndroid Build Coastguard Worker /** 232*61046927SAndroid Build Coastguard Worker * Buffer is going to be used as cursor 233*61046927SAndroid Build Coastguard Worker */ 234*61046927SAndroid Build Coastguard Worker GBM_BO_USE_CURSOR = (1 << 1), 235*61046927SAndroid Build Coastguard Worker /** 236*61046927SAndroid Build Coastguard Worker * Deprecated 237*61046927SAndroid Build Coastguard Worker */ 238*61046927SAndroid Build Coastguard Worker GBM_BO_USE_CURSOR_64X64 = GBM_BO_USE_CURSOR, 239*61046927SAndroid Build Coastguard Worker /** 240*61046927SAndroid Build Coastguard Worker * Buffer is to be used for rendering - for example it is going to be used 241*61046927SAndroid Build Coastguard Worker * as the storage for a color buffer 242*61046927SAndroid Build Coastguard Worker */ 243*61046927SAndroid Build Coastguard Worker GBM_BO_USE_RENDERING = (1 << 2), 244*61046927SAndroid Build Coastguard Worker /** 245*61046927SAndroid Build Coastguard Worker * Buffer can be used for gbm_bo_write. This is guaranteed to work 246*61046927SAndroid Build Coastguard Worker * with GBM_BO_USE_CURSOR, but may not work for other combinations. 247*61046927SAndroid Build Coastguard Worker */ 248*61046927SAndroid Build Coastguard Worker GBM_BO_USE_WRITE = (1 << 3), 249*61046927SAndroid Build Coastguard Worker /** 250*61046927SAndroid Build Coastguard Worker * Buffer is linear, i.e. not tiled. 251*61046927SAndroid Build Coastguard Worker */ 252*61046927SAndroid Build Coastguard Worker GBM_BO_USE_LINEAR = (1 << 4), 253*61046927SAndroid Build Coastguard Worker /** 254*61046927SAndroid Build Coastguard Worker * Buffer is protected, i.e. encrypted and not readable by CPU or any 255*61046927SAndroid Build Coastguard Worker * other non-secure / non-trusted components nor by non-trusted OpenGL, 256*61046927SAndroid Build Coastguard Worker * OpenCL, and Vulkan applications. 257*61046927SAndroid Build Coastguard Worker */ 258*61046927SAndroid Build Coastguard Worker GBM_BO_USE_PROTECTED = (1 << 5), 259*61046927SAndroid Build Coastguard Worker 260*61046927SAndroid Build Coastguard Worker /** 261*61046927SAndroid Build Coastguard Worker * The buffer will be used for front buffer rendering. On some 262*61046927SAndroid Build Coastguard Worker * platforms this may (for example) disable framebuffer compression 263*61046927SAndroid Build Coastguard Worker * to avoid problems with compression flags data being out of sync 264*61046927SAndroid Build Coastguard Worker * with pixel data. 265*61046927SAndroid Build Coastguard Worker */ 266*61046927SAndroid Build Coastguard Worker GBM_BO_USE_FRONT_RENDERING = (1 << 6), 267*61046927SAndroid Build Coastguard Worker 268*61046927SAndroid Build Coastguard Worker /** 269*61046927SAndroid Build Coastguard Worker * Allow the driver to select fixed-rate compression parameters. 270*61046927SAndroid Build Coastguard Worker */ 271*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_DEFAULT = (1 << 7), 272*61046927SAndroid Build Coastguard Worker 273*61046927SAndroid Build Coastguard Worker /** 274*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 1bpc, less than 2bpc 275*61046927SAndroid Build Coastguard Worker */ 276*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_1BPC = (2 << 7), 277*61046927SAndroid Build Coastguard Worker 278*61046927SAndroid Build Coastguard Worker /** 279*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 2bpc, less than 3bpc 280*61046927SAndroid Build Coastguard Worker */ 281*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_2BPC = (3 << 7), 282*61046927SAndroid Build Coastguard Worker 283*61046927SAndroid Build Coastguard Worker /** 284*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 3bpc, less than 4bpc 285*61046927SAndroid Build Coastguard Worker */ 286*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_3BPC = (4 << 7), 287*61046927SAndroid Build Coastguard Worker 288*61046927SAndroid Build Coastguard Worker /** 289*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 4bpc, less than 5bpc 290*61046927SAndroid Build Coastguard Worker */ 291*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_4BPC = (5 << 7), 292*61046927SAndroid Build Coastguard Worker 293*61046927SAndroid Build Coastguard Worker /** 294*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 5bpc, less than 6bpc 295*61046927SAndroid Build Coastguard Worker */ 296*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_5BPC = (6 << 7), 297*61046927SAndroid Build Coastguard Worker 298*61046927SAndroid Build Coastguard Worker /** 299*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 6bpc, less than 7bpc 300*61046927SAndroid Build Coastguard Worker */ 301*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_6BPC = (7 << 7), 302*61046927SAndroid Build Coastguard Worker 303*61046927SAndroid Build Coastguard Worker /** 304*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 7bpc, less than 8bpc 305*61046927SAndroid Build Coastguard Worker */ 306*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_7BPC = (8 << 7), 307*61046927SAndroid Build Coastguard Worker 308*61046927SAndroid Build Coastguard Worker /** 309*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 8bpc, less than 9bpc 310*61046927SAndroid Build Coastguard Worker */ 311*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_8BPC = (9 << 7), 312*61046927SAndroid Build Coastguard Worker 313*61046927SAndroid Build Coastguard Worker /** 314*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 9bpc, less than 10bpc 315*61046927SAndroid Build Coastguard Worker */ 316*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_9BPC = (10 << 7), 317*61046927SAndroid Build Coastguard Worker 318*61046927SAndroid Build Coastguard Worker /** 319*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 10bpc, less than 11bpc 320*61046927SAndroid Build Coastguard Worker */ 321*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_10BPC = (11 << 7), 322*61046927SAndroid Build Coastguard Worker 323*61046927SAndroid Build Coastguard Worker /** 324*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 11bpc, less than 12bpc 325*61046927SAndroid Build Coastguard Worker */ 326*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_11BPC = (12 << 7), 327*61046927SAndroid Build Coastguard Worker 328*61046927SAndroid Build Coastguard Worker /** 329*61046927SAndroid Build Coastguard Worker * Fixed-rate compression: at least 12bpc, no maximum rate 330*61046927SAndroid Build Coastguard Worker */ 331*61046927SAndroid Build Coastguard Worker GBM_BO_FIXED_COMPRESSION_12BPC = (13 << 7), 332*61046927SAndroid Build Coastguard Worker 333*61046927SAndroid Build Coastguard Worker /* next available value is (1 << 11) */ 334*61046927SAndroid Build Coastguard Worker }; 335*61046927SAndroid Build Coastguard Worker 336*61046927SAndroid Build Coastguard Worker #define GBM_BO_FIXED_COMPRESSION_MASK (((1 << 11) - 1) & ~((1 << 7) - 1)) 337*61046927SAndroid Build Coastguard Worker 338*61046927SAndroid Build Coastguard Worker int 339*61046927SAndroid Build Coastguard Worker gbm_device_get_fd(struct gbm_device *gbm); 340*61046927SAndroid Build Coastguard Worker 341*61046927SAndroid Build Coastguard Worker const char * 342*61046927SAndroid Build Coastguard Worker gbm_device_get_backend_name(struct gbm_device *gbm); 343*61046927SAndroid Build Coastguard Worker 344*61046927SAndroid Build Coastguard Worker int 345*61046927SAndroid Build Coastguard Worker gbm_device_is_format_supported(struct gbm_device *gbm, 346*61046927SAndroid Build Coastguard Worker uint32_t format, uint32_t flags); 347*61046927SAndroid Build Coastguard Worker 348*61046927SAndroid Build Coastguard Worker int 349*61046927SAndroid Build Coastguard Worker gbm_device_get_format_modifier_plane_count(struct gbm_device *gbm, 350*61046927SAndroid Build Coastguard Worker uint32_t format, 351*61046927SAndroid Build Coastguard Worker uint64_t modifier); 352*61046927SAndroid Build Coastguard Worker 353*61046927SAndroid Build Coastguard Worker void 354*61046927SAndroid Build Coastguard Worker gbm_device_destroy(struct gbm_device *gbm); 355*61046927SAndroid Build Coastguard Worker 356*61046927SAndroid Build Coastguard Worker struct gbm_device * 357*61046927SAndroid Build Coastguard Worker gbm_create_device(int fd); 358*61046927SAndroid Build Coastguard Worker 359*61046927SAndroid Build Coastguard Worker struct gbm_bo * 360*61046927SAndroid Build Coastguard Worker gbm_bo_create(struct gbm_device *gbm, 361*61046927SAndroid Build Coastguard Worker uint32_t width, uint32_t height, 362*61046927SAndroid Build Coastguard Worker uint32_t format, uint32_t flags); 363*61046927SAndroid Build Coastguard Worker 364*61046927SAndroid Build Coastguard Worker struct gbm_bo * 365*61046927SAndroid Build Coastguard Worker gbm_bo_create_with_modifiers(struct gbm_device *gbm, 366*61046927SAndroid Build Coastguard Worker uint32_t width, uint32_t height, 367*61046927SAndroid Build Coastguard Worker uint32_t format, 368*61046927SAndroid Build Coastguard Worker const uint64_t *modifiers, 369*61046927SAndroid Build Coastguard Worker const unsigned int count); 370*61046927SAndroid Build Coastguard Worker 371*61046927SAndroid Build Coastguard Worker struct gbm_bo * 372*61046927SAndroid Build Coastguard Worker gbm_bo_create_with_modifiers2(struct gbm_device *gbm, 373*61046927SAndroid Build Coastguard Worker uint32_t width, uint32_t height, 374*61046927SAndroid Build Coastguard Worker uint32_t format, 375*61046927SAndroid Build Coastguard Worker const uint64_t *modifiers, 376*61046927SAndroid Build Coastguard Worker const unsigned int count, 377*61046927SAndroid Build Coastguard Worker uint32_t flags); 378*61046927SAndroid Build Coastguard Worker 379*61046927SAndroid Build Coastguard Worker #define GBM_BO_IMPORT_WL_BUFFER 0x5501 380*61046927SAndroid Build Coastguard Worker #define GBM_BO_IMPORT_EGL_IMAGE 0x5502 381*61046927SAndroid Build Coastguard Worker #define GBM_BO_IMPORT_FD 0x5503 382*61046927SAndroid Build Coastguard Worker #define GBM_BO_IMPORT_FD_MODIFIER 0x5504 383*61046927SAndroid Build Coastguard Worker 384*61046927SAndroid Build Coastguard Worker struct gbm_import_fd_data { 385*61046927SAndroid Build Coastguard Worker int fd; 386*61046927SAndroid Build Coastguard Worker uint32_t width; 387*61046927SAndroid Build Coastguard Worker uint32_t height; 388*61046927SAndroid Build Coastguard Worker uint32_t stride; 389*61046927SAndroid Build Coastguard Worker uint32_t format; 390*61046927SAndroid Build Coastguard Worker }; 391*61046927SAndroid Build Coastguard Worker 392*61046927SAndroid Build Coastguard Worker #define GBM_MAX_PLANES 4 393*61046927SAndroid Build Coastguard Worker 394*61046927SAndroid Build Coastguard Worker struct gbm_import_fd_modifier_data { 395*61046927SAndroid Build Coastguard Worker uint32_t width; 396*61046927SAndroid Build Coastguard Worker uint32_t height; 397*61046927SAndroid Build Coastguard Worker uint32_t format; 398*61046927SAndroid Build Coastguard Worker uint32_t num_fds; 399*61046927SAndroid Build Coastguard Worker int fds[GBM_MAX_PLANES]; 400*61046927SAndroid Build Coastguard Worker int strides[GBM_MAX_PLANES]; 401*61046927SAndroid Build Coastguard Worker int offsets[GBM_MAX_PLANES]; 402*61046927SAndroid Build Coastguard Worker uint64_t modifier; 403*61046927SAndroid Build Coastguard Worker }; 404*61046927SAndroid Build Coastguard Worker 405*61046927SAndroid Build Coastguard Worker struct gbm_bo * 406*61046927SAndroid Build Coastguard Worker gbm_bo_import(struct gbm_device *gbm, uint32_t type, 407*61046927SAndroid Build Coastguard Worker void *buffer, uint32_t flags); 408*61046927SAndroid Build Coastguard Worker 409*61046927SAndroid Build Coastguard Worker /** 410*61046927SAndroid Build Coastguard Worker * Flags to indicate the type of mapping for the buffer - these are 411*61046927SAndroid Build Coastguard Worker * passed into gbm_bo_map(). The caller must set the union of all the 412*61046927SAndroid Build Coastguard Worker * flags that are appropriate. 413*61046927SAndroid Build Coastguard Worker * 414*61046927SAndroid Build Coastguard Worker * These flags are independent of the GBM_BO_USE_* creation flags. However, 415*61046927SAndroid Build Coastguard Worker * mapping the buffer may require copying to/from a staging buffer. 416*61046927SAndroid Build Coastguard Worker * 417*61046927SAndroid Build Coastguard Worker * See also: pipe_map_flags 418*61046927SAndroid Build Coastguard Worker */ 419*61046927SAndroid Build Coastguard Worker enum gbm_bo_transfer_flags { 420*61046927SAndroid Build Coastguard Worker /** 421*61046927SAndroid Build Coastguard Worker * Buffer contents read back (or accessed directly) at transfer 422*61046927SAndroid Build Coastguard Worker * create time. 423*61046927SAndroid Build Coastguard Worker */ 424*61046927SAndroid Build Coastguard Worker GBM_BO_TRANSFER_READ = (1 << 0), 425*61046927SAndroid Build Coastguard Worker /** 426*61046927SAndroid Build Coastguard Worker * Buffer contents will be written back at unmap time 427*61046927SAndroid Build Coastguard Worker * (or modified as a result of being accessed directly). 428*61046927SAndroid Build Coastguard Worker */ 429*61046927SAndroid Build Coastguard Worker GBM_BO_TRANSFER_WRITE = (1 << 1), 430*61046927SAndroid Build Coastguard Worker /** 431*61046927SAndroid Build Coastguard Worker * Read/modify/write 432*61046927SAndroid Build Coastguard Worker */ 433*61046927SAndroid Build Coastguard Worker GBM_BO_TRANSFER_READ_WRITE = (GBM_BO_TRANSFER_READ | GBM_BO_TRANSFER_WRITE), 434*61046927SAndroid Build Coastguard Worker }; 435*61046927SAndroid Build Coastguard Worker 436*61046927SAndroid Build Coastguard Worker void * 437*61046927SAndroid Build Coastguard Worker gbm_bo_map(struct gbm_bo *bo, 438*61046927SAndroid Build Coastguard Worker uint32_t x, uint32_t y, uint32_t width, uint32_t height, 439*61046927SAndroid Build Coastguard Worker uint32_t flags, uint32_t *stride, void **map_data); 440*61046927SAndroid Build Coastguard Worker 441*61046927SAndroid Build Coastguard Worker void 442*61046927SAndroid Build Coastguard Worker gbm_bo_unmap(struct gbm_bo *bo, void *map_data); 443*61046927SAndroid Build Coastguard Worker 444*61046927SAndroid Build Coastguard Worker uint32_t 445*61046927SAndroid Build Coastguard Worker gbm_bo_get_width(struct gbm_bo *bo); 446*61046927SAndroid Build Coastguard Worker 447*61046927SAndroid Build Coastguard Worker uint32_t 448*61046927SAndroid Build Coastguard Worker gbm_bo_get_height(struct gbm_bo *bo); 449*61046927SAndroid Build Coastguard Worker 450*61046927SAndroid Build Coastguard Worker uint32_t 451*61046927SAndroid Build Coastguard Worker gbm_bo_get_stride(struct gbm_bo *bo); 452*61046927SAndroid Build Coastguard Worker 453*61046927SAndroid Build Coastguard Worker uint32_t 454*61046927SAndroid Build Coastguard Worker gbm_bo_get_stride_for_plane(struct gbm_bo *bo, int plane); 455*61046927SAndroid Build Coastguard Worker 456*61046927SAndroid Build Coastguard Worker uint32_t 457*61046927SAndroid Build Coastguard Worker gbm_bo_get_format(struct gbm_bo *bo); 458*61046927SAndroid Build Coastguard Worker 459*61046927SAndroid Build Coastguard Worker uint32_t 460*61046927SAndroid Build Coastguard Worker gbm_bo_get_bpp(struct gbm_bo *bo); 461*61046927SAndroid Build Coastguard Worker 462*61046927SAndroid Build Coastguard Worker uint32_t 463*61046927SAndroid Build Coastguard Worker gbm_bo_get_offset(struct gbm_bo *bo, int plane); 464*61046927SAndroid Build Coastguard Worker 465*61046927SAndroid Build Coastguard Worker struct gbm_device * 466*61046927SAndroid Build Coastguard Worker gbm_bo_get_device(struct gbm_bo *bo); 467*61046927SAndroid Build Coastguard Worker 468*61046927SAndroid Build Coastguard Worker union gbm_bo_handle 469*61046927SAndroid Build Coastguard Worker gbm_bo_get_handle(struct gbm_bo *bo); 470*61046927SAndroid Build Coastguard Worker 471*61046927SAndroid Build Coastguard Worker int 472*61046927SAndroid Build Coastguard Worker gbm_bo_get_fd(struct gbm_bo *bo); 473*61046927SAndroid Build Coastguard Worker 474*61046927SAndroid Build Coastguard Worker uint64_t 475*61046927SAndroid Build Coastguard Worker gbm_bo_get_modifier(struct gbm_bo *bo); 476*61046927SAndroid Build Coastguard Worker 477*61046927SAndroid Build Coastguard Worker int 478*61046927SAndroid Build Coastguard Worker gbm_bo_get_plane_count(struct gbm_bo *bo); 479*61046927SAndroid Build Coastguard Worker 480*61046927SAndroid Build Coastguard Worker union gbm_bo_handle 481*61046927SAndroid Build Coastguard Worker gbm_bo_get_handle_for_plane(struct gbm_bo *bo, int plane); 482*61046927SAndroid Build Coastguard Worker 483*61046927SAndroid Build Coastguard Worker int 484*61046927SAndroid Build Coastguard Worker gbm_bo_get_fd_for_plane(struct gbm_bo *bo, int plane); 485*61046927SAndroid Build Coastguard Worker 486*61046927SAndroid Build Coastguard Worker int 487*61046927SAndroid Build Coastguard Worker gbm_bo_write(struct gbm_bo *bo, const void *buf, size_t count); 488*61046927SAndroid Build Coastguard Worker 489*61046927SAndroid Build Coastguard Worker void 490*61046927SAndroid Build Coastguard Worker gbm_bo_set_user_data(struct gbm_bo *bo, void *data, 491*61046927SAndroid Build Coastguard Worker void (*destroy_user_data)(struct gbm_bo *, void *)); 492*61046927SAndroid Build Coastguard Worker 493*61046927SAndroid Build Coastguard Worker void * 494*61046927SAndroid Build Coastguard Worker gbm_bo_get_user_data(struct gbm_bo *bo); 495*61046927SAndroid Build Coastguard Worker 496*61046927SAndroid Build Coastguard Worker void 497*61046927SAndroid Build Coastguard Worker gbm_bo_destroy(struct gbm_bo *bo); 498*61046927SAndroid Build Coastguard Worker 499*61046927SAndroid Build Coastguard Worker struct gbm_surface * 500*61046927SAndroid Build Coastguard Worker gbm_surface_create(struct gbm_device *gbm, 501*61046927SAndroid Build Coastguard Worker uint32_t width, uint32_t height, 502*61046927SAndroid Build Coastguard Worker uint32_t format, uint32_t flags); 503*61046927SAndroid Build Coastguard Worker 504*61046927SAndroid Build Coastguard Worker struct gbm_surface * 505*61046927SAndroid Build Coastguard Worker gbm_surface_create_with_modifiers(struct gbm_device *gbm, 506*61046927SAndroid Build Coastguard Worker uint32_t width, uint32_t height, 507*61046927SAndroid Build Coastguard Worker uint32_t format, 508*61046927SAndroid Build Coastguard Worker const uint64_t *modifiers, 509*61046927SAndroid Build Coastguard Worker const unsigned int count); 510*61046927SAndroid Build Coastguard Worker 511*61046927SAndroid Build Coastguard Worker struct gbm_surface * 512*61046927SAndroid Build Coastguard Worker gbm_surface_create_with_modifiers2(struct gbm_device *gbm, 513*61046927SAndroid Build Coastguard Worker uint32_t width, uint32_t height, 514*61046927SAndroid Build Coastguard Worker uint32_t format, 515*61046927SAndroid Build Coastguard Worker const uint64_t *modifiers, 516*61046927SAndroid Build Coastguard Worker const unsigned int count, 517*61046927SAndroid Build Coastguard Worker uint32_t flags); 518*61046927SAndroid Build Coastguard Worker 519*61046927SAndroid Build Coastguard Worker struct gbm_bo * 520*61046927SAndroid Build Coastguard Worker gbm_surface_lock_front_buffer(struct gbm_surface *surface); 521*61046927SAndroid Build Coastguard Worker 522*61046927SAndroid Build Coastguard Worker void 523*61046927SAndroid Build Coastguard Worker gbm_surface_release_buffer(struct gbm_surface *surface, struct gbm_bo *bo); 524*61046927SAndroid Build Coastguard Worker 525*61046927SAndroid Build Coastguard Worker int 526*61046927SAndroid Build Coastguard Worker gbm_surface_has_free_buffers(struct gbm_surface *surface); 527*61046927SAndroid Build Coastguard Worker 528*61046927SAndroid Build Coastguard Worker void 529*61046927SAndroid Build Coastguard Worker gbm_surface_destroy(struct gbm_surface *surface); 530*61046927SAndroid Build Coastguard Worker 531*61046927SAndroid Build Coastguard Worker char * 532*61046927SAndroid Build Coastguard Worker gbm_format_get_name(uint32_t gbm_format, struct gbm_format_name_desc *desc); 533*61046927SAndroid Build Coastguard Worker 534*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 535*61046927SAndroid Build Coastguard Worker } 536*61046927SAndroid Build Coastguard Worker #endif 537*61046927SAndroid Build Coastguard Worker 538*61046927SAndroid Build Coastguard Worker #endif 539