summary refs log tree commit diff
diff options
context:
space:
mode:
-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> {