Struct rutabaga_gfx::virgl_renderer::VirglRenderer
source · pub struct VirglRenderer {}
Expand description
The virtio-gpu backend state tracker which supports accelerated rendering.
Implementations§
source§impl VirglRenderer
impl VirglRenderer
pub fn init( virglrenderer_flags: VirglRendererFlags, fence_handler: RutabagaFenceHandler, render_server_fd: Option<OwnedDescriptor> ) -> RutabagaResult<Box<dyn RutabagaComponent>>
fn map_info(&self, resource_id: u32) -> RutabagaResult<u32>
fn query(&self, resource_id: u32) -> RutabagaResult<Resource3DInfo>
fn export_blob(&self, resource_id: u32) -> RutabagaResult<Arc<RutabagaHandle>>
Trait Implementations§
source§impl Drop for VirglRenderer
impl Drop for VirglRenderer
source§impl RutabagaComponent for VirglRenderer
impl RutabagaComponent for VirglRenderer
source§fn get_capset_info(&self, capset_id: u32) -> (u32, u32)
fn get_capset_info(&self, capset_id: u32) -> (u32, u32)
Implementations should return the version and size of the given capset_id. (0, 0) is
returned by default.
source§fn get_capset(&self, capset_id: u32, version: u32) -> Vec<u8>
fn get_capset(&self, capset_id: u32, version: u32) -> Vec<u8>
Implementations should return the capabilites of given a
capset_id
and version
. A
zero-sized array is returned by default.source§fn force_ctx_0(&self)
fn force_ctx_0(&self)
Implementations should set their internal context to be the reserved context 0.
source§fn create_fence(&mut self, fence: RutabagaFence) -> RutabagaResult<()>
fn create_fence(&mut self, fence: RutabagaFence) -> RutabagaResult<()>
Implementations must create a fence that represents the completion of prior work. This is
required for synchronization with the guest kernel.
source§fn event_poll(&self)
fn event_poll(&self)
Used only by VirglRenderer to poll when its poll_descriptor is signaled.
source§fn poll_descriptor(&self) -> Option<OwnedDescriptor>
fn poll_descriptor(&self) -> Option<OwnedDescriptor>
Used only by VirglRenderer to return a poll_descriptor that is signaled when a poll() is
necessary.
source§fn create_3d(
&self,
resource_id: u32,
resource_create_3d: ResourceCreate3D
) -> RutabagaResult<RutabagaResource>
fn create_3d( &self, resource_id: u32, resource_create_3d: ResourceCreate3D ) -> RutabagaResult<RutabagaResource>
Implementations must create a resource with the given metadata. For 2D rutabaga components,
this a system memory allocation. For 3D components, this is typically a GL texture or
buffer. Vulkan components should use blob resources instead.
source§fn attach_backing(
&self,
resource_id: u32,
vecs: &mut Vec<RutabagaIovec>
) -> RutabagaResult<()>
fn attach_backing( &self, resource_id: u32, vecs: &mut Vec<RutabagaIovec> ) -> RutabagaResult<()>
Implementations must attach
vecs
to the resource.source§fn detach_backing(&self, resource_id: u32)
fn detach_backing(&self, resource_id: u32)
Implementations must detach
vecs
from the resource.source§fn unref_resource(&self, resource_id: u32)
fn unref_resource(&self, resource_id: u32)
Implementations must release the guest kernel reference on the resource.
source§fn transfer_write(
&self,
ctx_id: u32,
resource: &mut RutabagaResource,
transfer: Transfer3D
) -> RutabagaResult<()>
fn transfer_write( &self, ctx_id: u32, resource: &mut RutabagaResource, transfer: Transfer3D ) -> RutabagaResult<()>
Implementations must perform the transfer write operation. For 2D rutabaga components, this
done via memcpy(). For 3D components, this is typically done via glTexSubImage(..).
source§fn transfer_read(
&self,
ctx_id: u32,
resource: &mut RutabagaResource,
transfer: Transfer3D,
buf: Option<IoSliceMut<'_>>
) -> RutabagaResult<()>
fn transfer_read( &self, ctx_id: u32, resource: &mut RutabagaResource, transfer: Transfer3D, buf: Option<IoSliceMut<'_>> ) -> RutabagaResult<()>
Implementations must perform the transfer read operation. For 2D rutabaga components, this
done via memcpy(). For 3D components, this is typically done via glReadPixels(..).
source§fn create_blob(
&mut self,
ctx_id: u32,
resource_id: u32,
resource_create_blob: ResourceCreateBlob,
iovec_opt: Option<Vec<RutabagaIovec>>,
_handle_opt: Option<RutabagaHandle>
) -> RutabagaResult<RutabagaResource>
fn create_blob( &mut self, ctx_id: u32, resource_id: u32, resource_create_blob: ResourceCreateBlob, iovec_opt: Option<Vec<RutabagaIovec>>, _handle_opt: Option<RutabagaHandle> ) -> RutabagaResult<RutabagaResource>
Implementations must create a blob resource on success. The memory parameters, size, and
usage of the blob resource is given by
resource_create_blob
.source§fn map(&self, resource_id: u32) -> RutabagaResult<RutabagaMapping>
fn map(&self, resource_id: u32) -> RutabagaResult<RutabagaMapping>
Implementations must map the blob resource on success. This is typically done by
glMapBufferRange(…) or vkMapMemory.
source§fn unmap(&self, resource_id: u32) -> RutabagaResult<()>
fn unmap(&self, resource_id: u32) -> RutabagaResult<()>
Implementations must unmap the blob resource on success. This is typically done by
glUnmapBuffer(…) or vkUnmapMemory.
source§fn export_fence(&self, fence_id: u64) -> RutabagaResult<RutabagaHandle>
fn export_fence(&self, fence_id: u64) -> RutabagaResult<RutabagaHandle>
Implementations must return a RutabagaHandle of the fence on success.
source§fn create_context(
&self,
ctx_id: u32,
context_init: u32,
context_name: Option<&str>,
_fence_handler: RutabagaFenceHandler
) -> RutabagaResult<Box<dyn RutabagaContext>>
fn create_context( &self, ctx_id: u32, context_init: u32, context_name: Option<&str>, _fence_handler: RutabagaFenceHandler ) -> RutabagaResult<Box<dyn RutabagaContext>>
Implementations must create a context for submitting commands. The command stream of the
context is determined by
context_init
. For virgl contexts, it is a Gallium/TGSI command
stream. For gfxstream contexts, it’s an autogenerated Vulkan or GLES streams.fn import( &self, resource_id: u32, _import_handle: RutabagaHandle, _import_data: RutabagaImportData ) -> RutabagaResult<RutabagaResource>
source§fn resource_flush(
&self,
_resource_id: &mut RutabagaResource
) -> RutabagaResult<()>
fn resource_flush( &self, _resource_id: &mut RutabagaResource ) -> RutabagaResult<()>
Implementations must flush the given resource to the display.
source§fn suspend(&self) -> RutabagaResult<()>
fn suspend(&self) -> RutabagaResult<()>
Implementations should stop workers.
source§fn snapshot(&self, _directory: &str) -> RutabagaResult<()>
fn snapshot(&self, _directory: &str) -> RutabagaResult<()>
Implementations must snapshot to the specified directory
source§fn restore(&self, _directory: &str) -> RutabagaResult<()>
fn restore(&self, _directory: &str) -> RutabagaResult<()>
Implementations must restore from the specified directory
source§fn resume(&self) -> RutabagaResult<()>
fn resume(&self) -> RutabagaResult<()>
Implementations should resume workers.
source§fn wait_sync(&self, _resource: &RutabagaResource) -> RutabagaResult<()>
fn wait_sync(&self, _resource: &RutabagaResource) -> RutabagaResult<()>
Implementations must perform a blocking wait-sync on the resource identified by resource_id
Auto Trait Implementations§
impl RefUnwindSafe for VirglRenderer
impl Send for VirglRenderer
impl Sync for VirglRenderer
impl Unpin for VirglRenderer
impl UnwindSafe for VirglRenderer
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more