diff options
-rw-r--r-- | devices/src/virtio/gpu/backend.rs | 12 | ||||
-rw-r--r-- | gpu_renderer/src/lib.rs | 2 |
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)?; |