rendy_memory

Struct LinearAllocator

Source
pub struct LinearAllocator<B: Backend> { /* private fields */ }
Expand description

Linear allocator that return memory from chunk sequentially. It keeps only number of bytes allocated from each chunk. Once chunk is exhausted it is placed into list. When all blocks allocated from head of that list are freed, head is freed as well.

This allocator suites best short-lived types of allocations. Allocation strategy requires minimal overhead and implementation is fast. But holding single block will completely stop memory recycling.

Implementations§

Source§

impl<B> LinearAllocator<B>
where B: Backend,

Source

pub fn properties_required() -> Properties

Get properties required by the LinearAllocator.

Source

pub fn max_allocation(&self) -> u64

Maximum allocation size.

Source

pub fn new( memory_type: MemoryTypeId, memory_properties: Properties, config: LinearConfig, ) -> Self

Create new LinearAllocator for memory_type with memory_properties specified, with LinearConfig provided.

Source

pub fn dispose(self, device: &B::Device)

Perform full cleanup of the memory allocated.

Trait Implementations§

Source§

impl<B> Allocator<B> for LinearAllocator<B>
where B: Backend,

Source§

type Block = LinearBlock<B>

Block type returned by allocator.
Source§

fn kind() -> Kind

Get allocator kind.
Source§

fn alloc( &mut self, device: &B::Device, size: u64, align: u64, ) -> Result<(LinearBlock<B>, u64), AllocationError>

Allocate block of memory. On success returns allocated block and amount of memory consumed from device.
Source§

fn free(&mut self, device: &B::Device, block: Self::Block) -> u64

Free block of memory. Returns amount of memory returned to the device.
Source§

impl<B: Debug + Backend> Debug for LinearAllocator<B>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<B> Freeze for LinearAllocator<B>

§

impl<B> RefUnwindSafe for LinearAllocator<B>
where <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,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.