summary refs log tree commit diff
path: root/gpu_renderer
diff options
context:
space:
mode:
authorGurchetan Singh <gurchetansingh@chromium.org>2019-06-06 16:45:56 -0700
committerCommit Bot <commit-bot@chromium.org>2019-07-03 05:42:27 +0000
commit33626056f41b366d526940a7d7a8b5c8d440e67e (patch)
treed653eb21ca18b70f18e45dfebbc24bdd7456856a /gpu_renderer
parentab827ab177971b5f0f948d1c1feb3c6e5ff481eb (diff)
downloadcrosvm-33626056f41b366d526940a7d7a8b5c8d440e67e.tar
crosvm-33626056f41b366d526940a7d7a8b5c8d440e67e.tar.gz
crosvm-33626056f41b366d526940a7d7a8b5c8d440e67e.tar.bz2
crosvm-33626056f41b366d526940a7d7a8b5c8d440e67e.tar.lz
crosvm-33626056f41b366d526940a7d7a8b5c8d440e67e.tar.xz
crosvm-33626056f41b366d526940a7d7a8b5c8d440e67e.tar.zst
crosvm-33626056f41b366d526940a7d7a8b5c8d440e67e.zip
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>
Diffstat (limited to 'gpu_renderer')
-rwxr-xr-xgpu_renderer/src/generated/generate.py1
-rw-r--r--gpu_renderer/src/generated/mod.rs1
-rw-r--r--gpu_renderer/src/generated/virtgpu_hw.rs131
3 files changed, 133 insertions, 0 deletions
diff --git a/gpu_renderer/src/generated/generate.py b/gpu_renderer/src/generated/generate.py
index 923cd70..f89c857 100755
--- a/gpu_renderer/src/generated/generate.py
+++ b/gpu_renderer/src/generated/generate.py
@@ -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__':
diff --git a/gpu_renderer/src/generated/mod.rs b/gpu_renderer/src/generated/mod.rs
index d35ed8d..69e3ac4 100644
--- a/gpu_renderer/src/generated/mod.rs
+++ b/gpu_renderer/src/generated/mod.rs
@@ -12,3 +12,4 @@ pub mod p_defines;
 pub mod p_format;
 pub mod virgl_protocol;
 pub mod virglrenderer;
+pub mod virtgpu_hw;
diff --git a/gpu_renderer/src/generated/virtgpu_hw.rs b/gpu_renderer/src/generated/virtgpu_hw.rs
new file mode 100644
index 0000000..be62df9
--- /dev/null
+++ b/gpu_renderer/src/generated/virtgpu_hw.rs
@@ -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,
+}