pub struct Allocator { /* private fields */ }Expand description
The Vulkan device memory allocator.
§Performance
All Vulkan allocations are serialized into a single queue served by a background thread. This is to simplify the allocator implementation (it’s single-threaded) but it means that allocating tons of memory from many threads could cause bottlenecks. In practice, this doesn’t seem to matter because device allocations are typically fairly long-lived.
§Device Memory Usage
The allocator implementation attempts to only allocate large blocks of Device memory, then subdivide them to fit individual allocation requests. This logic is hosted in the private composable_allocator module.
Implementations§
source§impl Allocator
impl Allocator
pub fn new( logical_device: Arc<Device>, physical_device: PhysicalDevice, ) -> Result<Self>
sourcepub fn allocate_memory(
&self,
requirements: &MemoryRequirements,
flags: MemoryPropertyFlags,
dedicated: bool,
) -> Result<Block>
pub fn allocate_memory( &self, requirements: &MemoryRequirements, flags: MemoryPropertyFlags, dedicated: bool, ) -> Result<Block>
Allocates device memory according to the given requirements.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Allocator
impl !RefUnwindSafe for Allocator
impl Send for Allocator
impl Sync for Allocator
impl Unpin for Allocator
impl !UnwindSafe for Allocator
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.