1 /* automatically generated by rust-bindgen 0.59.2 */ 2 3 #[cfg(feature = "virgl_renderer")] 4 #[link(name = "virglrenderer")] 5 extern "C" {} 6 7 pub const VIRGL_RENDERER_CALLBACKS_VERSION: u32 = 3; 8 pub const VIRGL_RENDERER_USE_EGL: u32 = 1; 9 pub const VIRGL_RENDERER_THREAD_SYNC: u32 = 2; 10 pub const VIRGL_RENDERER_USE_GLX: u32 = 4; 11 pub const VIRGL_RENDERER_USE_SURFACELESS: u32 = 8; 12 pub const VIRGL_RENDERER_USE_GLES: u32 = 16; 13 pub const VIRGL_RENDERER_USE_EXTERNAL_BLOB: u32 = 32; 14 pub const VIRGL_RENDERER_VENUS: u32 = 64; 15 pub const VIRGL_RENDERER_NO_VIRGL: u32 = 128; 16 pub const VIRGL_RENDERER_ASYNC_FENCE_CB: u32 = 256; 17 pub const VIRGL_RENDERER_RENDER_SERVER: u32 = 512; 18 pub const VIRGL_RES_BIND_DEPTH_STENCIL: u32 = 1; 19 pub const VIRGL_RES_BIND_RENDER_TARGET: u32 = 2; 20 pub const VIRGL_RES_BIND_SAMPLER_VIEW: u32 = 8; 21 pub const VIRGL_RES_BIND_VERTEX_BUFFER: u32 = 16; 22 pub const VIRGL_RES_BIND_INDEX_BUFFER: u32 = 32; 23 pub const VIRGL_RES_BIND_CONSTANT_BUFFER: u32 = 64; 24 pub const VIRGL_RES_BIND_STREAM_OUTPUT: u32 = 2048; 25 pub const VIRGL_RES_BIND_CURSOR: u32 = 65536; 26 pub const VIRGL_RES_BIND_CUSTOM: u32 = 131072; 27 pub const VIRGL_RES_BIND_SCANOUT: u32 = 262144; 28 pub const VIRGL_RES_BIND_SHARED: u32 = 1048576; 29 pub const VIRGL_RENDERER_CONTEXT_FLAG_CAPSET_ID_MASK: u32 = 255; 30 pub const VIRGL_RENDERER_BLOB_MEM_GUEST: u32 = 1; 31 pub const VIRGL_RENDERER_BLOB_MEM_HOST3D: u32 = 2; 32 pub const VIRGL_RENDERER_BLOB_MEM_HOST3D_GUEST: u32 = 3; 33 pub const VIRGL_RENDERER_BLOB_FLAG_USE_MAPPABLE: u32 = 1; 34 pub const VIRGL_RENDERER_BLOB_FLAG_USE_SHAREABLE: u32 = 2; 35 pub const VIRGL_RENDERER_BLOB_FLAG_USE_CROSS_DEVICE: u32 = 4; 36 pub const VIRGL_RENDERER_MAP_CACHE_MASK: u32 = 15; 37 pub const VIRGL_RENDERER_MAP_CACHE_NONE: u32 = 0; 38 pub const VIRGL_RENDERER_MAP_CACHE_CACHED: u32 = 1; 39 pub const VIRGL_RENDERER_MAP_CACHE_UNCACHED: u32 = 2; 40 pub const VIRGL_RENDERER_MAP_CACHE_WC: u32 = 3; 41 pub const VIRGL_RENDERER_BLOB_FD_TYPE_DMABUF: u32 = 1; 42 pub const VIRGL_RENDERER_BLOB_FD_TYPE_OPAQUE: u32 = 2; 43 pub const VIRGL_RENDERER_BLOB_FD_TYPE_SHM: u32 = 3; 44 pub const VIRGL_RENDERER_FENCE_FLAG_MERGEABLE: u32 = 1; 45 pub type __int32_t = ::std::os::raw::c_int; 46 pub type __uint32_t = ::std::os::raw::c_uint; 47 pub type __uint64_t = ::std::os::raw::c_ulong; 48 #[repr(C)] 49 #[derive(Debug, Copy, Clone)] 50 pub struct virgl_box { 51 _unused: [u8; 0], 52 } 53 #[repr(C)] 54 #[derive(Debug, Copy, Clone)] 55 pub struct iovec { 56 _unused: [u8; 0], 57 } 58 pub type virgl_renderer_gl_context = *mut ::std::os::raw::c_void; 59 #[repr(C)] 60 #[derive(Debug, Default, Copy, Clone)] 61 pub struct virgl_renderer_gl_ctx_param { 62 pub version: ::std::os::raw::c_int, 63 pub shared: bool, 64 pub major_ver: ::std::os::raw::c_int, 65 pub minor_ver: ::std::os::raw::c_int, 66 } 67 #[repr(C)] 68 #[derive(Debug, Default, Copy, Clone)] 69 pub struct virgl_renderer_callbacks { 70 pub version: ::std::os::raw::c_int, 71 pub write_fence: ::std::option::Option< 72 unsafe extern "C" fn(cookie: *mut ::std::os::raw::c_void, fence: u32), 73 >, 74 pub create_gl_context: ::std::option::Option< 75 unsafe extern "C" fn( 76 cookie: *mut ::std::os::raw::c_void, 77 scanout_idx: ::std::os::raw::c_int, 78 param: *mut virgl_renderer_gl_ctx_param, 79 ) -> virgl_renderer_gl_context, 80 >, 81 pub destroy_gl_context: ::std::option::Option< 82 unsafe extern "C" fn(cookie: *mut ::std::os::raw::c_void, ctx: virgl_renderer_gl_context), 83 >, 84 pub make_current: ::std::option::Option< 85 unsafe extern "C" fn( 86 cookie: *mut ::std::os::raw::c_void, 87 scanout_idx: ::std::os::raw::c_int, 88 ctx: virgl_renderer_gl_context, 89 ) -> ::std::os::raw::c_int, 90 >, 91 pub get_drm_fd: ::std::option::Option< 92 unsafe extern "C" fn(cookie: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int, 93 >, 94 pub write_context_fence: ::std::option::Option< 95 unsafe extern "C" fn( 96 cookie: *mut ::std::os::raw::c_void, 97 ctx_id: u32, 98 queue_id: u64, 99 fence_cookie: *mut ::std::os::raw::c_void, 100 ), 101 >, 102 pub get_server_fd: ::std::option::Option< 103 unsafe extern "C" fn( 104 cookie: *mut ::std::os::raw::c_void, 105 version: u32, 106 ) -> ::std::os::raw::c_int, 107 >, 108 } 109 extern "C" { virgl_renderer_init( cookie: *mut ::std::os::raw::c_void, flags: ::std::os::raw::c_int, cb: *mut virgl_renderer_callbacks, ) -> ::std::os::raw::c_int110 pub fn virgl_renderer_init( 111 cookie: *mut ::std::os::raw::c_void, 112 flags: ::std::os::raw::c_int, 113 cb: *mut virgl_renderer_callbacks, 114 ) -> ::std::os::raw::c_int; 115 } 116 extern "C" { virgl_renderer_poll()117 pub fn virgl_renderer_poll(); 118 } 119 extern "C" { virgl_renderer_get_cursor_data( resource_id: u32, width: *mut u32, height: *mut u32, ) -> *mut ::std::os::raw::c_void120 pub fn virgl_renderer_get_cursor_data( 121 resource_id: u32, 122 width: *mut u32, 123 height: *mut u32, 124 ) -> *mut ::std::os::raw::c_void; 125 } 126 extern "C" { virgl_renderer_get_rect( resource_id: ::std::os::raw::c_int, iov: *mut iovec, num_iovs: ::std::os::raw::c_uint, offset: u32, x: ::std::os::raw::c_int, y: ::std::os::raw::c_int, width: ::std::os::raw::c_int, height: ::std::os::raw::c_int, )127 pub fn virgl_renderer_get_rect( 128 resource_id: ::std::os::raw::c_int, 129 iov: *mut iovec, 130 num_iovs: ::std::os::raw::c_uint, 131 offset: u32, 132 x: ::std::os::raw::c_int, 133 y: ::std::os::raw::c_int, 134 width: ::std::os::raw::c_int, 135 height: ::std::os::raw::c_int, 136 ); 137 } 138 extern "C" { virgl_renderer_get_fd_for_texture( tex_id: u32, fd: *mut ::std::os::raw::c_int, ) -> ::std::os::raw::c_int139 pub fn virgl_renderer_get_fd_for_texture( 140 tex_id: u32, 141 fd: *mut ::std::os::raw::c_int, 142 ) -> ::std::os::raw::c_int; 143 } 144 extern "C" { virgl_renderer_get_fd_for_texture2( tex_id: u32, fd: *mut ::std::os::raw::c_int, stride: *mut ::std::os::raw::c_int, offset: *mut ::std::os::raw::c_int, ) -> ::std::os::raw::c_int145 pub fn virgl_renderer_get_fd_for_texture2( 146 tex_id: u32, 147 fd: *mut ::std::os::raw::c_int, 148 stride: *mut ::std::os::raw::c_int, 149 offset: *mut ::std::os::raw::c_int, 150 ) -> ::std::os::raw::c_int; 151 } 152 pub const VIRGL_RENDERER_STRUCTURE_TYPE_NONE: virgl_renderer_structure_type_v0 = 0; 153 pub const VIRGL_RENDERER_STRUCTURE_TYPE_EXPORT_QUERY: virgl_renderer_structure_type_v0 = 1; 154 pub const VIRGL_RENDERER_STRUCTURE_TYPE_SUPPORTED_STRUCTURES: virgl_renderer_structure_type_v0 = 2; 155 pub type virgl_renderer_structure_type_v0 = ::std::os::raw::c_uint; 156 #[repr(C)] 157 #[derive(Debug, Default, Copy, Clone)] 158 pub struct virgl_renderer_resource_create_args { 159 pub handle: u32, 160 pub target: u32, 161 pub format: u32, 162 pub bind: u32, 163 pub width: u32, 164 pub height: u32, 165 pub depth: u32, 166 pub array_size: u32, 167 pub last_level: u32, 168 pub nr_samples: u32, 169 pub flags: u32, 170 } 171 #[repr(C)] 172 #[derive(Debug, Default, Copy, Clone)] 173 pub struct virgl_renderer_hdr { 174 pub stype: u32, 175 pub stype_version: u32, 176 pub size: u32, 177 } 178 #[repr(C)] 179 #[derive(Debug, Default, Copy, Clone)] 180 pub struct virgl_renderer_export_query { 181 pub hdr: virgl_renderer_hdr, 182 pub in_resource_id: u32, 183 pub out_num_fds: u32, 184 pub in_export_fds: u32, 185 pub out_fourcc: u32, 186 pub pad: u32, 187 pub out_fds: [i32; 4usize], 188 pub out_strides: [u32; 4usize], 189 pub out_offsets: [u32; 4usize], 190 pub out_modifier: u64, 191 } 192 #[repr(C)] 193 #[derive(Debug, Default, Copy, Clone)] 194 pub struct virgl_renderer_supported_structures { 195 pub hdr: virgl_renderer_hdr, 196 pub in_stype_version: u32, 197 pub out_supported_structures_mask: u32, 198 } 199 extern "C" { virgl_renderer_resource_create( args: *mut virgl_renderer_resource_create_args, iov: *mut iovec, num_iovs: u32, ) -> ::std::os::raw::c_int200 pub fn virgl_renderer_resource_create( 201 args: *mut virgl_renderer_resource_create_args, 202 iov: *mut iovec, 203 num_iovs: u32, 204 ) -> ::std::os::raw::c_int; 205 } 206 extern "C" { virgl_renderer_resource_import_eglimage( args: *mut virgl_renderer_resource_create_args, image: *mut ::std::os::raw::c_void, ) -> ::std::os::raw::c_int207 pub fn virgl_renderer_resource_import_eglimage( 208 args: *mut virgl_renderer_resource_create_args, 209 image: *mut ::std::os::raw::c_void, 210 ) -> ::std::os::raw::c_int; 211 } 212 extern "C" { virgl_renderer_resource_unref(res_handle: u32)213 pub fn virgl_renderer_resource_unref(res_handle: u32); 214 } 215 extern "C" { virgl_renderer_resource_set_priv(res_handle: u32, priv_: *mut ::std::os::raw::c_void)216 pub fn virgl_renderer_resource_set_priv(res_handle: u32, priv_: *mut ::std::os::raw::c_void); 217 } 218 extern "C" { virgl_renderer_resource_get_priv(res_handle: u32) -> *mut ::std::os::raw::c_void219 pub fn virgl_renderer_resource_get_priv(res_handle: u32) -> *mut ::std::os::raw::c_void; 220 } 221 extern "C" { virgl_renderer_context_create( handle: u32, nlen: u32, name: *const ::std::os::raw::c_char, ) -> ::std::os::raw::c_int222 pub fn virgl_renderer_context_create( 223 handle: u32, 224 nlen: u32, 225 name: *const ::std::os::raw::c_char, 226 ) -> ::std::os::raw::c_int; 227 } 228 extern "C" { virgl_renderer_context_destroy(handle: u32)229 pub fn virgl_renderer_context_destroy(handle: u32); 230 } 231 extern "C" { virgl_renderer_submit_cmd( buffer: *mut ::std::os::raw::c_void, ctx_id: ::std::os::raw::c_int, ndw: ::std::os::raw::c_int, ) -> ::std::os::raw::c_int232 pub fn virgl_renderer_submit_cmd( 233 buffer: *mut ::std::os::raw::c_void, 234 ctx_id: ::std::os::raw::c_int, 235 ndw: ::std::os::raw::c_int, 236 ) -> ::std::os::raw::c_int; 237 } 238 extern "C" { virgl_renderer_transfer_read_iov( handle: u32, ctx_id: u32, level: u32, stride: u32, layer_stride: u32, box_: *mut virgl_box, offset: u64, iov: *mut iovec, iovec_cnt: ::std::os::raw::c_int, ) -> ::std::os::raw::c_int239 pub fn virgl_renderer_transfer_read_iov( 240 handle: u32, 241 ctx_id: u32, 242 level: u32, 243 stride: u32, 244 layer_stride: u32, 245 box_: *mut virgl_box, 246 offset: u64, 247 iov: *mut iovec, 248 iovec_cnt: ::std::os::raw::c_int, 249 ) -> ::std::os::raw::c_int; 250 } 251 extern "C" { virgl_renderer_transfer_write_iov( handle: u32, ctx_id: u32, level: ::std::os::raw::c_int, stride: u32, layer_stride: u32, box_: *mut virgl_box, offset: u64, iovec: *mut iovec, iovec_cnt: ::std::os::raw::c_uint, ) -> ::std::os::raw::c_int252 pub fn virgl_renderer_transfer_write_iov( 253 handle: u32, 254 ctx_id: u32, 255 level: ::std::os::raw::c_int, 256 stride: u32, 257 layer_stride: u32, 258 box_: *mut virgl_box, 259 offset: u64, 260 iovec: *mut iovec, 261 iovec_cnt: ::std::os::raw::c_uint, 262 ) -> ::std::os::raw::c_int; 263 } 264 extern "C" { virgl_renderer_get_cap_set(set: u32, max_ver: *mut u32, max_size: *mut u32)265 pub fn virgl_renderer_get_cap_set(set: u32, max_ver: *mut u32, max_size: *mut u32); 266 } 267 extern "C" { virgl_renderer_fill_caps(set: u32, version: u32, caps: *mut ::std::os::raw::c_void)268 pub fn virgl_renderer_fill_caps(set: u32, version: u32, caps: *mut ::std::os::raw::c_void); 269 } 270 extern "C" { virgl_renderer_resource_attach_iov( res_handle: ::std::os::raw::c_int, iov: *mut iovec, num_iovs: ::std::os::raw::c_int, ) -> ::std::os::raw::c_int271 pub fn virgl_renderer_resource_attach_iov( 272 res_handle: ::std::os::raw::c_int, 273 iov: *mut iovec, 274 num_iovs: ::std::os::raw::c_int, 275 ) -> ::std::os::raw::c_int; 276 } 277 extern "C" { virgl_renderer_resource_detach_iov( res_handle: ::std::os::raw::c_int, iov: *mut *mut iovec, num_iovs: *mut ::std::os::raw::c_int, )278 pub fn virgl_renderer_resource_detach_iov( 279 res_handle: ::std::os::raw::c_int, 280 iov: *mut *mut iovec, 281 num_iovs: *mut ::std::os::raw::c_int, 282 ); 283 } 284 extern "C" { virgl_renderer_create_fence( client_fence_id: ::std::os::raw::c_int, ctx_id: u32, ) -> ::std::os::raw::c_int285 pub fn virgl_renderer_create_fence( 286 client_fence_id: ::std::os::raw::c_int, 287 ctx_id: u32, 288 ) -> ::std::os::raw::c_int; 289 } 290 extern "C" { virgl_renderer_force_ctx_0()291 pub fn virgl_renderer_force_ctx_0(); 292 } 293 extern "C" { virgl_renderer_ctx_attach_resource( ctx_id: ::std::os::raw::c_int, res_handle: ::std::os::raw::c_int, )294 pub fn virgl_renderer_ctx_attach_resource( 295 ctx_id: ::std::os::raw::c_int, 296 res_handle: ::std::os::raw::c_int, 297 ); 298 } 299 extern "C" { virgl_renderer_ctx_detach_resource( ctx_id: ::std::os::raw::c_int, res_handle: ::std::os::raw::c_int, )300 pub fn virgl_renderer_ctx_detach_resource( 301 ctx_id: ::std::os::raw::c_int, 302 res_handle: ::std::os::raw::c_int, 303 ); 304 } 305 #[repr(C)] 306 #[derive(Debug, Default, Copy, Clone)] 307 pub struct virgl_renderer_resource_info { 308 pub handle: u32, 309 pub virgl_format: u32, 310 pub width: u32, 311 pub height: u32, 312 pub depth: u32, 313 pub flags: u32, 314 pub tex_id: u32, 315 pub stride: u32, 316 pub drm_fourcc: ::std::os::raw::c_int, 317 } 318 extern "C" { virgl_renderer_resource_get_info( res_handle: ::std::os::raw::c_int, info: *mut virgl_renderer_resource_info, ) -> ::std::os::raw::c_int319 pub fn virgl_renderer_resource_get_info( 320 res_handle: ::std::os::raw::c_int, 321 info: *mut virgl_renderer_resource_info, 322 ) -> ::std::os::raw::c_int; 323 } 324 extern "C" { virgl_renderer_cleanup(cookie: *mut ::std::os::raw::c_void)325 pub fn virgl_renderer_cleanup(cookie: *mut ::std::os::raw::c_void); 326 } 327 extern "C" { virgl_renderer_reset()328 pub fn virgl_renderer_reset(); 329 } 330 extern "C" { virgl_renderer_get_poll_fd() -> ::std::os::raw::c_int331 pub fn virgl_renderer_get_poll_fd() -> ::std::os::raw::c_int; 332 } 333 extern "C" { virgl_renderer_execute( execute_args: *mut ::std::os::raw::c_void, execute_size: u32, ) -> ::std::os::raw::c_int334 pub fn virgl_renderer_execute( 335 execute_args: *mut ::std::os::raw::c_void, 336 execute_size: u32, 337 ) -> ::std::os::raw::c_int; 338 } 339 extern "C" { virgl_renderer_context_create_with_flags( ctx_id: u32, ctx_flags: u32, nlen: u32, name: *const ::std::os::raw::c_char, ) -> ::std::os::raw::c_int340 pub fn virgl_renderer_context_create_with_flags( 341 ctx_id: u32, 342 ctx_flags: u32, 343 nlen: u32, 344 name: *const ::std::os::raw::c_char, 345 ) -> ::std::os::raw::c_int; 346 } 347 #[repr(C)] 348 #[derive(Debug, Copy, Clone)] 349 pub struct virgl_renderer_resource_create_blob_args { 350 pub res_handle: u32, 351 pub ctx_id: u32, 352 pub blob_mem: u32, 353 pub blob_flags: u32, 354 pub blob_id: u64, 355 pub size: u64, 356 pub iovecs: *const iovec, 357 pub num_iovs: u32, 358 } 359 impl Default for virgl_renderer_resource_create_blob_args { default() -> Self360 fn default() -> Self { 361 let mut s = ::std::mem::MaybeUninit::<Self>::uninit(); 362 unsafe { 363 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); 364 s.assume_init() 365 } 366 } 367 } 368 extern "C" { virgl_renderer_resource_create_blob( args: *const virgl_renderer_resource_create_blob_args, ) -> ::std::os::raw::c_int369 pub fn virgl_renderer_resource_create_blob( 370 args: *const virgl_renderer_resource_create_blob_args, 371 ) -> ::std::os::raw::c_int; 372 } 373 extern "C" { virgl_renderer_resource_map( res_handle: u32, map: *mut *mut ::std::os::raw::c_void, out_size: *mut u64, ) -> ::std::os::raw::c_int374 pub fn virgl_renderer_resource_map( 375 res_handle: u32, 376 map: *mut *mut ::std::os::raw::c_void, 377 out_size: *mut u64, 378 ) -> ::std::os::raw::c_int; 379 } 380 extern "C" { virgl_renderer_resource_unmap(res_handle: u32) -> ::std::os::raw::c_int381 pub fn virgl_renderer_resource_unmap(res_handle: u32) -> ::std::os::raw::c_int; 382 } 383 extern "C" { virgl_renderer_resource_get_map_info( res_handle: u32, map_info: *mut u32, ) -> ::std::os::raw::c_int384 pub fn virgl_renderer_resource_get_map_info( 385 res_handle: u32, 386 map_info: *mut u32, 387 ) -> ::std::os::raw::c_int; 388 } 389 extern "C" { virgl_renderer_resource_export_blob( res_id: u32, fd_type: *mut u32, fd: *mut ::std::os::raw::c_int, ) -> ::std::os::raw::c_int390 pub fn virgl_renderer_resource_export_blob( 391 res_id: u32, 392 fd_type: *mut u32, 393 fd: *mut ::std::os::raw::c_int, 394 ) -> ::std::os::raw::c_int; 395 } 396 #[repr(C)] 397 #[derive(Debug, Default, Copy, Clone)] 398 pub struct virgl_renderer_resource_import_blob_args { 399 pub res_handle: u32, 400 pub blob_mem: u32, 401 pub fd_type: u32, 402 pub fd: ::std::os::raw::c_int, 403 pub size: u64, 404 } 405 extern "C" { virgl_renderer_resource_import_blob( args: *const virgl_renderer_resource_import_blob_args, ) -> ::std::os::raw::c_int406 pub fn virgl_renderer_resource_import_blob( 407 args: *const virgl_renderer_resource_import_blob_args, 408 ) -> ::std::os::raw::c_int; 409 } 410 extern "C" { virgl_renderer_export_fence( client_fence_id: u32, fd: *mut ::std::os::raw::c_int, ) -> ::std::os::raw::c_int411 pub fn virgl_renderer_export_fence( 412 client_fence_id: u32, 413 fd: *mut ::std::os::raw::c_int, 414 ) -> ::std::os::raw::c_int; 415 } 416 extern "C" { virgl_renderer_context_create_fence( ctx_id: u32, flags: u32, queue_id: u64, fence_cookie: *mut ::std::os::raw::c_void, ) -> ::std::os::raw::c_int417 pub fn virgl_renderer_context_create_fence( 418 ctx_id: u32, 419 flags: u32, 420 queue_id: u64, 421 fence_cookie: *mut ::std::os::raw::c_void, 422 ) -> ::std::os::raw::c_int; 423 } 424 extern "C" { virgl_renderer_context_poll(ctx_id: u32)425 pub fn virgl_renderer_context_poll(ctx_id: u32); 426 } 427 extern "C" { virgl_renderer_context_get_poll_fd(ctx_id: u32) -> ::std::os::raw::c_int428 pub fn virgl_renderer_context_get_poll_fd(ctx_id: u32) -> ::std::os::raw::c_int; 429 } 430