xref: /aosp_15_r20/external/crosvm/rutabaga_gfx/src/rutabaga_gralloc/minigbm_bindings.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
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