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.
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, _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 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