pub struct LinearAllocator<B: Backend> { /* private fields */ }
Expand description
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§
Source§impl<B: Backend> LinearAllocator<B>
impl<B: Backend> LinearAllocator<B>
Sourcepub fn new(
memory_type: MemoryTypeId,
memory_properties: Properties,
config: LinearConfig,
non_coherent_atom_size: Size,
) -> Self
pub fn new( 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
.
Sourcepub fn max_allocation(&self) -> Size
pub fn max_allocation(&self) -> Size
Maximum allocation size.