Struct rutabaga_gfx::cross_domain::CrossDomain
source · pub struct CrossDomain {
channels: Option<Vec<RutabagaChannel>>,
gralloc: Arc<Mutex<RutabagaGralloc>>,
fence_handler: RutabagaFenceHandler,
}
Expand description
The CrossDomain component contains a list of channels that the guest may connect to and the ability to allocate memory.
Fields§
§channels: Option<Vec<RutabagaChannel>>
§gralloc: Arc<Mutex<RutabagaGralloc>>
§fence_handler: RutabagaFenceHandler
Implementations§
source§impl CrossDomain
impl CrossDomain
sourcepub fn init(
channels: Option<Vec<RutabagaChannel>>,
fence_handler: RutabagaFenceHandler,
) -> RutabagaResult<Box<dyn RutabagaComponent>>
pub fn init( channels: Option<Vec<RutabagaChannel>>, fence_handler: RutabagaFenceHandler, ) -> RutabagaResult<Box<dyn RutabagaComponent>>
Initializes the cross-domain component by taking the the rutabaga channels (if any) and initializing rutabaga gralloc.
Trait Implementations§
source§impl RutabagaComponent for CrossDomain
impl RutabagaComponent for CrossDomain
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 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 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 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 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.
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.
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 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 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 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 suspend(&self) -> RutabagaResult<()>
fn suspend(&self) -> RutabagaResult<()>
Implementations should stop workers.
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 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 CrossDomain
impl !RefUnwindSafe for CrossDomain
impl Send for CrossDomain
impl Sync for CrossDomain
impl Unpin for CrossDomain
impl !UnwindSafe for CrossDomain
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