devices: virtio: add bindings to a new capset

This is useful for prototyping new virtgpu features (zero copy, YUV, Vulkan)
without stepping on virglrenderer's capsets.

Initially, the plan is just to transparently support zero-copy in ARCVM.

The bindings were generated from the following header:

https://gitlab.freedesktop.org/gurchetansingh/virtio-gpu-test/blob/master/virtgpu_hw.h
Generated via:

bindgen --with-derive-default virtgpu_hw.h -o virtgpu_hw.rs --no-doc-comments --no-layout-tests \
        --whitelist-type=virtgpu_.+ --whitelist-var VIRTGPU_.+ --no-prepend-enum-name

BUG=chromium:924405
TEST=compile

Change-Id: I6000244faa0d619c3ac74105713e63a52d0d9cb4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1650289
Reviewed-by: David Riley <davidriley@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
This commit is contained in:
Gurchetan Singh 2019-06-06 16:45:56 -07:00 committed by Commit Bot
parent ab827ab177
commit 33626056f4
3 changed files with 133 additions and 0 deletions

View file

@ -176,6 +176,7 @@ def main(argv):
print('#![allow(non_upper_case_globals)]', file=f)
for module in modules:
print('pub mod', module[0] + ';', file=f)
print('pub mod virtgpu_hw;', file=f)
if __name__ == '__main__':

View file

@ -12,3 +12,4 @@ pub mod p_defines;
pub mod p_format;
pub mod virgl_protocol;
pub mod virglrenderer;
pub mod virtgpu_hw;

View file

