[−][src]Struct gfx_memory::LinearAllocator
The LinearAllocator is best suited for short-lived allocations.
The allocation strategy has minimal overhead and the implementation is fast.
But holding a single block will completely stop memory recycling.
The linear allocator will internally create multiple lines.
Each line is a gfx_hal::Backend::Memory from which multiple LinearBlocks are linearly allocated.
A new line is created if there is insufficient space to create a LinearBlock from the current line.
New lines are created from scratch or taken from a pool of previously used lines.
When lines have no allocated LinearBlocks remaining they are moved to a pool to be reused.
This pool of unused lines is freed only when LinearAllocator::clear is called.
Implementations
impl<B: Backend> LinearAllocator<B>[src]
pub fn new(
memory_type: MemoryTypeId,
memory_properties: Properties,
config: LinearConfig,
non_coherent_atom_size: Size
) -> Self[src]
memory_type: MemoryTypeId,
memory_properties: Properties,
config: LinearConfig,
non_coherent_atom_size: Size
) -> Self
Create new LinearAllocator
for memory_type with memory_properties specified,
with config.
pub fn max_allocation(&self) -> Size[src]
Maximum allocation size.
pub fn clear(&mut self, device: &B::Device) -> Size[src]
Perform full cleanup of the allocated memory.
Trait Implementations
impl<B: Backend> Allocator<B> for LinearAllocator<B>[src]
type Block = LinearBlock<B>
Block type returned by allocator.
const KIND: Kind[src]
fn alloc(
&mut self,
device: &B::Device,
size: Size,
align: Size
) -> Result<(LinearBlock<B>, Size), AllocationError>[src]
&mut self,
device: &B::Device,
size: Size,
align: Size
) -> Result<(LinearBlock<B>, Size), AllocationError>
fn free(&mut self, device: &B::Device, block: Self::Block) -> Size[src]
impl<B: Debug + Backend> Debug for LinearAllocator<B>[src]
impl<B: Backend> Drop for LinearAllocator<B>[src]
Auto Trait Implementations
impl<B> RefUnwindSafe for LinearAllocator<B> where
<B as Backend>::Memory: RefUnwindSafe,
<B as Backend>::Memory: RefUnwindSafe,
impl<B> Send for LinearAllocator<B>
impl<B> Sync for LinearAllocator<B>
impl<B> Unpin for LinearAllocator<B>
impl<B> UnwindSafe for LinearAllocator<B> where
<B as Backend>::Memory: RefUnwindSafe,
<B as Backend>::Memory: RefUnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,