1 // Copyright 2018 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Generated with bindgen --default-enum-style=rust --allowlist-function='gbm_.*' 6 // --allowlist-type='gbm_.*' minigbm/gbm.h Then modified manually 7 8 #![cfg(feature = "minigbm")] 9 /* Added below line manually */ 10 #![allow(dead_code, non_camel_case_types)] 11 12 /* Added below line manually */ 13 use std::os::raw::c_char; 14 use std::os::raw::c_int; 15 use std::os::raw::c_uint; 16 use std::os::raw::c_void; 17 18 #[repr(C)] 19 #[derive(Debug, Copy, Clone)] 20 pub struct gbm_device { 21 _unused: [u8; 0], 22 } 23 #[repr(C)] 24 #[derive(Debug, Copy, Clone)] 25 pub struct gbm_bo { 26 _unused: [u8; 0], 27 } 28 #[repr(C)] 29 #[derive(Debug, Copy, Clone)] 30 pub struct gbm_surface { 31 _unused: [u8; 0], 32 } 33 #[repr(C)] 34 #[derive(Copy, Clone)] 35 pub union gbm_bo_handle { 36 pub ptr: *mut c_void, 37 pub s32: i32, 38 pub u32: u32, 39 pub s64: i64, 40 pub u64: u64, 41 _bindgen_union_align: u64, 42 } 43 pub const GBM_BO_FORMAT_XRGB8888: gbm_bo_format = 0; 44 pub const GBM_BO_FORMAT_ARGB8888: gbm_bo_format = 1; 45 pub type gbm_bo_format = u32; 46 #[repr(C)] 47 #[derive(Debug, Copy, Clone)] 48 pub struct gbm_format_name_desc { 49 pub name: [c_char; 5usize], 50 } 51 pub const GBM_BO_USE_SCANOUT: gbm_bo_flags = 1; 52 pub const GBM_BO_USE_CURSOR: gbm_bo_flags = 2; 53 pub const GBM_BO_USE_CURSOR_64X64: gbm_bo_flags = 2; 54 pub const GBM_BO_USE_RENDERING: gbm_bo_flags = 4; 55 pub const GBM_BO_USE_WRITE: gbm_bo_flags = 8; 56 pub const GBM_BO_USE_LINEAR: gbm_bo_flags = 16; 57 pub const GBM_BO_USE_TEXTURING: gbm_bo_flags = 32; 58 pub const GBM_BO_USE_CAMERA_WRITE: gbm_bo_flags = 64; 59 pub const GBM_BO_USE_CAMERA_READ: gbm_bo_flags = 128; 60 pub const GBM_BO_USE_PROTECTED: gbm_bo_flags = 256; 61 pub const GBM_BO_USE_SW_READ_OFTEN: gbm_bo_flags = 512; 62 pub const GBM_BO_USE_SW_READ_RARELY: gbm_bo_flags = 1024; 63 pub const GBM_BO_USE_SW_WRITE_OFTEN: gbm_bo_flags = 2048; 64 pub const GBM_BO_USE_SW_WRITE_RARELY: gbm_bo_flags = 4096; 65 pub const GBM_BO_USE_HW_VIDEO_DECODER: gbm_bo_flags = 8192; 66 pub const GBM_BO_USE_HW_VIDEO_ENCODER: gbm_bo_flags = 16384; 67 /* Added below line manually */ 68 #[allow(non_camel_case_types)] 69 pub type gbm_bo_flags = u32; 70 /* Added below line manually */ 71 #[link(name = "gbm")] 72 extern "C" { gbm_device_get_fd(gbm: *mut gbm_device) -> c_int73 pub fn gbm_device_get_fd(gbm: *mut gbm_device) -> c_int; 74 } 75 extern "C" { gbm_device_get_backend_name(gbm: *mut gbm_device) -> *const c_char76 pub fn gbm_device_get_backend_name(gbm: *mut gbm_device) -> *const c_char; 77 } 78 extern "C" { gbm_device_is_format_supported(gbm: *mut gbm_device, format: u32, usage: u32) -> c_int79 pub fn gbm_device_is_format_supported(gbm: *mut gbm_device, format: u32, usage: u32) -> c_int; 80 } 81 extern "C" { gbm_device_get_format_modifier_plane_count( gbm: *mut gbm_device, format: u32, modifier: u64, ) -> c_int82 pub fn gbm_device_get_format_modifier_plane_count( 83 gbm: *mut gbm_device, 84 format: u32, 85 modifier: u64, 86 ) -> c_int; 87 } 88 extern "C" { gbm_device_destroy(gbm: *mut gbm_device)89 pub fn gbm_device_destroy(gbm: *mut gbm_device); 90 } 91 extern "C" { gbm_create_device(fd: c_int) -> *mut gbm_device92 pub fn gbm_create_device(fd: c_int) -> *mut gbm_device; 93 } 94 extern "C" { gbm_bo_create( gbm: *mut gbm_device, width: u32, height: u32, format: u32, flags: u32, ) -> *mut gbm_bo95 pub fn gbm_bo_create( 96 gbm: *mut gbm_device, 97 width: u32, 98 height: u32, 99 format: u32, 100 flags: u32, 101 ) -> *mut gbm_bo; 102 } 103 extern "C" { gbm_bo_create_with_modifiers( gbm: *mut gbm_device, width: u32, height: u32, format: u32, modifiers: *const u64, count: c_uint, ) -> *mut gbm_bo104 pub fn gbm_bo_create_with_modifiers( 105 gbm: *mut gbm_device, 106 width: u32, 107 height: u32, 108 format: u32, 109 modifiers: *const u64, 110 count: c_uint, 111 ) -> *mut gbm_bo; 112 } 113 #[repr(C)] 114 #[derive(Debug, Copy, Clone)] 115 pub struct gbm_import_fd_data { 116 pub fd: c_int, 117 pub width: u32, 118 pub height: u32, 119 pub stride: u32, 120 pub format: u32, 121 } 122 #[repr(C)] 123 #[derive(Debug, Copy, Clone)] 124 pub struct gbm_import_fd_modifier_data { 125 pub width: u32, 126 pub height: u32, 127 pub format: u32, 128 pub num_fds: u32, 129 pub fds: [c_int; 4usize], 130 pub strides: [c_int; 4usize], 131 pub offsets: [c_int; 4usize], 132 pub modifier: u64, 133 } 134 extern "C" { gbm_bo_import( gbm: *mut gbm_device, type_: u32, buffer: *mut c_void, usage: u32, ) -> *mut gbm_bo135 pub fn gbm_bo_import( 136 gbm: *mut gbm_device, 137 type_: u32, 138 buffer: *mut c_void, 139 usage: u32, 140 ) -> *mut gbm_bo; 141 } 142 pub const GBM_BO_TRANSFER_READ: gbm_bo_transfer_flags = 1; 143 pub const GBM_BO_TRANSFER_WRITE: gbm_bo_transfer_flags = 2; 144 pub const GBM_BO_TRANSFER_READ_WRITE: gbm_bo_transfer_flags = 3; 145 146 /* Added below line manually */ 147 #[allow(non_camel_case_types)] 148 pub type gbm_bo_transfer_flags = u32; 149 extern "C" { gbm_bo_unmap(bo: *mut gbm_bo, map_data: *mut c_void)150 pub fn gbm_bo_unmap(bo: *mut gbm_bo, map_data: *mut c_void); 151 } 152 #[repr(u32)] 153 #[doc = " Enum to indicate the cache attributes of CPU mapping returned by"] 154 #[doc = " gbm_bo_map()"] 155 #[doc = ""] 156 #[doc = " Note that definition aligns with VIRTIO_GPU_MAP_CACHE_*, RUTABAGA_MAP_CACHE_*,"] 157 #[doc = " and VIRGL_RENDERER_MAP_CACHE_* (but skipping the _NONE and _UNCACHED values as"] 158 #[doc = " those don't actually make sense to use)."] 159 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] 160 pub enum gbm_bo_map_cache_mode { 161 GBM_BO_MAP_CACHE_CACHED = 1, 162 GBM_BO_MAP_CACHE_WC = 3, 163 } 164 extern "C" { gbm_bo_get_map_info(bo: *mut gbm_bo) -> gbm_bo_map_cache_mode165 pub fn gbm_bo_get_map_info(bo: *mut gbm_bo) -> gbm_bo_map_cache_mode; 166 } 167 extern "C" { gbm_bo_get_width(bo: *mut gbm_bo) -> u32168 pub fn gbm_bo_get_width(bo: *mut gbm_bo) -> u32; 169 } 170 extern "C" { gbm_bo_get_height(bo: *mut gbm_bo) -> u32171 pub fn gbm_bo_get_height(bo: *mut gbm_bo) -> u32; 172 } 173 extern "C" { gbm_bo_get_stride(bo: *mut gbm_bo) -> u32174 pub fn gbm_bo_get_stride(bo: *mut gbm_bo) -> u32; 175 } 176 extern "C" { gbm_bo_get_stride_for_plane(bo: *mut gbm_bo, plane: usize) -> u32177 pub fn gbm_bo_get_stride_for_plane(bo: *mut gbm_bo, plane: usize) -> u32; 178 } 179 extern "C" { gbm_bo_get_format(bo: *mut gbm_bo) -> u32180 pub fn gbm_bo_get_format(bo: *mut gbm_bo) -> u32; 181 } 182 extern "C" { gbm_bo_get_bpp(bo: *mut gbm_bo) -> u32183 pub fn gbm_bo_get_bpp(bo: *mut gbm_bo) -> u32; 184 } 185 extern "C" { gbm_bo_get_offset(bo: *mut gbm_bo, plane: usize) -> u32186 pub fn gbm_bo_get_offset(bo: *mut gbm_bo, plane: usize) -> u32; 187 } 188 extern "C" { gbm_bo_get_device(bo: *mut gbm_bo) -> *mut gbm_device189 pub fn gbm_bo_get_device(bo: *mut gbm_bo) -> *mut gbm_device; 190 } 191 extern "C" { gbm_bo_get_handle(bo: *mut gbm_bo) -> gbm_bo_handle192 pub fn gbm_bo_get_handle(bo: *mut gbm_bo) -> gbm_bo_handle; 193 } 194 extern "C" { gbm_bo_get_fd(bo: *mut gbm_bo) -> c_int195 pub fn gbm_bo_get_fd(bo: *mut gbm_bo) -> c_int; 196 } 197 extern "C" { gbm_bo_get_modifier(bo: *mut gbm_bo) -> u64198 pub fn gbm_bo_get_modifier(bo: *mut gbm_bo) -> u64; 199 } 200 extern "C" { gbm_bo_get_plane_count(bo: *mut gbm_bo) -> c_int201 pub fn gbm_bo_get_plane_count(bo: *mut gbm_bo) -> c_int; 202 } 203 extern "C" { gbm_bo_get_handle_for_plane(bo: *mut gbm_bo, plane: usize) -> gbm_bo_handle204 pub fn gbm_bo_get_handle_for_plane(bo: *mut gbm_bo, plane: usize) -> gbm_bo_handle; 205 } 206 extern "C" { gbm_bo_write(bo: *mut gbm_bo, buf: *const c_void, count: usize) -> c_int207 pub fn gbm_bo_write(bo: *mut gbm_bo, buf: *const c_void, count: usize) -> c_int; 208 } 209 extern "C" { gbm_bo_set_user_data( bo: *mut gbm_bo, data: *mut c_void, destroy_user_data: ::std::option::Option< unsafe extern "C" fn(arg1: *mut gbm_bo, arg2: *mut c_void), >, )210 pub fn gbm_bo_set_user_data( 211 bo: *mut gbm_bo, 212 data: *mut c_void, 213 destroy_user_data: ::std::option::Option< 214 unsafe extern "C" fn(arg1: *mut gbm_bo, arg2: *mut c_void), 215 >, 216 ); 217 } 218 extern "C" { gbm_bo_get_user_data(bo: *mut gbm_bo) -> *mut c_void219 pub fn gbm_bo_get_user_data(bo: *mut gbm_bo) -> *mut c_void; 220 } 221 extern "C" { gbm_bo_destroy(bo: *mut gbm_bo)222 pub fn gbm_bo_destroy(bo: *mut gbm_bo); 223 } 224 extern "C" { gbm_surface_create( gbm: *mut gbm_device, width: u32, height: u32, format: u32, flags: u32, ) -> *mut gbm_surface225 pub fn gbm_surface_create( 226 gbm: *mut gbm_device, 227 width: u32, 228 height: u32, 229 format: u32, 230 flags: u32, 231 ) -> *mut gbm_surface; 232 } 233 extern "C" { gbm_surface_create_with_modifiers( gbm: *mut gbm_device, width: u32, height: u32, format: u32, modifiers: *const u64, count: c_uint, ) -> *mut gbm_surface234 pub fn gbm_surface_create_with_modifiers( 235 gbm: *mut gbm_device, 236 width: u32, 237 height: u32, 238 format: u32, 239 modifiers: *const u64, 240 count: c_uint, 241 ) -> *mut gbm_surface; 242 } 243 extern "C" { gbm_surface_lock_front_buffer(surface: *mut gbm_surface) -> *mut gbm_bo244 pub fn gbm_surface_lock_front_buffer(surface: *mut gbm_surface) -> *mut gbm_bo; 245 } 246 extern "C" { gbm_surface_release_buffer(surface: *mut gbm_surface, bo: *mut gbm_bo)247 pub fn gbm_surface_release_buffer(surface: *mut gbm_surface, bo: *mut gbm_bo); 248 } 249 extern "C" { gbm_surface_has_free_buffers(surface: *mut gbm_surface) -> c_int250 pub fn gbm_surface_has_free_buffers(surface: *mut gbm_surface) -> c_int; 251 } 252 extern "C" { gbm_surface_destroy(surface: *mut gbm_surface)253 pub fn gbm_surface_destroy(surface: *mut gbm_surface); 254 } 255 extern "C" { gbm_format_get_name(gbm_format: u32, desc: *mut gbm_format_name_desc) -> *mut c_char256 pub fn gbm_format_get_name(gbm_format: u32, desc: *mut gbm_format_name_desc) -> *mut c_char; 257 } 258 extern "C" { gbm_bo_get_plane_size(bo: *mut gbm_bo, plane: usize) -> u32259 pub fn gbm_bo_get_plane_size(bo: *mut gbm_bo, plane: usize) -> u32; 260 } 261 extern "C" { gbm_bo_get_plane_fd(bo: *mut gbm_bo, plane: usize) -> c_int262 pub fn gbm_bo_get_plane_fd(bo: *mut gbm_bo, plane: usize) -> c_int; 263 } 264 extern "C" { gbm_bo_map( bo: *mut gbm_bo, x: u32, y: u32, width: u32, height: u32, flags: u32, stride: *mut u32, map_data: *mut *mut c_void, plane: usize, ) -> *mut c_void265 pub fn gbm_bo_map( 266 bo: *mut gbm_bo, 267 x: u32, 268 y: u32, 269 width: u32, 270 height: u32, 271 flags: u32, 272 stride: *mut u32, 273 map_data: *mut *mut c_void, 274 plane: usize, 275 ) -> *mut c_void; 276 } 277 extern "C" { gbm_bo_map2( bo: *mut gbm_bo, x: u32, y: u32, width: u32, height: u32, flags: u32, stride: *mut u32, map_data: *mut *mut c_void, plane: c_int, ) -> *mut c_void278 pub fn gbm_bo_map2( 279 bo: *mut gbm_bo, 280 x: u32, 281 y: u32, 282 width: u32, 283 height: u32, 284 flags: u32, 285 stride: *mut u32, 286 map_data: *mut *mut c_void, 287 plane: c_int, 288 ) -> *mut c_void; 289 } 290 extern "C" { minigbm_create_default_device(out_fd: *mut c_int) -> *mut gbm_device291 pub fn minigbm_create_default_device(out_fd: *mut c_int) -> *mut gbm_device; 292 } 293