pub struct MemoryPool { /* private fields */ }Expand description
Memory pool for efficient allocation/deallocation
Implementations§
Source§impl MemoryPool
impl MemoryPool
Sourcepub fn new(device: Device, config: InternalMemoryPoolConfig) -> Self
pub fn new(device: Device, config: InternalMemoryPoolConfig) -> Self
Create new memory pool
Sourcepub fn allocate(&self, size: usize) -> Result<MemoryHandle>
pub fn allocate(&self, size: usize) -> Result<MemoryHandle>
Allocate memory from pool
Sourcepub fn deallocate(&self, handle: MemoryHandle) -> Result<()>
pub fn deallocate(&self, handle: MemoryHandle) -> Result<()>
Deallocate memory back to pool
Sourcepub fn stats(&self) -> MemoryInfo
pub fn stats(&self) -> MemoryInfo
Get memory statistics
Sourcepub fn defragment(&self) -> Result<()>
pub fn defragment(&self) -> Result<()>
Defragment memory pool
Trait Implementations§
Source§impl DeviceMemoryManager for MemoryPool
impl DeviceMemoryManager for MemoryPool
Source§fn allocate<'life0, 'life1, 'async_trait>(
&'life0 self,
size: usize,
_device: &'life1 Device,
) -> Pin<Box<dyn Future<Output = Result<MemoryHandle>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn allocate<'life0, 'life1, 'async_trait>(
&'life0 self,
size: usize,
_device: &'life1 Device,
) -> Pin<Box<dyn Future<Output = Result<MemoryHandle>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Allocate memory on device
Source§fn allocate_aligned<'life0, 'life1, 'async_trait>(
&'life0 self,
size: usize,
alignment: usize,
_device: &'life1 Device,
) -> Pin<Box<dyn Future<Output = Result<MemoryHandle>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn allocate_aligned<'life0, 'life1, 'async_trait>(
&'life0 self,
size: usize,
alignment: usize,
_device: &'life1 Device,
) -> Pin<Box<dyn Future<Output = Result<MemoryHandle>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Allocate aligned memory
Source§fn deallocate<'life0, 'async_trait>(
&'life0 self,
handle: MemoryHandle,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn deallocate<'life0, 'async_trait>(
&'life0 self,
handle: MemoryHandle,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Deallocate memory
Source§fn copy<'life0, 'async_trait>(
&'life0 self,
_src: MemoryHandle,
_dst: MemoryHandle,
_size: usize,
_src_offset: usize,
_dst_offset: usize,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn copy<'life0, 'async_trait>(
&'life0 self,
_src: MemoryHandle,
_dst: MemoryHandle,
_size: usize,
_src_offset: usize,
_dst_offset: usize,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Copy memory between handles
Source§fn copy_async<'life0, 'async_trait>(
&'life0 self,
_transfer: MemoryTransfer,
_stream: Option<StreamHandle>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn copy_async<'life0, 'async_trait>(
&'life0 self,
_transfer: MemoryTransfer,
_stream: Option<StreamHandle>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Copy memory between devices asynchronously
Source§fn memory_info<'life0, 'life1, 'async_trait>(
&'life0 self,
_device: &'life1 Device,
) -> Pin<Box<dyn Future<Output = Result<MemoryInfo>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn memory_info<'life0, 'life1, 'async_trait>(
&'life0 self,
_device: &'life1 Device,
) -> Pin<Box<dyn Future<Output = Result<MemoryInfo>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get memory information for device
Source§fn handle_info(&self, handle: MemoryHandle) -> Option<MemoryHandleInfo>
fn handle_info(&self, handle: MemoryHandle) -> Option<MemoryHandleInfo>
Get handle information
Source§fn configure_pool<'life0, 'life1, 'async_trait>(
&'life0 self,
_device: &'life1 Device,
_config: InterfaceMemoryPoolConfig,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn configure_pool<'life0, 'life1, 'async_trait>(
&'life0 self,
_device: &'life1 Device,
_config: InterfaceMemoryPoolConfig,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Set memory pool configuration
Source§fn defragment<'life0, 'life1, 'async_trait>(
&'life0 self,
_device: &'life1 Device,
) -> Pin<Box<dyn Future<Output = Result<DefragmentationStats>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn defragment<'life0, 'life1, 'async_trait>(
&'life0 self,
_device: &'life1 Device,
) -> Pin<Box<dyn Future<Output = Result<DefragmentationStats>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Defragment memory (if supported)
Source§fn set_pressure_callback(
&self,
_callback: Box<dyn Fn(MemoryPressure) + Send + Sync>,
)
fn set_pressure_callback( &self, _callback: Box<dyn Fn(MemoryPressure) + Send + Sync>, )
Set memory pressure callback
Auto Trait Implementations§
impl !Freeze for MemoryPool
impl !RefUnwindSafe for MemoryPool
impl Send for MemoryPool
impl Sync for MemoryPool
impl Unpin for MemoryPool
impl UnsafeUnpin for MemoryPool
impl UnwindSafe for MemoryPool
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more