summary refs log tree commit diff
path: root/devices/src/virtio/gpu
diff options
context:
space:
mode:
authorDavid Riley <davidriley@chromium.org>2018-10-17 16:01:48 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-10-23 22:50:43 -0700
commit64cc43d2b89bd26fa397bda395a84a128c0df623 (patch)
tree938f42edcc1b88ec0601561f74c20057c4398591 /devices/src/virtio/gpu
parent4ad6de0dbceb72b668e08107c9cc56a9b43e2c33 (diff)
downloadcrosvm-64cc43d2b89bd26fa397bda395a84a128c0df623.tar
crosvm-64cc43d2b89bd26fa397bda395a84a128c0df623.tar.gz
crosvm-64cc43d2b89bd26fa397bda395a84a128c0df623.tar.bz2
crosvm-64cc43d2b89bd26fa397bda395a84a128c0df623.tar.lz
crosvm-64cc43d2b89bd26fa397bda395a84a128c0df623.tar.xz
crosvm-64cc43d2b89bd26fa397bda395a84a128c0df623.tar.zst
crosvm-64cc43d2b89bd26fa397bda395a84a128c0df623.zip
devices: gpu: Have BackBuffer use renderer resource when attaching backing.
If a BackBuffer has some gpu_renderer_resource, attach the backing
through to virgl to allow resources to be transfered in the future.

BUG=chromium:892261
TEST=eglgears_x11, xterm, xeyes

Change-Id: I9c4310da8eba73ec69dbaeba340b362c22fb21a0
Reviewed-on: https://chromium-review.googlesource.com/1288960
Commit-Ready: David Riley <davidriley@chromium.org>
Tested-by: David Riley <davidriley@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'devices/src/virtio/gpu')
-rw-r--r--devices/src/virtio/gpu/backend.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/devices/src/virtio/gpu/backend.rs b/devices/src/virtio/gpu/backend.rs
index 9c27712..00a327f 100644
--- a/devices/src/virtio/gpu/backend.rs
+++ b/devices/src/virtio/gpu/backend.rs
@@ -203,12 +203,20 @@ impl VirglResource for BackedBuffer {
         self.buffer.height()
     }
 
-    fn attach_guest_backing(&mut self, _mem: &GuestMemory, vecs: Vec<(GuestAddress, usize)>) {
-        self.backing = vecs;
+    fn attach_guest_backing(&mut self, mem: &GuestMemory, vecs: Vec<(GuestAddress, usize)>) {
+        self.backing = vecs.clone();
+        if let Some(ref mut resource) = self.gpu_renderer_resource {
+            if let Err(e) = resource.attach_backing(&vecs[..], mem) {
+                error!("failed to attach backing to BackBuffer resource: {}", e);
+            }
+        }
     }
 
     fn detach_guest_backing(&mut self) {
-        self.backing.clear()
+        if let Some(ref mut resource) = self.gpu_renderer_resource {
+            resource.detach_backing();
+        }
+        self.backing.clear();
     }
 
     fn gpu_renderer_resource(&mut self) -> Option<&mut GpuRendererResource> {