@ -0,0 +1,131 @@
/* automatically generated by rust-bindgen */
pub const VIRTGPU_NAME_DWORDS: u32 = 4;
pub const VIRTGPU_MAX_MEMORY_TYPES: u32 = 8;
pub const VIRTGPU_MAX_MEMORY_HEAPS: u32 = 8;
pub type __uint32_t = ::std::os::raw::c_uint;
pub type __uint64_t = ::std::os::raw::c_ulong;
pub const VIRTGPU_MEMORY_NONE_BIT: virtgpu_memory_flagbits = 0;
pub const VIRTGPU_MEMORY_DEVICE_LOCAL_BIT: virtgpu_memory_flagbits = 1;
pub const VIRTGPU_MEMORY_HOST_VISIBLE_BIT: virtgpu_memory_flagbits = 2;
pub const VIRTGPU_MEMORY_HOST_COHERENT_BIT: virtgpu_memory_flagbits = 4;
pub const VIRTGPU_MEMORY_HOST_CACHED_BIT: virtgpu_memory_flagbits = 8;
pub const VIRTGPU_MEMORY_LAZILY_ALLOCATED_BIT: virtgpu_memory_flagbits = 16;
pub const VIRTGPU_MEMORY_PROTECTED_BIT: virtgpu_memory_flagbits = 32;
pub const VIRTGPU_MEMORY_HOST_WRITECOMBINE_BIT: virtgpu_memory_flagbits = 64;
pub type virtgpu_memory_flagbits = u32;
pub const VIRTGPU_HEAP_NONE_BIT: virtgpu_heap_flagbits = 0;
pub const VIRTGPU_HEAP_DEVICE_LOCAL_BIT: virtgpu_heap_flagbits = 1;
pub const VIRTGPU_HEAP_MULTI_INSTANCE_BIT: virtgpu_heap_flagbits = 2;
pub type virtgpu_heap_flagbits = u32;
pub const VIRTGPU_HOST_ALLOCATOR_NONE: virtgpu_host_allocator = 0;
pub const VIRTGPU_HOST_ALLOCATOR_GPU: virtgpu_host_allocator = 1;
pub const VIRTGPU_HOST_ALLOCATOR_GBM: virtgpu_host_allocator = 2;
pub const VIRTGPU_HOST_ALLOCATOR_UDMABUF: virtgpu_host_allocator = 3;
pub type virtgpu_host_allocator = u32;
pub const VIRTGPU_STRUCTURE_TYPE_NONE: virtgpu_structure_type_v0 = 0;
pub const VIRTGPU_STRUCTURE_TYPE_RESOURCE_CREATE_V2: virtgpu_structure_type_v0 = 1;
pub const VIRTGPU_STRUCTURE_TYPE_RESOURCE_CREATE_V2_RESPONSE: virtgpu_structure_type_v0 = 2;
pub const VIRTGPU_STRUCTURE_TYPE_MEMORY_CREATE: virtgpu_structure_type_v0 = 4;
pub type virtgpu_structure_type_v0 = u32;
pub const VIRTGPU_EXTERNAL_HANDLE_TYPE_NONE: virtgpu_external_handle_flagbits = 0;
pub const VIRTGPU_EXTERNAL_HANDLE_TYPE_OPAQUE_FD_BIT: virtgpu_external_handle_flagbits = 1;
pub const VIRTGPU_EXTERNAL_HANDLE_TYPE_HOST_ALLOCATION_BIT: virtgpu_external_handle_flagbits = 128;
pub const VIRTGPU_EXTERNAL_HANDLE_TYPE_MAPPED_FOREIGN_MEMORY: virtgpu_external_handle_flagbits =
256;
pub const VIRTGPU_EXTERNAL_HANDLE_TYPE_DMA_BUF_BIT: virtgpu_external_handle_flagbits = 512;
pub type virtgpu_external_handle_flagbits = u32;
pub const VIRTGPU_EXTERNAL_HANDLE_FEATURE_NONE: virtgpu_external_handle_feature_flagbits = 0;
pub const VIRTGPU_EXTERNAL_HANDLE_FEATURE_DEDICATED_ONLY_BIT:
virtgpu_external_handle_feature_flagbits = 1;
pub const VIRTGPU_EXTERNAL_HANDLE_FEATURE_EXPORTABLE_BIT: virtgpu_external_handle_feature_flagbits =
2;
pub const VIRTGPU_EXTERNAL_HANDLE_FEATURE_IMPORTABLE_BIT: virtgpu_external_handle_feature_flagbits =
4;
pub type virtgpu_external_handle_feature_flagbits = u32;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct virtgpu_memory_heap {
pub allocator: u32,
pub heap_flags: u32,
pub size: u64,
pub heap_budget: u64,
pub heap_usage: u64,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct virtgpu_memory_type {
pub property_flags: u32,
pub heap_index: u32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct virtgpu_memory_properties {
pub memory_type_count: u32,
pub memory_heap_count: u32,
pub memory_types: [virtgpu_memory_type; 8usize],
pub memory_heaps: [virtgpu_memory_heap; 8usize],
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct virtgpu_hdr {
pub stype: u32,
pub stype_version: u32,
pub size: u32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct virtgpu_resource_create_v2 {
pub hdr: virtgpu_hdr,
pub flags: u32,
pub type_: u32,
pub format: u32,
pub width: u32,
pub height: u32,
pub depth: u32,
pub last_level: u32,
pub array_size: u32,
pub nr_samples: u32,
pub tiling: u32,
pub usage: u32,
pub sharing_mode: u32,
pub queue_idx_count: u32,
pub layout: u32,
pub allocator: u32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct virtgpu_resource_create_v2_response {
pub hdr: virtgpu_hdr,
pub memory_bits: u32,
pub offsets: [u32; 4usize],
pub strides: [u32; 4usize],
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct virtgpu_external_create_info {
pub hdr: virtgpu_hdr,
pub handle_types: u32,
pub pad: u32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct virtgpu_dedicated_allocate_info {
pub hdr: virtgpu_hdr,
pub buffer: u32,
pub image: u32,
pub pad: u32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct virtgpu_memory_create {
pub hdr: virtgpu_hdr,
pub host_memory_index: u32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct virtgpu_caps {
pub supported_structures_mask_v0: u32,
pub drm_driver_name: [u32; 4usize],
pub memory_properties: virtgpu_memory_properties,
}