mirror of
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
synced 2024-11-26 00:24:35 +00:00
Misc minor fixes
This commit is contained in:
parent
5bd5975873
commit
6c1c16f05c
@ -9639,11 +9639,6 @@ private:
|
|||||||
static const uint32_t INITIAL_BLOCK_ALLOC_COUNT = 16;
|
static const uint32_t INITIAL_BLOCK_ALLOC_COUNT = 16;
|
||||||
static const uint8_t MEMORY_CLASS_SHIFT = 7;
|
static const uint8_t MEMORY_CLASS_SHIFT = 7;
|
||||||
|
|
||||||
struct RegionInfo
|
|
||||||
{
|
|
||||||
uint8_t allocType;
|
|
||||||
uint16_t allocCount;
|
|
||||||
};
|
|
||||||
class Block
|
class Block
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -9717,7 +9712,7 @@ VmaBlockMetadata_TLSF::VmaBlockMetadata_TLSF(const VkAllocationCallbacks* pAlloc
|
|||||||
m_InnerIsFree(VMA_NULL),
|
m_InnerIsFree(VMA_NULL),
|
||||||
m_ListsCount(0),
|
m_ListsCount(0),
|
||||||
m_FreeList(VMA_NULL),
|
m_FreeList(VMA_NULL),
|
||||||
m_BlockAllocator(pAllocationCallbacks, INITIAL_BLOCK_ALLOC_COUNT * sizeof(Block)),
|
m_BlockAllocator(pAllocationCallbacks, INITIAL_BLOCK_ALLOC_COUNT),
|
||||||
m_NullBlock(VMA_NULL),
|
m_NullBlock(VMA_NULL),
|
||||||
m_GranularityHandler(bufferImageGranularity) {}
|
m_GranularityHandler(bufferImageGranularity) {}
|
||||||
|
|
||||||
@ -9909,7 +9904,7 @@ void VmaBlockMetadata_TLSF::PrintDetailedMap(class VmaJsonWriter& json) const
|
|||||||
if (block->IsFree())
|
if (block->IsFree())
|
||||||
PrintDetailedMap_UnusedRange(json, block->offset, block->size);
|
PrintDetailedMap_UnusedRange(json, block->offset, block->size);
|
||||||
else
|
else
|
||||||
PrintDetailedMap_Allocation(json, block->offset, block->size, block->PrevFree());
|
PrintDetailedMap_Allocation(json, block->offset, block->size, block->UserData());
|
||||||
}
|
}
|
||||||
if (m_NullBlock->size > 0)
|
if (m_NullBlock->size > 0)
|
||||||
PrintDetailedMap_UnusedRange(json, m_NullBlock->offset, m_NullBlock->size);
|
PrintDetailedMap_UnusedRange(json, m_NullBlock->offset, m_NullBlock->size);
|
||||||
@ -9942,7 +9937,7 @@ bool VmaBlockMetadata_TLSF::CreateAllocationRequest(
|
|||||||
return CheckBlock(*m_NullBlock, m_ListsCount, allocSize, allocAlignment, allocType, pAllocationRequest);
|
return CheckBlock(*m_NullBlock, m_ListsCount, allocSize, allocAlignment, allocType, pAllocationRequest);
|
||||||
|
|
||||||
VkDeviceSize roundedSize = allocSize;
|
VkDeviceSize roundedSize = allocSize;
|
||||||
if (allocSize >= (1 << SECOND_LEVEL_INDEX))
|
if (allocSize >= (1ULL << SECOND_LEVEL_INDEX))
|
||||||
{
|
{
|
||||||
// Round up to the next block
|
// Round up to the next block
|
||||||
roundedSize += (1ULL << (VMA_BITSCAN_MSB(allocSize) - SECOND_LEVEL_INDEX)) - 1;
|
roundedSize += (1ULL << (VMA_BITSCAN_MSB(allocSize) - SECOND_LEVEL_INDEX)) - 1;
|
||||||
@ -9986,7 +9981,7 @@ bool VmaBlockMetadata_TLSF::CreateAllocationRequest(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If all searches failed and first bucket still have some free regions then check it fully
|
// If all searches failed and first bucket still has some free regions then check it fully
|
||||||
while (block)
|
while (block)
|
||||||
{
|
{
|
||||||
if (CheckBlock(*block, listIndex, allocSize, allocAlignment, allocType, pAllocationRequest))
|
if (CheckBlock(*block, listIndex, allocSize, allocAlignment, allocType, pAllocationRequest))
|
||||||
@ -11042,7 +11037,7 @@ VkResult VmaVirtualBlock_T::Allocate(const VmaVirtualAllocationCreateInfo& creat
|
|||||||
*outOffset = m_Metadata->GetAllocationOffset(request.allocHandle);
|
*outOffset = m_Metadata->GetAllocationOffset(request.allocHandle);
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
}
|
}
|
||||||
outAllocation = (VmaVirtualAllocation)VK_WHOLE_SIZE;
|
outAllocation = (VmaVirtualAllocation)VK_NULL_HANDLE;
|
||||||
return VK_ERROR_OUT_OF_DEVICE_MEMORY;
|
return VK_ERROR_OUT_OF_DEVICE_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2695,7 +2695,7 @@ static void TestVirtualBlocks()
|
|||||||
allocCreateInfo.alignment = alignment;
|
allocCreateInfo.alignment = alignment;
|
||||||
allocCreateInfo.pUserData = (void*)(uintptr_t)1;
|
allocCreateInfo.pUserData = (void*)(uintptr_t)1;
|
||||||
allocCreateInfo.size = 8 * MEGABYTE;
|
allocCreateInfo.size = 8 * MEGABYTE;
|
||||||
VmaVirtualAllocation allocation0;
|
VmaVirtualAllocation allocation0 = VK_NULL_HANDLE;
|
||||||
TEST(vmaVirtualAllocate(block, &allocCreateInfo, &allocation0, &offset) == VK_SUCCESS);
|
TEST(vmaVirtualAllocate(block, &allocCreateInfo, &allocation0, &offset) == VK_SUCCESS);
|
||||||
|
|
||||||
// # Validate the allocation
|
// # Validate the allocation
|
||||||
@ -2716,7 +2716,7 @@ static void TestVirtualBlocks()
|
|||||||
// # Allocate 4 MB (also test passing null as pOffset during allocation)
|
// # Allocate 4 MB (also test passing null as pOffset during allocation)
|
||||||
|
|
||||||
allocCreateInfo.size = 4 * MEGABYTE;
|
allocCreateInfo.size = 4 * MEGABYTE;
|
||||||
VmaVirtualAllocation allocation1;
|
VmaVirtualAllocation allocation1 = VK_NULL_HANDLE;
|
||||||
TEST(vmaVirtualAllocate(block, &allocCreateInfo, &allocation1, nullptr) == VK_SUCCESS);
|
TEST(vmaVirtualAllocate(block, &allocCreateInfo, &allocation1, nullptr) == VK_SUCCESS);
|
||||||
VmaVirtualAllocationInfo allocInfo1 = {};
|
VmaVirtualAllocationInfo allocInfo1 = {};
|
||||||
vmaGetVirtualAllocationInfo(block, allocation1, &allocInfo1);
|
vmaGetVirtualAllocationInfo(block, allocation1, &allocInfo1);
|
||||||
@ -2726,9 +2726,9 @@ static void TestVirtualBlocks()
|
|||||||
// # Allocate another 8 MB - it should fail
|
// # Allocate another 8 MB - it should fail
|
||||||
|
|
||||||
allocCreateInfo.size = 8 * MEGABYTE;
|
allocCreateInfo.size = 8 * MEGABYTE;
|
||||||
VmaVirtualAllocation allocation2;
|
VmaVirtualAllocation allocation2 = VK_NULL_HANDLE;
|
||||||
TEST(vmaVirtualAllocate(block, &allocCreateInfo, &allocation2, nullptr) < 0);
|
TEST(vmaVirtualAllocate(block, &allocCreateInfo, &allocation2, nullptr) < 0);
|
||||||
TEST(allocation2 == (VmaVirtualAllocation)VK_WHOLE_SIZE);
|
TEST(allocation2 == VK_NULL_HANDLE);
|
||||||
|
|
||||||
// # Free the 4 MB block. Now allocation of 8 MB should succeed.
|
// # Free the 4 MB block. Now allocation of 8 MB should succeed.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user