mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 18:20:34 +00:00
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:
parent
ab827ab177
commit
33626056f4
3 changed files with 133 additions and 0 deletions
|
@ -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__':
|
||||
|
|
|
@ -12,3 +12,4 @@ pub mod p_defines;
|
|||
pub mod p_format;
|
||||
pub mod virgl_protocol;
|
||||
pub mod virglrenderer;
|
||||
pub mod virtgpu_hw;
|
||||
|
|
131
gpu_renderer/src/generated/virtgpu_hw.rs
Normal file
131
gpu_renderer/src/generated/virtgpu_hw.rs
Normal 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,
|
||||
}
|
Loading…
Reference in a new issue