summary refs log tree commit diff
path: root/devices/src/virtio/gpu/backend.rs
diff options
context:
space:
mode:
authorGurchetan Singh <gurchetansingh@chromium.org>2019-04-23 10:27:49 -0700
committerCommit Bot <commit-bot@chromium.org>2019-10-01 07:53:33 +0000
commit5b636babc1e83b7187ef72bd85b3a3bdc2e5d03f (patch)
tree1c856e04303e3c2882a140d2be45015bdb621b2e /devices/src/virtio/gpu/backend.rs
parent144c279d281cb2e69caeb8504ff7267d268c4561 (diff)
downloadcrosvm-5b636babc1e83b7187ef72bd85b3a3bdc2e5d03f.tar
crosvm-5b636babc1e83b7187ef72bd85b3a3bdc2e5d03f.tar.gz
crosvm-5b636babc1e83b7187ef72bd85b3a3bdc2e5d03f.tar.bz2
crosvm-5b636babc1e83b7187ef72bd85b3a3bdc2e5d03f.tar.lz
crosvm-5b636babc1e83b7187ef72bd85b3a3bdc2e5d03f.tar.xz
crosvm-5b636babc1e83b7187ef72bd85b3a3bdc2e5d03f.tar.zst
crosvm-5b636babc1e83b7187ef72bd85b3a3bdc2e5d03f.zip
virtio-gpu: handle VIRTIO_GPU_CMD_ALLOCATION_METADATA
Designed to return metadata to the guest.

BUG=chromium:924405
TEST=compile

Change-Id: Ic04a0bbb6b0a5bb6d08314371181f256eb7230df
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1591464
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 'devices/src/virtio/gpu/backend.rs')
-rw-r--r--devices/src/virtio/gpu/backend.rs28
1 files changed, 26 insertions, 2 deletions
diff --git a/devices/src/virtio/gpu/backend.rs b/devices/src/virtio/gpu/backend.rs
index 9415226..4cfac7a 100644
--- a/devices/src/virtio/gpu/backend.rs
+++ b/devices/src/virtio/gpu/backend.rs
@@ -23,8 +23,8 @@ use gpu_renderer::{
 };
 
 use super::protocol::{
-    GpuResponse, GpuResponsePlaneInfo, VIRTIO_GPU_CAPSET3, VIRTIO_GPU_CAPSET_VIRGL,
-    VIRTIO_GPU_CAPSET_VIRGL2,
+    AllocationMetadataResponse, GpuResponse, GpuResponsePlaneInfo, VIRTIO_GPU_CAPSET3,
+    VIRTIO_GPU_CAPSET_VIRGL, VIRTIO_GPU_CAPSET_VIRGL2,
 };
 use crate::virtio::resource_bridge::*;
 use vm_control::VmMemoryControlRequestSocket;
@@ -778,4 +778,28 @@ impl Backend {
     pub fn force_ctx_0(&mut self) {
         self.renderer.force_ctx_0();
     }
+
+    pub fn allocation_metadata(
+        &mut self,
+        request_id: u32,
+        request: Vec<u8>,
+        mut response: Vec<u8>,
+    ) -> GpuResponse {
+        let res = self.renderer.allocation_metadata(&request, &mut response);
+
+        match res {
+            Ok(_) => {
+                let res_info = AllocationMetadataResponse {
+                    request_id,
+                    response,
+                };
+
+                GpuResponse::OkAllocationMetadata { res_info }
+            }
+            Err(_) => {
+                error!("failed to get metadata");
+                GpuResponse::ErrUnspec
+            }
+        }
+    }
 }