Halide 17.0.0
Halide compiler and libraries
|
Vulkan Memory Allocator class interface for managing large memory requests stored as contiguous blocks of memory, which are then sub-allocated into smaller regions of memory to avoid the excessive cost of vkAllocate and the limited number of available allocation calls through the API. More...
#include <vulkan_memory.h>
Static Public Member Functions | |
static VulkanMemoryAllocator * | create (void *user_context, const VulkanMemoryConfig &config, VkDevice dev, VkPhysicalDevice phys_dev, const SystemMemoryAllocatorFns &system_allocator, const VkAllocationCallbacks *alloc_callbacks=nullptr) |
static int | destroy (void *user_context, VulkanMemoryAllocator *allocator) |
static const VulkanMemoryConfig & | default_config () |
static int | allocate_block (void *instance_ptr, MemoryBlock *block) |
static int | deallocate_block (void *instance_ptr, MemoryBlock *block) |
static int | allocate_region (void *instance_ptr, MemoryRegion *region) |
static int | deallocate_region (void *instance_ptr, MemoryRegion *region) |
Vulkan Memory Allocator class interface for managing large memory requests stored as contiguous blocks of memory, which are then sub-allocated into smaller regions of memory to avoid the excessive cost of vkAllocate and the limited number of available allocation calls through the API.
Definition at line 42 of file vulkan_memory.h.
|
delete |
|
delete |
|
delete |
|
delete |
|
static |
Definition at line 129 of file vulkan_memory.h.
References Halide::cast().
|
static |
Definition at line 151 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::current_allocators(), Halide::Runtime::Internal::SystemMemoryAllocatorFns::deallocate, Halide::Runtime::Internal::BlockAllocator::destroy(), destroy(), halide_error_code_internal_error, halide_error_code_success, and Halide::Runtime::Internal::BlockAllocator::MemoryAllocators::system.
Referenced by destroy().
MemoryRegion * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::reserve | ( | void * | user_context, |
MemoryRequest & | request | ||
) |
Definition at line 205 of file vulkan_memory.h.
References Halide::cast(), and Halide::Runtime::Internal::BlockAllocator::reserve().
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::release | ( | void * | user_context, |
MemoryRegion * | region | ||
) |
Definition at line 424 of file vulkan_memory.h.
References halide_error_code_generic_error, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::BlockAllocator::release(), and Halide::Runtime::Internal::MemoryRegion::size.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::reclaim | ( | void * | user_context, |
MemoryRegion * | region | ||
) |
Definition at line 443 of file vulkan_memory.h.
References halide_error_code_generic_error, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::BlockAllocator::reclaim(), and Halide::Runtime::Internal::MemoryRegion::size.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::retain | ( | void * | user_context, |
MemoryRegion * | region | ||
) |
Definition at line 462 of file vulkan_memory.h.
References halide_error_code_generic_error, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::BlockAllocator::retain(), and Halide::Runtime::Internal::MemoryRegion::size.
bool Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::collect | ( | void * | user_context | ) |
Definition at line 481 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::collect().
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::release | ( | void * | user_context | ) |
Definition at line 492 of file vulkan_memory.h.
References halide_error_code_generic_error, and Halide::Runtime::Internal::BlockAllocator::release().
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::destroy | ( | void * | user_context | ) |
Definition at line 509 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::destroy(), and halide_error_code_success.
void * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::map | ( | void * | user_context, |
MemoryRegion * | region | ||
) |
Definition at line 228 of file vulkan_memory.h.
References Halide::cast(), Halide::Runtime::Internal::RegionAllocator::find_allocator(), Halide::Runtime::Internal::MemoryBlock::handle, Halide::Runtime::Internal::MemoryRange::head_offset, Halide::Runtime::Internal::BlockResource::memory, Halide::Runtime::Internal::MemoryRegion::offset, owner_of(), Halide::Runtime::Internal::MemoryRegion::range, Halide::Runtime::Internal::MemoryRegion::size, Halide::Runtime::Internal::MemoryRange::tail_offset, VK_SUCCESS, and vkMapMemory().
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::unmap | ( | void * | user_context, |
MemoryRegion * | region | ||
) |
Definition at line 293 of file vulkan_memory.h.
References Halide::cast(), Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_generic_error, halide_error_code_internal_error, halide_error_code_success, Halide::Runtime::Internal::MemoryBlock::handle, Halide::Runtime::Internal::MemoryRange::head_offset, Halide::Runtime::Internal::BlockResource::memory, Halide::Runtime::Internal::MemoryRegion::offset, owner_of(), Halide::Runtime::Internal::MemoryRegion::range, Halide::Runtime::Internal::MemoryRegion::size, and vkUnmapMemory().
MemoryRegion * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::create_crop | ( | void * | user_context, |
MemoryRegion * | region, | ||
uint64_t | offset | ||
) |
Definition at line 332 of file vulkan_memory.h.
References Halide::Runtime::Internal::SystemMemoryAllocatorFns::allocate, Halide::cast(), Halide::Runtime::Internal::BlockAllocator::current_allocators(), Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_success, memcpy(), Halide::Runtime::Internal::MemoryRegion::offset, owner_of(), Halide::Runtime::Internal::MemoryRegion::size, and Halide::Runtime::Internal::BlockAllocator::MemoryAllocators::system.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::destroy_crop | ( | void * | user_context, |
MemoryRegion * | region | ||
) |
Definition at line 385 of file vulkan_memory.h.
References Halide::cast(), Halide::Runtime::Internal::BlockAllocator::current_allocators(), Halide::Runtime::Internal::SystemMemoryAllocatorFns::deallocate, Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_generic_error, halide_error_code_internal_error, halide_error_code_success, owner_of(), and Halide::Runtime::Internal::BlockAllocator::MemoryAllocators::system.
MemoryRegion * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::owner_of | ( | void * | user_context, |
MemoryRegion * | region | ||
) |
Definition at line 415 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryRegion::handle, and Halide::Runtime::Internal::MemoryRegion::is_owner.
Referenced by create_crop(), destroy_crop(), map(), and unmap().
|
inline |
Definition at line 75 of file vulkan_memory.h.
|
inline |
Definition at line 78 of file vulkan_memory.h.
|
inline |
Definition at line 81 of file vulkan_memory.h.
|
static |
Definition at line 525 of file vulkan_memory.h.
|
static |
Definition at line 532 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::alignment, Halide::Runtime::Internal::MemoryProperties::caching, Halide::cast(), Halide::Runtime::Internal::MemoryBlock::dedicated, halide_error_code_device_malloc_failed, halide_error_code_generic_error, halide_error_code_internal_error, halide_error_code_out_of_memory, halide_error_code_success, halide_memory_caching_name(), halide_memory_usage_name(), halide_memory_visibility_name(), Halide::Runtime::Internal::MemoryBlock::handle, VkPhysicalDeviceLimits::minStorageBufferOffsetAlignment, VkPhysicalDeviceLimits::minUniformBufferOffsetAlignment, Halide::Runtime::Internal::MemoryBlock::properties, Halide::Runtime::Internal::MemoryBlock::size, Halide::Runtime::Internal::MemoryProperties::usage, Halide::Runtime::Internal::MemoryProperties::visibility, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_SHARING_MODE_EXCLUSIVE, VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, VK_SUCCESS, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT, vkAllocateMemory(), vkCreateBuffer(), vkDestroyBuffer(), and vkGetBufferMemoryRequirements().
|
static |
Definition at line 639 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::caching, Halide::cast(), Halide::Runtime::Internal::MemoryBlock::dedicated, halide_error_code_internal_error, halide_error_code_success, halide_memory_caching_name(), halide_memory_usage_name(), halide_memory_visibility_name(), Halide::Runtime::Internal::MemoryBlock::handle, Halide::Runtime::Internal::MemoryBlock::properties, Halide::Runtime::Internal::MemoryBlock::size, Halide::Runtime::Internal::MemoryProperties::usage, Halide::Runtime::Internal::MemoryProperties::visibility, and vkFreeMemory().
|
static |
Definition at line 813 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::caching, Halide::cast(), Halide::Runtime::Internal::MemoryRegion::dedicated, Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_device_malloc_failed, halide_error_code_generic_error, halide_error_code_internal_error, halide_error_code_out_of_memory, halide_error_code_success, halide_memory_caching_name(), halide_memory_usage_name(), halide_memory_visibility_name(), Halide::Runtime::Internal::MemoryBlock::handle, Halide::Runtime::Internal::MemoryRegion::handle, Halide::Runtime::Internal::MemoryRegion::is_owner, Halide::Runtime::Internal::BlockResource::memory, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::MemoryRegion::properties, Halide::Runtime::Internal::MemoryRegion::size, Halide::Runtime::Internal::MemoryProperties::usage, Halide::Runtime::Internal::MemoryProperties::visibility, VK_SHARING_MODE_EXCLUSIVE, VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, VK_SUCCESS, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT, vkBindBufferMemory(), and vkCreateBuffer().
|
static |
Definition at line 907 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::caching, Halide::cast(), Halide::Runtime::Internal::MemoryRegion::dedicated, halide_error_code_internal_error, halide_error_code_success, halide_memory_caching_name(), halide_memory_usage_name(), halide_memory_visibility_name(), Halide::Runtime::Internal::MemoryRegion::handle, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::MemoryRegion::properties, Halide::Runtime::Internal::MemoryRegion::size, Halide::Runtime::Internal::MemoryProperties::usage, Halide::Runtime::Internal::MemoryProperties::visibility, and vkDestroyBuffer().
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::bytes_allocated_for_blocks | ( | ) | const |
Definition at line 711 of file vulkan_memory.h.
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::blocks_allocated | ( | ) | const |
Definition at line 707 of file vulkan_memory.h.
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::bytes_allocated_for_regions | ( | ) | const |
Definition at line 980 of file vulkan_memory.h.
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::regions_allocated | ( | ) | const |
Definition at line 976 of file vulkan_memory.h.