[−][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 LinearBlock
s 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 LinearBlock
s 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][+]
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,
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>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,