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<RutabagaHandle>;
// Provided method
fn import_and_map(
&mut self,
_handle: RutabagaHandle,
_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 RutabagaHandle.
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<RutabagaHandle>
fn allocate_memory( &mut self, reqs: ImageMemoryRequirements ) -> RutabagaResult<RutabagaHandle>
Implementations must allocate memory given the requirements and return a RutabagaHandle upon success.
Provided Methods§
sourcefn import_and_map(
&mut self,
_handle: RutabagaHandle,
_vulkan_info: VulkanInfo,
_size: u64
) -> RutabagaResult<Box<dyn MappedRegion>>
fn import_and_map( &mut self, _handle: RutabagaHandle, _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.