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 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§
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.