Trait rutabaga_gfx::rutabaga_gralloc::gralloc::Gralloc
source · pub trait Gralloc: Send {
// Required methods
fn supports_external_gpu_memory(&self) -> bool;
fn supports_dmabuf(&self) -> bool;
fn get_image_memory_requirements(
&mut self,
info: ImageAllocationInfo,
) -> RutabagaResult<ImageMemoryRequirements>;
fn allocate_memory(
&mut self,
reqs: ImageMemoryRequirements,
) -> RutabagaResult<MesaHandle>;
// Provided method
fn import_and_map(
&mut self,
_handle: MesaHandle,
_vulkan_info: VulkanInfo,
_size: u64,
) -> RutabagaResult<Box<dyn MappedRegion>> { ... }
}
Expand description
Trait that needs to be implemented to service graphics memory requests. Two step allocation process:
(1) Get memory requirements for a given allocation request. (2) Allocate using those requirements.
Required Methods§
sourcefn supports_external_gpu_memory(&self) -> bool
fn supports_external_gpu_memory(&self) -> bool
This function must return true if the implementation can:
(1) allocate GPU memory and (2) {export to}/{import from} into a OS-specific MesaHandle.
sourcefn supports_dmabuf(&self) -> bool
fn supports_dmabuf(&self) -> bool
This function must return true the implementation can {export to}/{import from} a Linux dma-buf. This often used for sharing with the scanout engine or multimedia subsystems.
sourcefn get_image_memory_requirements(
&mut self,
info: ImageAllocationInfo,
) -> RutabagaResult<ImageMemoryRequirements>
fn get_image_memory_requirements( &mut self, info: ImageAllocationInfo, ) -> RutabagaResult<ImageMemoryRequirements>
Implementations must return the resource layout, compression, and caching properties of an allocation request.
sourcefn allocate_memory(
&mut self,
reqs: ImageMemoryRequirements,
) -> RutabagaResult<MesaHandle>
fn allocate_memory( &mut self, reqs: ImageMemoryRequirements, ) -> RutabagaResult<MesaHandle>
Implementations must allocate memory given the requirements and return a MesaHandle upon success.
Provided Methods§
sourcefn import_and_map(
&mut self,
_handle: MesaHandle,
_vulkan_info: VulkanInfo,
_size: u64,
) -> RutabagaResult<Box<dyn MappedRegion>>
fn import_and_map( &mut self, _handle: MesaHandle, _vulkan_info: VulkanInfo, _size: u64, ) -> RutabagaResult<Box<dyn MappedRegion>>
Implementations must import the given handle
and return a mapping, suitable for use with
KVM and other hypervisors. This is optional and only works with the Vulkano backend.