Parameters for defragmentation. More...
#include <vk_mem_alloc.h>
Public Attributes | |
VmaDefragmentationFlags | flags |
Reserved for future use. More... | |
uint32_t | allocationCount |
Number of allocations in pAllocations array. More... | |
VmaAllocation * | pAllocations |
Pointer to array of allocations that can be defragmented. More... | |
VkBool32 * | pAllocationsChanged |
Optional, output. More... | |
uint32_t | poolCount |
Numer of pools in pPools array. More... | |
VmaPool * | pPools |
Either null or pointer to array of pools to be defragmented. More... | |
VkDeviceSize | maxCpuBytesToMove |
Maximum total numbers of bytes that can be copied while moving allocations to different places using transfers on CPU side, like memcpy() , memmove() . More... | |
uint32_t | maxCpuAllocationsToMove |
Maximum number of allocations that can be moved to a different place using transfers on CPU side, like memcpy() , memmove() . More... | |
VkDeviceSize | maxGpuBytesToMove |
Maximum total numbers of bytes that can be copied while moving allocations to different places using transfers on GPU side, posted to commandBuffer . More... | |
uint32_t | maxGpuAllocationsToMove |
Maximum number of allocations that can be moved to a different place using transfers on GPU side, posted to commandBuffer . More... | |
VkCommandBuffer | commandBuffer |
Optional. More... | |
Parameters for defragmentation.
To be used with function vmaDefragmentationBegin().
Definition at line 2861 of file vk_mem_alloc.h.
uint32_t VmaDefragmentationInfo2::allocationCount |
Number of allocations in pAllocations
array.
Definition at line 2867 of file vk_mem_alloc.h.
VkCommandBuffer VmaDefragmentationInfo2::commandBuffer |
Optional.
Command buffer where GPU copy commands will be posted.
If not null, it must be a valid command buffer handle that supports Transfer queue type. It must be in the recording state and outside of a render pass instance. You need to submit it and make sure it finished execution before calling vmaDefragmentationEnd().
Passing null means that only CPU defragmentation will be performed.
Definition at line 2930 of file vk_mem_alloc.h.
VmaDefragmentationFlags VmaDefragmentationInfo2::flags |
uint32_t VmaDefragmentationInfo2::maxCpuAllocationsToMove |
Maximum number of allocations that can be moved to a different place using transfers on CPU side, like memcpy()
, memmove()
.
UINT32_MAX
means no limit.
Definition at line 2911 of file vk_mem_alloc.h.
VkDeviceSize VmaDefragmentationInfo2::maxCpuBytesToMove |
Maximum total numbers of bytes that can be copied while moving allocations to different places using transfers on CPU side, like memcpy()
, memmove()
.
VK_WHOLE_SIZE
means no limit.
Definition at line 2906 of file vk_mem_alloc.h.
uint32_t VmaDefragmentationInfo2::maxGpuAllocationsToMove |
Maximum number of allocations that can be moved to a different place using transfers on GPU side, posted to commandBuffer
.
UINT32_MAX
means no limit.
Definition at line 2921 of file vk_mem_alloc.h.
VkDeviceSize VmaDefragmentationInfo2::maxGpuBytesToMove |
Maximum total numbers of bytes that can be copied while moving allocations to different places using transfers on GPU side, posted to commandBuffer
.
VK_WHOLE_SIZE
means no limit.
Definition at line 2916 of file vk_mem_alloc.h.
VmaAllocation* VmaDefragmentationInfo2::pAllocations |
Pointer to array of allocations that can be defragmented.
The array should have allocationCount
elements. The array should not contain nulls. Elements in the array should be unique - same allocation cannot occur twice. It is safe to pass allocations that are in the lost state - they are ignored. All allocations not present in this array are considered non-moveable during this defragmentation.
Definition at line 2876 of file vk_mem_alloc.h.
VkBool32* VmaDefragmentationInfo2::pAllocationsChanged |
Optional, output.
Pointer to array that will be filled with information whether the allocation at certain index has been changed during defragmentation.
The array should have allocationCount
elements. You can pass null if you are not interested in this information.
Definition at line 2882 of file vk_mem_alloc.h.
uint32_t VmaDefragmentationInfo2::poolCount |
Numer of pools in pPools
array.
Definition at line 2885 of file vk_mem_alloc.h.
VmaPool* VmaDefragmentationInfo2::pPools |
Either null or pointer to array of pools to be defragmented.
All the allocations in the specified pools can be moved during defragmentation and there is no way to check if they were really moved as in pAllocationsChanged
, so you must query all the allocations in all these pools for new VkDeviceMemory
and offset using vmaGetAllocationInfo() if you might need to recreate buffers and images bound to them.
The array should have poolCount
elements. The array should not contain nulls. Elements in the array should be unique - same pool cannot occur twice.
Using this array is equivalent to specifying all allocations from the pools in pAllocations
. It might be more efficient.
Definition at line 2901 of file vk_mem_alloc.h.