[][src]Crate gpu_allocator

This crate provides a fully written in Rust memory allocator for Vulkan, and will provide one for DirectX 12 in the future.

Setting up the Vulkan memory allocator

use ash::version::{DeviceV1_0, EntryV1_0, InstanceV1_0};
use ash::vk;

let mut allocator = VulkanAllocator::new(&VulkanAllocatorCreateDesc {
    instance,
    device,
    physical_device,
    debug_settings: Default::default(),
});

Simple Vulkan allocation example

// Setup vulkan info
let vk_info = vk::BufferCreateInfo::builder()
    .size(512)
    .usage(vk::BufferUsageFlags::STORAGE_BUFFER);

let buffer = unsafe { device.create_buffer(&vk_info, None) }?;
let requirements = unsafe { device.get_buffer_memory_requirements(buffer) };

let allocation = allocator
    .allocate(&AllocationCreateDesc {
        name: "Example allocation",
        requirements,
        location: MemoryLocation::CpuToGpu,
        linear: true, // Buffers are always linear
    })?;

// Bind memory to the buffer
unsafe { device.bind_buffer_memory(buffer, allocation.memory(), allocation.offset())? };

// Cleanup
allocator.free(allocation)?;
unsafe { device.destroy_buffer(buffer, None) };

Structs

AllocationCreateDesc
AllocatorDebugSettings
SubAllocation
VulkanAllocator
VulkanAllocatorCreateDesc

Enums

AllocationError
MemoryLocation

Type Definitions

Result