summary refs log tree commit diff
diff options
context:
space:
mode:
authorGurchetan Singh <gurchetansingh@chromium.org>2019-08-30 17:15:54 -0700
committerCommit Bot <commit-bot@chromium.org>2019-10-01 07:53:30 +0000
commitf585543065c052fc67d3e9f8683e6a91395ca1ae (patch)
tree62549ca38710eb91b320864fccd31d4d7cfd5415
parentc554fff2064cf04fe89121ec86889b32a56bf195 (diff)
downloadcrosvm-f585543065c052fc67d3e9f8683e6a91395ca1ae.tar
crosvm-f585543065c052fc67d3e9f8683e6a91395ca1ae.tar.gz
crosvm-f585543065c052fc67d3e9f8683e6a91395ca1ae.tar.bz2
crosvm-f585543065c052fc67d3e9f8683e6a91395ca1ae.tar.lz
crosvm-f585543065c052fc67d3e9f8683e6a91395ca1ae.tar.xz
crosvm-f585543065c052fc67d3e9f8683e6a91395ca1ae.tar.zst
crosvm-f585543065c052fc67d3e9f8683e6a91395ca1ae.zip
gpu_renderer: update bindings
Use virglrenderer to get the metadata associated with a buffer.
We must do this before we allocate the guest kernel pages, so
they agree with host requirements. This implements the rough API
outlined here:

https://gitlab.freedesktop.org/virgl/virglrenderer/issues/119

Probably we want this in virv-renderer eventually, but that may take
some time, so for prototyping just use non-upstreamed virglrenderer
functions.

BUG=chromium:924405
TEST=compile

Change-Id: If78f274c813c2131b297144172019848806e3a0e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1790831
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Auto-Submit: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
-rw-r--r--gpu_renderer/src/generated/virglrenderer.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/gpu_renderer/src/generated/virglrenderer.rs b/gpu_renderer/src/generated/virglrenderer.rs
index 089d1b4..01bf219 100644
--- a/gpu_renderer/src/generated/virglrenderer.rs
+++ b/gpu_renderer/src/generated/virglrenderer.rs
@@ -116,6 +116,7 @@ extern "C" {
 }
 pub const VIRGL_RENDERER_STRUCTURE_TYPE_NONE: virgl_renderer_structure_type_v0 = 0;
 pub const VIRGL_RENDERER_STRUCTURE_TYPE_EXPORT_QUERY: virgl_renderer_structure_type_v0 = 1;
+pub const VIRGL_RENDERER_STRUCTURE_TYPE_SUPPORTED_STRUCTURES: virgl_renderer_structure_type_v0 = 2;
 pub type virgl_renderer_structure_type_v0 = u32;
 #[repr(C)]
 #[derive(Debug, Default, Copy, Clone)]
@@ -153,6 +154,13 @@ pub struct virgl_renderer_export_query {
     pub out_offsets: [u32; 4usize],
     pub out_modifier: u64,
 }
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct virgl_renderer_supported_structures {
+    pub hdr: virgl_renderer_hdr,
+    pub in_stype_version: u32,
+    pub out_supported_structures_mask: 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),
 >;
@@ -299,6 +307,26 @@ extern "C" {
         execute_size: u32,
     ) -> ::std::os::raw::c_int;
 }
+extern "C" {
+    pub fn virgl_renderer_allocation_metadata(
+        request: *const ::std::os::raw::c_void,
+        response: *mut ::std::os::raw::c_void,
+        request_size: u32,
+        response_size: u32,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn virgl_renderer_resource_create_v2(
+        resource_id: u32,
+        guest_memory_type: u32,
+        guest_caching_type: u32,
+        size: u64,
+        iovec: *const iovec,
+        num_iovs: u32,
+        args: *const ::std::os::raw::c_void,
+        args_size: u32,
+    ) -> ::std::os::raw::c_int;
+}
 pub type __builtin_va_list = [__va_list_tag; 1usize];
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]