rutabaga_gfx/generated/
virgl_renderer_bindings.rs

1/* automatically generated by rust-bindgen 0.68.1 */
2
3#[cfg(feature = "virgl_renderer")]
4#[link(name = "virglrenderer")]
5extern "C" {}
6
7pub const VIRGL_RENDERER_CALLBACKS_VERSION: u32 = 4;
8pub const VIRGL_RENDERER_USE_EGL: u32 = 1;
9pub const VIRGL_RENDERER_THREAD_SYNC: u32 = 2;
10pub const VIRGL_RENDERER_USE_GLX: u32 = 4;
11pub const VIRGL_RENDERER_USE_SURFACELESS: u32 = 8;
12pub const VIRGL_RENDERER_USE_GLES: u32 = 16;
13pub const VIRGL_RENDERER_USE_EXTERNAL_BLOB: u32 = 32;
14pub const VIRGL_RENDERER_VENUS: u32 = 64;
15pub const VIRGL_RENDERER_NO_VIRGL: u32 = 128;
16pub const VIRGL_RENDERER_ASYNC_FENCE_CB: u32 = 256;
17pub const VIRGL_RENDERER_RENDER_SERVER: u32 = 512;
18pub const VIRGL_RENDERER_DRM: u32 = 1024;
19pub const VIRGL_RENDERER_USE_VIDEO: u32 = 2048;
20pub const VIRGL_RENDERER_D3D11_SHARE_TEXTURE: u32 = 4096;
21pub const VIRGL_RENDERER_COMPAT_PROFILE: u32 = 8192;
22pub const VIRGL_RES_BIND_DEPTH_STENCIL: u32 = 1;
23pub const VIRGL_RES_BIND_RENDER_TARGET: u32 = 2;
24pub const VIRGL_RES_BIND_SAMPLER_VIEW: u32 = 8;
25pub const VIRGL_RES_BIND_VERTEX_BUFFER: u32 = 16;
26pub const VIRGL_RES_BIND_INDEX_BUFFER: u32 = 32;
27pub const VIRGL_RES_BIND_CONSTANT_BUFFER: u32 = 64;
28pub const VIRGL_RES_BIND_STREAM_OUTPUT: u32 = 2048;
29pub const VIRGL_RES_BIND_CURSOR: u32 = 65536;
30pub const VIRGL_RES_BIND_CUSTOM: u32 = 131072;
31pub const VIRGL_RES_BIND_SCANOUT: u32 = 262144;
32pub const VIRGL_RES_BIND_SHARED: u32 = 1048576;
33pub const VIRGL_RENDERER_RESOURCE_INFO_EXT_VERSION: u32 = 0;
34pub const VIRGL_RENDERER_CONTEXT_FLAG_CAPSET_ID_MASK: u32 = 255;
35pub const VIRGL_RENDERER_BLOB_MEM_GUEST: u32 = 1;
36pub const VIRGL_RENDERER_BLOB_MEM_HOST3D: u32 = 2;
37pub const VIRGL_RENDERER_BLOB_MEM_HOST3D_GUEST: u32 = 3;
38pub const VIRGL_RENDERER_BLOB_MEM_GUEST_VRAM: u32 = 4;
39pub const VIRGL_RENDERER_BLOB_FLAG_USE_MAPPABLE: u32 = 1;
40pub const VIRGL_RENDERER_BLOB_FLAG_USE_SHAREABLE: u32 = 2;
41pub const VIRGL_RENDERER_BLOB_FLAG_USE_CROSS_DEVICE: u32 = 4;
42pub const VIRGL_RENDERER_BLOB_FLAG_USE_DUMB_BUFFER: u32 = 8;
43pub const VIRGL_RENDERER_MAP_CACHE_MASK: u32 = 15;
44pub const VIRGL_RENDERER_MAP_CACHE_NONE: u32 = 0;
45pub const VIRGL_RENDERER_MAP_CACHE_CACHED: u32 = 1;
46pub const VIRGL_RENDERER_MAP_CACHE_UNCACHED: u32 = 2;
47pub const VIRGL_RENDERER_MAP_CACHE_WC: u32 = 3;
48pub const VIRGL_RENDERER_BLOB_FD_TYPE_DMABUF: u32 = 1;
49pub const VIRGL_RENDERER_BLOB_FD_TYPE_OPAQUE: u32 = 2;
50pub const VIRGL_RENDERER_BLOB_FD_TYPE_SHM: u32 = 3;
51pub const VIRGL_RENDERER_FENCE_FLAG_MERGEABLE: u32 = 1;
52#[repr(C)]
53#[derive(Debug, Copy, Clone)]
54pub struct virgl_box {
55    _unused: [u8; 0],
56}
57#[repr(C)]
58#[derive(Debug, Copy, Clone)]
59pub struct iovec {
60    _unused: [u8; 0],
61}
62pub type virgl_renderer_gl_context = *mut ::std::os::raw::c_void;
63#[repr(C)]
64#[derive(Debug, Default, Copy, Clone)]
65pub struct virgl_renderer_gl_ctx_param {
66    pub version: ::std::os::raw::c_int,
67    pub shared: bool,
68    pub major_ver: ::std::os::raw::c_int,
69    pub minor_ver: ::std::os::raw::c_int,
70    pub compat_ctx: ::std::os::raw::c_int,
71}
72#[repr(C)]
73#[derive(Debug, Default, Copy, Clone)]
74pub struct virgl_renderer_callbacks {
75    pub version: ::std::os::raw::c_int,
76    pub write_fence: ::std::option::Option<
77        unsafe extern "C" fn(cookie: *mut ::std::os::raw::c_void, fence: u32),
78    >,
79    pub create_gl_context: ::std::option::Option<
80        unsafe extern "C" fn(
81            cookie: *mut ::std::os::raw::c_void,
82            scanout_idx: ::std::os::raw::c_int,
83            param: *mut virgl_renderer_gl_ctx_param,
84        ) -> virgl_renderer_gl_context,
85    >,
86    pub destroy_gl_context: ::std::option::Option<
87        unsafe extern "C" fn(cookie: *mut ::std::os::raw::c_void, ctx: virgl_renderer_gl_context),
88    >,
89    pub make_current: ::std::option::Option<
90        unsafe extern "C" fn(
91            cookie: *mut ::std::os::raw::c_void,
92            scanout_idx: ::std::os::raw::c_int,
93            ctx: virgl_renderer_gl_context,
94        ) -> ::std::os::raw::c_int,
95    >,
96    pub get_drm_fd: ::std::option::Option<
97        unsafe extern "C" fn(cookie: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
98    >,
99    pub write_context_fence: ::std::option::Option<
100        unsafe extern "C" fn(
101            cookie: *mut ::std::os::raw::c_void,
102            ctx_id: u32,
103            ring_idx: u32,
104            fence_id: u64,
105        ),
106    >,
107    pub get_server_fd: ::std::option::Option<
108        unsafe extern "C" fn(
109            cookie: *mut ::std::os::raw::c_void,
110            version: u32,
111        ) -> ::std::os::raw::c_int,
112    >,
113    pub get_egl_display: ::std::option::Option<
114        unsafe extern "C" fn(cookie: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void,
115    >,
116}
117extern "C" {
118    pub fn virgl_renderer_init(
119        cookie: *mut ::std::os::raw::c_void,
120        flags: ::std::os::raw::c_int,
121        cb: *mut virgl_renderer_callbacks,
122    ) -> ::std::os::raw::c_int;
123}
124extern "C" {
125    pub fn virgl_renderer_poll();
126}
127extern "C" {
128    pub fn virgl_renderer_get_cursor_data(
129        resource_id: u32,
130        width: *mut u32,
131        height: *mut u32,
132    ) -> *mut ::std::os::raw::c_void;
133}
134extern "C" {
135    pub fn virgl_renderer_get_rect(
136        resource_id: ::std::os::raw::c_int,
137        iov: *mut iovec,
138        num_iovs: ::std::os::raw::c_uint,
139        offset: u32,
140        x: ::std::os::raw::c_int,
141        y: ::std::os::raw::c_int,
142        width: ::std::os::raw::c_int,
143        height: ::std::os::raw::c_int,
144    );
145}
146extern "C" {
147    pub fn virgl_renderer_get_fd_for_texture(
148        tex_id: u32,
149        fd: *mut ::std::os::raw::c_int,
150    ) -> ::std::os::raw::c_int;
151}
152extern "C" {
153    pub fn virgl_renderer_get_fd_for_texture2(
154        tex_id: u32,
155        fd: *mut ::std::os::raw::c_int,
156        stride: *mut ::std::os::raw::c_int,
157        offset: *mut ::std::os::raw::c_int,
158    ) -> ::std::os::raw::c_int;
159}
160pub const VIRGL_RENDERER_STRUCTURE_TYPE_NONE: virgl_renderer_structure_type_v0 = 0;
161pub const VIRGL_RENDERER_STRUCTURE_TYPE_EXPORT_QUERY: virgl_renderer_structure_type_v0 = 1;
162pub const VIRGL_RENDERER_STRUCTURE_TYPE_SUPPORTED_STRUCTURES: virgl_renderer_structure_type_v0 = 2;
163pub type virgl_renderer_structure_type_v0 = ::std::os::raw::c_uint;
164#[repr(C)]
165#[derive(Debug, Default, Copy, Clone)]
166pub struct virgl_renderer_resource_create_args {
167    pub handle: u32,
168    pub target: u32,
169    pub format: u32,
170    pub bind: u32,
171    pub width: u32,
172    pub height: u32,
173    pub depth: u32,
174    pub array_size: u32,
175    pub last_level: u32,
176    pub nr_samples: u32,
177    pub flags: u32,
178}
179#[repr(C)]
180#[derive(Debug, Default, Copy, Clone)]
181pub struct virgl_renderer_hdr {
182    pub stype: u32,
183    pub stype_version: u32,
184    pub size: u32,
185}
186#[repr(C)]
187#[derive(Debug, Default, Copy, Clone)]
188pub struct virgl_renderer_export_query {
189    pub hdr: virgl_renderer_hdr,
190    pub in_resource_id: u32,
191    pub out_num_fds: u32,
192    pub in_export_fds: u32,
193    pub out_fourcc: u32,
194    pub pad: u32,
195    pub out_fds: [i32; 4usize],
196    pub out_strides: [u32; 4usize],
197    pub out_offsets: [u32; 4usize],
198    pub out_modifier: u64,
199}
200#[repr(C)]
201#[derive(Debug, Default, Copy, Clone)]
202pub struct virgl_renderer_supported_structures {
203    pub hdr: virgl_renderer_hdr,
204    pub in_stype_version: u32,
205    pub out_supported_structures_mask: u32,
206}
207pub const VIRGL_LOG_LEVEL_DEBUG: virgl_log_level_flags = 0;
208pub const VIRGL_LOG_LEVEL_INFO: virgl_log_level_flags = 1;
209pub const VIRGL_LOG_LEVEL_WARNING: virgl_log_level_flags = 2;
210pub const VIRGL_LOG_LEVEL_ERROR: virgl_log_level_flags = 3;
211pub const VIRGL_LOG_LEVEL_SILENT: virgl_log_level_flags = 4;
212pub type virgl_log_level_flags = ::std::os::raw::c_uint;
213pub type virgl_free_data_callback_type =
214    ::std::option::Option<unsafe extern "C" fn(user_data: *mut ::std::os::raw::c_void)>;
215pub type virgl_log_callback_type = ::std::option::Option<
216    unsafe extern "C" fn(
217        log_level: virgl_log_level_flags,
218        message: *const ::std::os::raw::c_char,
219        user_data: *mut ::std::os::raw::c_void,
220    ),
221>;
222extern "C" {
223    pub fn virgl_renderer_resource_create(
224        args: *mut virgl_renderer_resource_create_args,
225        iov: *mut iovec,
226        num_iovs: u32,
227    ) -> ::std::os::raw::c_int;
228}
229extern "C" {
230    pub fn virgl_renderer_resource_import_eglimage(
231        args: *mut virgl_renderer_resource_create_args,
232        image: *mut ::std::os::raw::c_void,
233    ) -> ::std::os::raw::c_int;
234}
235extern "C" {
236    pub fn virgl_renderer_resource_unref(res_handle: u32);
237}
238extern "C" {
239    pub fn virgl_renderer_resource_set_priv(res_handle: u32, priv_: *mut ::std::os::raw::c_void);
240}
241extern "C" {
242    pub fn virgl_renderer_resource_get_priv(res_handle: u32) -> *mut ::std::os::raw::c_void;
243}
244extern "C" {
245    pub fn virgl_renderer_context_create(
246        handle: u32,
247        nlen: u32,
248        name: *const ::std::os::raw::c_char,
249    ) -> ::std::os::raw::c_int;
250}
251extern "C" {
252    pub fn virgl_renderer_context_destroy(handle: u32);
253}
254extern "C" {
255    pub fn virgl_renderer_submit_cmd(
256        buffer: *mut ::std::os::raw::c_void,
257        ctx_id: ::std::os::raw::c_int,
258        ndw: ::std::os::raw::c_int,
259    ) -> ::std::os::raw::c_int;
260}
261extern "C" {
262    pub fn virgl_renderer_transfer_read_iov(
263        handle: u32,
264        ctx_id: u32,
265        level: u32,
266        stride: u32,
267        layer_stride: u32,
268        box_: *mut virgl_box,
269        offset: u64,
270        iov: *mut iovec,
271        iovec_cnt: ::std::os::raw::c_int,
272    ) -> ::std::os::raw::c_int;
273}
274extern "C" {
275    pub fn virgl_renderer_transfer_write_iov(
276        handle: u32,
277        ctx_id: u32,
278        level: ::std::os::raw::c_int,
279        stride: u32,
280        layer_stride: u32,
281        box_: *mut virgl_box,
282        offset: u64,
283        iovec: *mut iovec,
284        iovec_cnt: ::std::os::raw::c_uint,
285    ) -> ::std::os::raw::c_int;
286}
287extern "C" {
288    pub fn virgl_renderer_get_cap_set(set: u32, max_ver: *mut u32, max_size: *mut u32);
289}
290extern "C" {
291    pub fn virgl_renderer_fill_caps(set: u32, version: u32, caps: *mut ::std::os::raw::c_void);
292}
293extern "C" {
294    pub fn virgl_renderer_resource_attach_iov(
295        res_handle: ::std::os::raw::c_int,
296        iov: *mut iovec,
297        num_iovs: ::std::os::raw::c_int,
298    ) -> ::std::os::raw::c_int;
299}
300extern "C" {
301    pub fn virgl_renderer_resource_detach_iov(
302        res_handle: ::std::os::raw::c_int,
303        iov: *mut *mut iovec,
304        num_iovs: *mut ::std::os::raw::c_int,
305    );
306}
307extern "C" {
308    pub fn virgl_renderer_create_fence(
309        client_fence_id: ::std::os::raw::c_int,
310        ctx_id: u32,
311    ) -> ::std::os::raw::c_int;
312}
313extern "C" {
314    pub fn virgl_renderer_force_ctx_0();
315}
316extern "C" {
317    pub fn virgl_renderer_ctx_attach_resource(
318        ctx_id: ::std::os::raw::c_int,
319        res_handle: ::std::os::raw::c_int,
320    );
321}
322extern "C" {
323    pub fn virgl_renderer_ctx_detach_resource(
324        ctx_id: ::std::os::raw::c_int,
325        res_handle: ::std::os::raw::c_int,
326    );
327}
328extern "C" {
329    pub fn virgl_set_log_callback(
330        cb: virgl_log_callback_type,
331        user_data: *mut ::std::os::raw::c_void,
332        free_user_data_cb: virgl_free_data_callback_type,
333    );
334}
335#[repr(C)]
336#[derive(Debug, Default, Copy, Clone)]
337pub struct virgl_renderer_resource_info {
338    pub handle: u32,
339    pub virgl_format: u32,
340    pub width: u32,
341    pub height: u32,
342    pub depth: u32,
343    pub flags: u32,
344    pub tex_id: u32,
345    pub stride: u32,
346    pub drm_fourcc: ::std::os::raw::c_int,
347    pub fd: ::std::os::raw::c_int,
348}
349#[repr(C)]
350#[derive(Debug, Copy, Clone)]
351pub struct virgl_renderer_resource_info_ext {
352    pub version: ::std::os::raw::c_int,
353    pub base: virgl_renderer_resource_info,
354    pub has_dmabuf_export: bool,
355    pub planes: ::std::os::raw::c_int,
356    pub modifiers: u64,
357    pub d3d_tex2d: *mut ::std::os::raw::c_void,
358}
359impl Default for virgl_renderer_resource_info_ext {
360    fn default() -> Self {
361        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
362        // TODO(b/315870313): Add safety comment
363        #[allow(clippy::undocumented_unsafe_blocks)]
364        unsafe {
365            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
366            s.assume_init()
367        }
368    }
369}
370extern "C" {
371    pub fn virgl_renderer_resource_get_info(
372        res_handle: ::std::os::raw::c_int,
373        info: *mut virgl_renderer_resource_info,
374    ) -> ::std::os::raw::c_int;
375}
376extern "C" {
377    pub fn virgl_renderer_resource_get_info_ext(
378        res_handle: ::std::os::raw::c_int,
379        info: *mut virgl_renderer_resource_info_ext,
380    ) -> ::std::os::raw::c_int;
381}
382extern "C" {
383    pub fn virgl_renderer_cleanup(cookie: *mut ::std::os::raw::c_void);
384}
385extern "C" {
386    pub fn virgl_renderer_reset();
387}
388extern "C" {
389    pub fn virgl_renderer_get_poll_fd() -> ::std::os::raw::c_int;
390}
391extern "C" {
392    pub fn virgl_renderer_execute(
393        execute_args: *mut ::std::os::raw::c_void,
394        execute_size: u32,
395    ) -> ::std::os::raw::c_int;
396}
397extern "C" {
398    pub fn virgl_renderer_context_create_with_flags(
399        ctx_id: u32,
400        ctx_flags: u32,
401        nlen: u32,
402        name: *const ::std::os::raw::c_char,
403    ) -> ::std::os::raw::c_int;
404}
405#[repr(C)]
406#[derive(Debug, Copy, Clone)]
407pub struct virgl_renderer_resource_create_blob_args {
408    pub res_handle: u32,
409    pub ctx_id: u32,
410    pub blob_mem: u32,
411    pub blob_flags: u32,
412    pub blob_id: u64,
413    pub size: u64,
414    pub iovecs: *const iovec,
415    pub num_iovs: u32,
416}
417impl Default for virgl_renderer_resource_create_blob_args {
418    fn default() -> Self {
419        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
420        // TODO(b/315870313): Add safety comment
421        #[allow(clippy::undocumented_unsafe_blocks)]
422        unsafe {
423            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
424            s.assume_init()
425        }
426    }
427}
428extern "C" {
429    pub fn virgl_renderer_resource_create_blob(
430        args: *const virgl_renderer_resource_create_blob_args,
431    ) -> ::std::os::raw::c_int;
432}
433extern "C" {
434    pub fn virgl_renderer_resource_map(
435        res_handle: u32,
436        map: *mut *mut ::std::os::raw::c_void,
437        out_size: *mut u64,
438    ) -> ::std::os::raw::c_int;
439}
440extern "C" {
441    pub fn virgl_renderer_resource_unmap(res_handle: u32) -> ::std::os::raw::c_int;
442}
443extern "C" {
444    pub fn virgl_renderer_resource_get_map_info(
445        res_handle: u32,
446        map_info: *mut u32,
447    ) -> ::std::os::raw::c_int;
448}
449extern "C" {
450    pub fn virgl_renderer_resource_export_blob(
451        res_id: u32,
452        fd_type: *mut u32,
453        fd: *mut ::std::os::raw::c_int,
454    ) -> ::std::os::raw::c_int;
455}
456#[repr(C)]
457#[derive(Debug, Default, Copy, Clone)]
458pub struct virgl_renderer_resource_import_blob_args {
459    pub res_handle: u32,
460    pub blob_mem: u32,
461    pub fd_type: u32,
462    pub fd: ::std::os::raw::c_int,
463    pub size: u64,
464}
465extern "C" {
466    pub fn virgl_renderer_resource_import_blob(
467        args: *const virgl_renderer_resource_import_blob_args,
468    ) -> ::std::os::raw::c_int;
469}
470extern "C" {
471    pub fn virgl_renderer_context_create_fence(
472        ctx_id: u32,
473        flags: u32,
474        ring_idx: u32,
475        fence_id: u64,
476    ) -> ::std::os::raw::c_int;
477}
478extern "C" {
479    pub fn virgl_renderer_export_fence(
480        client_fence_id: u64,
481        fd: *mut ::std::os::raw::c_int,
482    ) -> ::std::os::raw::c_int;
483}
484extern "C" {
485    pub fn virgl_renderer_export_signalled_fence() -> ::std::os::raw::c_int;
486}
487extern "C" {
488    pub fn virgl_renderer_context_poll(ctx_id: u32);
489}
490extern "C" {
491    pub fn virgl_renderer_context_get_poll_fd(ctx_id: u32) -> ::std::os::raw::c_int;
492}
493extern "C" {
494    pub fn virgl_renderer_submit_cmd2(
495        buffer: *mut ::std::os::raw::c_void,
496        ctx_id: ::std::os::raw::c_int,
497        ndw: ::std::os::raw::c_int,
498        in_fence_ids: *mut u64,
499        num_in_fences: u32,
500    ) -> ::std::os::raw::c_int;
501}