Expand description
A segregated list memory allocator for Vulkan.
The allocator can pool allocations of a user defined lifetime together to help reducing the fragmentation.
§Example:
ⓘ
#[derive(Debug, Clone, Copy, Hash, Eq, PartialEq)]
enum Lifetime {
Buffer,
Image,
}
impl vk_alloc::Lifetime for Lifetime {}
unsafe {
Allocator::<Lifetime>::new(
&instance,
&physical_device,
&AllocatorDescriptor {
..Default::default()
},
).unwrap();
let allocation = alloc
.allocate(
&logical_device,
&AllocationDescriptor {
location: MemoryLocation::GpuOnly,
requirements: vk::MemoryRequirementsBuilder::new()
.alignment(512)
.size(1024)
.memory_type_bits(u32::MAX)
.build(),
lifetime: Lifetime::Buffer,
is_dedicated: false,
is_optimal: false,
},
)
.unwrap();
}
Structs§
- An allocation of the
Allocator
. - The descriptor for an allocation on the allocator.
- The general purpose memory allocator. Implemented as a segregated list allocator.
- Describes the configuration of an
Allocator
.
Enums§
- Errors that the allocators can throw.
- The intended location of the memory.
Traits§
- The lifetime of an allocation. Used to pool allocations and reduce fragmentation.