summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--devices/src/virtio/gpu/backend.rs12
-rw-r--r--gpu_renderer/src/lib.rs2
2 files changed, 10 insertions, 4 deletions
diff --git a/devices/src/virtio/gpu/backend.rs b/devices/src/virtio/gpu/backend.rs
index 561ce74..34aada8 100644
--- a/devices/src/virtio/gpu/backend.rs
+++ b/devices/src/virtio/gpu/backend.rs
@@ -18,6 +18,7 @@ use sys_util::{GuestAddress, GuestMemory};
 use super::gpu_buffer::{Device, Buffer, Format, Flags};
 use super::gpu_display::*;
 use super::gpu_renderer::{Box3, Renderer, Context as RendererContext,
+                          Image as RendererImage,
                           Resource as GpuRendererResource, ResourceCreateArgs,
                           format_fourcc as renderer_fourcc};
 
@@ -156,16 +157,19 @@ struct BackedBuffer {
     backing: Vec<(GuestAddress, usize)>,
     buffer: Buffer,
     gpu_renderer_resource: Option<GpuRendererResource>,
+    _image: Option<RendererImage>,
 }
 
 impl BackedBuffer {
     fn new_renderer_registered(buffer: Buffer,
-                               gpu_renderer_resource: GpuRendererResource) -> BackedBuffer {
+                               gpu_renderer_resource: GpuRendererResource,
+                               image: RendererImage) -> BackedBuffer {
         BackedBuffer {
             display_import: None,
             backing: Vec::new(),
             buffer,
             gpu_renderer_resource: Some(gpu_renderer_resource),
+            _image: Some(image),
         }
     }
 }
@@ -177,6 +181,7 @@ impl From<Buffer> for BackedBuffer {
             backing: Vec::new(),
             buffer,
             gpu_renderer_resource: None,
+            _image: None,
         }
     }
 }
@@ -748,12 +753,13 @@ impl Backend {
                         };
 
                         let res = self.renderer
-                            .import_resource(create_args, image);
+                            .import_resource(create_args, &image);
                         match res {
                             Ok(res) => {
                                 let mut backed =
                                     BackedBuffer::new_renderer_registered(buffer,
-                                                                          res);
+                                                                          res,
+                                                                          image);
                                 slot.insert(Box::new(backed));
                                 GpuResponse::OkNoData
                             }
diff --git a/gpu_renderer/src/lib.rs b/gpu_renderer/src/lib.rs
index 7a8c7fa..ded15ea 100644
--- a/gpu_renderer/src/lib.rs
+++ b/gpu_renderer/src/lib.rs
@@ -466,7 +466,7 @@ impl Renderer {
     /// Imports a resource from an EGLImage.
     pub fn import_resource(&self,
                            mut args: virgl_renderer_resource_create_args,
-                           image: Image)
+                           image: &Image)
                            -> Result<Resource> {
         let ret = unsafe { virgl_renderer_resource_import_eglimage(&mut args, image.image) };
         ret_to_res(ret)?;