Halide 19.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 | conform_block_request (void *instance_ptr, MemoryRequest *request) |
static int | allocate_region (void *instance_ptr, MemoryRegion *region) |
static int | deallocate_region (void *instance_ptr, MemoryRegion *region) |
static int | conform_region_request (void *instance_ptr, MemoryRequest *request) |
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 152 of file vulkan_memory.h.
References Halide::Runtime::Internal::SystemMemoryAllocatorFns::allocate, and user_context.
|
static |
Definition at line 174 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::current_allocators(), Halide::Runtime::Internal::SystemMemoryAllocatorFns::deallocate, destroy(), halide_error_code_internal_error, halide_error_code_success, Halide::Runtime::Internal::BlockAllocator::MemoryAllocators::system, and user_context.
Referenced by destroy().
MemoryRegion * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::reserve | ( | void * | user_context, |
const MemoryRequest & | request ) |
Definition at line 227 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::reserve(), Halide::Runtime::Internal::MemoryRequest::size, and user_context.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::conform | ( | void * | user_context, |
MemoryRequest * | request ) |
Definition at line 983 of file vulkan_memory.h.
References Halide::Runtime::Internal::aligned_offset(), Halide::Runtime::Internal::MemoryRequest::alignment, Halide::Runtime::Internal::conform_alignment(), Halide::Runtime::Internal::conform_size(), error_code, halide_error_code_success, Halide::Runtime::Internal::MemoryProperties::nearest_multiple, Halide::Runtime::Internal::Vulkan::VulkanMemoryConfig::nearest_multiple, Halide::Runtime::Internal::MemoryRequest::offset, Halide::Runtime::Internal::MemoryRequest::properties, Halide::Runtime::Internal::MemoryRequest::size, and user_context.
Referenced by conform_region_request().
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::release | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 447 of file vulkan_memory.h.
References halide_error_code_generic_error, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::BlockAllocator::release(), Halide::Runtime::Internal::MemoryRegion::size, and user_context.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::reclaim | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 466 of file vulkan_memory.h.
References halide_error_code_generic_error, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::BlockAllocator::reclaim(), Halide::Runtime::Internal::MemoryRegion::size, and user_context.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::retain | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 485 of file vulkan_memory.h.
References halide_error_code_generic_error, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::BlockAllocator::retain(), Halide::Runtime::Internal::MemoryRegion::size, and user_context.
bool Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::collect | ( | void * | user_context | ) |
Definition at line 504 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::collect(), and user_context.
Referenced by allocate_region().
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::release | ( | void * | user_context | ) |
Definition at line 515 of file vulkan_memory.h.
References halide_error_code_generic_error, Halide::Runtime::Internal::BlockAllocator::release(), and user_context.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::destroy | ( | void * | user_context | ) |
Definition at line 532 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::destroy(), halide_error_code_success, and user_context.
void * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::map | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 250 of file vulkan_memory.h.
References Halide::Runtime::Internal::RegionAllocator::block_resource(), 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, and user_context.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::unmap | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 316 of file vulkan_memory.h.
References Halide::Runtime::Internal::RegionAllocator::block_resource(), 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 user_context.
MemoryRegion * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::create_crop | ( | void * | user_context, |
MemoryRegion * | region, | ||
uint64_t | offset ) |
Definition at line 355 of file vulkan_memory.h.
References Halide::Runtime::Internal::SystemMemoryAllocatorFns::allocate, Halide::Runtime::Internal::BlockAllocator::current_allocators(), error_code, Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_success, Halide::Runtime::Internal::MemoryRegion::handle, Halide::Runtime::Internal::MemoryRange::head_offset, Halide::Runtime::Internal::MemoryRegion::is_owner, memcpy(), Halide::Runtime::Internal::MemoryRegion::offset, owner_of(), Halide::Runtime::Internal::MemoryRegion::range, Halide::Runtime::Internal::RegionAllocator::retain(), Halide::Runtime::Internal::MemoryRegion::size, Halide::Runtime::Internal::BlockAllocator::MemoryAllocators::system, and user_context.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::destroy_crop | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 408 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::current_allocators(), Halide::Runtime::Internal::SystemMemoryAllocatorFns::deallocate, error_code, Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_generic_error, halide_error_code_internal_error, halide_error_code_success, owner_of(), Halide::Runtime::Internal::RegionAllocator::release(), Halide::Runtime::Internal::BlockAllocator::MemoryAllocators::system, and user_context.
MemoryRegion * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::owner_of | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 438 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 76 of file vulkan_memory.h.
|
inline |
Definition at line 79 of file vulkan_memory.h.
|
inline |
Definition at line 82 of file vulkan_memory.h.
|
inline |
Definition at line 85 of file vulkan_memory.h.
|
static |
Definition at line 549 of file vulkan_memory.h.
|
static |
Definition at line 630 of file vulkan_memory.h.
References blocks_allocated(), bytes_allocated_for_blocks(), bytes_allocated_for_regions(), Halide::Runtime::Internal::MemoryProperties::caching, Halide::Runtime::Internal::MemoryBlock::dedicated, halide_error_code_device_malloc_failed, 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::MemoryBlock::properties, regions_allocated(), Halide::Runtime::Internal::MemoryBlock::size, Halide::Runtime::Internal::MemoryProperties::usage, user_context, and Halide::Runtime::Internal::MemoryProperties::visibility.
|
static |
Definition at line 776 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::caching, 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, user_context, and Halide::Runtime::Internal::MemoryProperties::visibility.
|
static |
Definition at line 588 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::alignment, Halide::Runtime::Internal::MemoryRequest::dedicated, error_code, halide_error_code_internal_error, halide_error_code_success, Halide::Runtime::Internal::MemoryRequest::properties, Halide::Runtime::Internal::MemoryRequest::size, and user_context.
|
static |
Definition at line 1075 of file vulkan_memory.h.
References Halide::Runtime::Internal::RegionAllocator::block_resource(), Halide::Runtime::Internal::MemoryProperties::caching, collect(), 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, user_context, and Halide::Runtime::Internal::MemoryProperties::visibility.
|
static |
Definition at line 1207 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::caching, Halide::Runtime::Internal::MemoryRegion::dedicated, error_code, 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, user_context, and Halide::Runtime::Internal::MemoryProperties::visibility.
|
static |
Definition at line 1043 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::caching, conform(), Halide::Runtime::Internal::MemoryRequest::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::MemoryRequest::offset, Halide::Runtime::Internal::MemoryRequest::properties, Halide::Runtime::Internal::MemoryRequest::size, Halide::Runtime::Internal::MemoryProperties::usage, user_context, and Halide::Runtime::Internal::MemoryProperties::visibility.
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::bytes_allocated_for_blocks | ( | ) | const |
Definition at line 848 of file vulkan_memory.h.
Referenced by allocate_block().
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::blocks_allocated | ( | ) | const |
Definition at line 844 of file vulkan_memory.h.
Referenced by allocate_block().
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::bytes_allocated_for_regions | ( | ) | const |
Definition at line 1281 of file vulkan_memory.h.
Referenced by allocate_block().
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::regions_allocated | ( | ) | const |
Definition at line 1277 of file vulkan_memory.h.
Referenced by allocate_block().