// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

/* automatically generated by rust-bindgen */

#[link(name = "virglrenderer")]
extern "C" {}

pub const VIRGL_RENDERER_CALLBACKS_VERSION: u32 = 2;
pub const VIRGL_RENDERER_USE_EGL: u32 = 1;
pub const VIRGL_RENDERER_THREAD_SYNC: u32 = 2;
pub const VIRGL_RENDERER_USE_GLX: u32 = 4;
pub const VIRGL_RENDERER_USE_SURFACELESS: u32 = 8;
pub const VIRGL_RENDERER_USE_GLES: u32 = 16;
pub const VIRGL_RES_BIND_DEPTH_STENCIL: u32 = 1;
pub const VIRGL_RES_BIND_RENDER_TARGET: u32 = 2;
pub const VIRGL_RES_BIND_SAMPLER_VIEW: u32 = 8;
pub const VIRGL_RES_BIND_VERTEX_BUFFER: u32 = 16;
pub const VIRGL_RES_BIND_INDEX_BUFFER: u32 = 32;
pub const VIRGL_RES_BIND_CONSTANT_BUFFER: u32 = 64;
pub const VIRGL_RES_BIND_STREAM_OUTPUT: u32 = 2048;
pub const VIRGL_RES_BIND_CURSOR: u32 = 65536;
pub const VIRGL_RES_BIND_CUSTOM: u32 = 131072;
pub const VIRGL_RES_BIND_SCANOUT: u32 = 262144;
pub type __uint32_t = ::std::os::raw::c_uint;
pub type __uint64_t = ::std::os::raw::c_ulong;
pub type va_list = __builtin_va_list;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct virgl_box {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct iovec {
    _unused: [u8; 0],
}
pub type virgl_renderer_gl_context = *mut ::std::os::raw::c_void;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct virgl_renderer_gl_ctx_param {
    pub version: ::std::os::raw::c_int,
    pub shared: bool,
    pub major_ver: ::std::os::raw::c_int,
    pub minor_ver: ::std::os::raw::c_int,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct virgl_renderer_callbacks {
    pub version: ::std::os::raw::c_int,
    pub write_fence: ::std::option::Option<
        unsafe extern "C" fn(cookie: *mut ::std::os::raw::c_void, fence: u32),
    >,
    pub create_gl_context: ::std::option::Option<
        unsafe extern "C" fn(
            cookie: *mut ::std::os::raw::c_void,
            scanout_idx: ::std::os::raw::c_int,
            param: *mut virgl_renderer_gl_ctx_param,
        ) -> virgl_renderer_gl_context,
    >,
    pub destroy_gl_context: ::std::option::Option<
        unsafe extern "C" fn(cookie: *mut ::std::os::raw::c_void, ctx: virgl_renderer_gl_context),
    >,
    pub make_current: ::std::option::Option<
        unsafe extern "C" fn(
            cookie: *mut ::std::os::raw::c_void,
            scanout_idx: ::std::os::raw::c_int,
            ctx: virgl_renderer_gl_context,
        ) -> ::std::os::raw::c_int,
    >,
    pub get_drm_fd: ::std::option::Option<
        unsafe extern "C" fn(cookie: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
    >,
}
extern "C" {
    pub fn 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_int;
}
extern "C" {
    pub fn virgl_renderer_poll();
}
extern "C" {
    pub fn virgl_renderer_get_cursor_data(
        resource_id: u32,
        width: *mut u32,
        height: *mut u32,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    pub fn 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,
    );
}
extern "C" {
    pub fn virgl_renderer_get_fd_for_texture(
        tex_id: u32,
        fd: *mut ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn 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_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct virgl_renderer_resource_create_args {
    pub handle: u32,
    pub target: u32,
    pub format: u32,
    pub bind: u32,
    pub width: u32,
    pub height: u32,
    pub depth: u32,
    pub array_size: u32,
    pub last_level: u32,
    pub nr_samples: u32,
    pub flags: u32,
}
pub type virgl_debug_callback_type = ::std::option::Option<
    unsafe extern "C" fn(fmt: *const ::std::os::raw::c_char, ap: *mut __va_list_tag),
>;
extern "C" {
    pub fn virgl_renderer_resource_create(
        args: *mut virgl_renderer_resource_create_args,
        iov: *mut iovec,
        num_iovs: u32,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn virgl_renderer_resource_import_eglimage(
        args: *mut virgl_renderer_resource_create_args,
        image: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn virgl_renderer_resource_unref(res_handle: u32);
}
extern "C" {
    pub fn virgl_renderer_resource_set_priv(res_handle: u32, priv_: *mut ::std::os::raw::c_void);
}
extern "C" {
    pub fn virgl_renderer_resource_get_priv(res_handle: u32) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    pub fn virgl_renderer_context_create(
        handle: u32,
        nlen: u32,
        name: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn virgl_renderer_context_destroy(handle: u32);
}
extern "C" {
    pub fn 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_int;
}
extern "C" {
    pub fn 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_int;
}
extern "C" {
    pub fn 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_int;
}
extern "C" {
    pub fn virgl_renderer_get_cap_set(set: u32, max_ver: *mut u32, max_size: *mut u32);
}
extern "C" {
    pub fn virgl_renderer_fill_caps(set: u32, version: u32, caps: *mut ::std::os::raw::c_void);
}
extern "C" {
    pub fn 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_int;
}
extern "C" {
    pub fn virgl_renderer_resource_detach_iov(
        res_handle: ::std::os::raw::c_int,
        iov: *mut *mut iovec,
        num_iovs: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn virgl_renderer_create_fence(
        client_fence_id: ::std::os::raw::c_int,
        ctx_id: u32,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn virgl_renderer_force_ctx_0();
}
extern "C" {
    pub fn virgl_renderer_ctx_attach_resource(
        ctx_id: ::std::os::raw::c_int,
        res_handle: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn virgl_renderer_ctx_detach_resource(
        ctx_id: ::std::os::raw::c_int,
        res_handle: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn virgl_set_debug_callback(cb: virgl_debug_callback_type) -> virgl_debug_callback_type;
}
#[repr(C)]
#[derive(Default, Debug, Copy, Clone)]
pub struct virgl_renderer_resource_info {
    pub handle: u32,
    pub virgl_format: u32,
    pub width: u32,
    pub height: u32,
    pub depth: u32,
    pub flags: u32,
    pub tex_id: u32,
    pub stride: u32,
    pub drm_fourcc: ::std::os::raw::c_int,
}
extern "C" {
    pub fn virgl_renderer_resource_get_info(
        res_handle: ::std::os::raw::c_int,
        info: *mut virgl_renderer_resource_info,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn virgl_renderer_cleanup(cookie: *mut ::std::os::raw::c_void);
}
extern "C" {
    pub fn virgl_renderer_reset();
}
extern "C" {
    pub fn virgl_renderer_get_poll_fd() -> ::std::os::raw::c_int;
}
pub type __builtin_va_list = [__va_list_tag; 1usize];
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __va_list_tag {
    pub gp_offset: ::std::os::raw::c_uint,
    pub fp_offset: ::std::os::raw::c_uint,
    pub overflow_arg_area: *mut ::std::os::raw::c_void,
    pub reg_save_area: *mut ::std::os::raw::c_void,
}
