Struct rutabaga_gfx::rutabaga_2d::Rutabaga2D
source · pub struct Rutabaga2D {
fence_handler: RutabagaFenceHandler,
}
Fields§
§fence_handler: RutabagaFenceHandler
Implementations§
source§impl Rutabaga2D
impl Rutabaga2D
pub fn init( fence_handler: RutabagaFenceHandler, ) -> RutabagaResult<Box<dyn RutabagaComponent>>
Trait Implementations§
source§impl RutabagaComponent for Rutabaga2D
impl RutabagaComponent for Rutabaga2D
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 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 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 snapshot(&self, writer: RutabagaSnapshotWriter) -> RutabagaResult<()>
fn snapshot(&self, writer: RutabagaSnapshotWriter) -> RutabagaResult<()>
Implementations must snapshot to the specified writer.
source§fn restore(&self, reader: RutabagaSnapshotReader) -> RutabagaResult<()>
fn restore(&self, reader: RutabagaSnapshotReader) -> RutabagaResult<()>
Implementations must restore from the specified reader.
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 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.
fn import( &self, _resource_id: u32, _import_handle: RutabagaHandle, _import_data: RutabagaImportData, ) -> RutabagaResult<Option<RutabagaResource>>
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 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 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.source§fn suspend(&self) -> RutabagaResult<()>
fn suspend(&self) -> RutabagaResult<()>
Implementations should stop workers.
source§fn restore_context(
&self,
_snapshot: Vec<u8>,
_fence_handler: RutabagaFenceHandler,
) -> RutabagaResult<Box<dyn RutabagaContext>>
fn restore_context( &self, _snapshot: Vec<u8>, _fence_handler: RutabagaFenceHandler, ) -> RutabagaResult<Box<dyn RutabagaContext>>
Implementations must restore the context from the given stream.
source§fn resume(&self) -> RutabagaResult<()>
fn resume(&self) -> RutabagaResult<()>
Implementations should resume workers.
Auto Trait Implementations§
impl Freeze for Rutabaga2D
impl !RefUnwindSafe for Rutabaga2D
impl Send for Rutabaga2D
impl Sync for Rutabaga2D
impl Unpin for Rutabaga2D
impl !UnwindSafe for Rutabaga2D
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