Implemented vmaCalculateVirtualBlockStats

This commit is contained in:
Adam Sawicki 2021-10-28 15:00:24 +02:00
parent 72949fa9d8
commit 9a091e8ccb
2 changed files with 15 additions and 8 deletions

View File

@ -6891,6 +6891,10 @@ public:
{
m_Metadata->SetAllocationUserData(offset, userData);
}
void CalculateStats(VmaStatInfo& outStatInfo) const
{
m_Metadata->CalcAllocationStatInfo(outStatInfo);
}
private:
VmaBlockMetadata* m_Metadata;
@ -18403,7 +18407,10 @@ VMA_CALL_PRE void VMA_CALL_POST vmaSetVirtualAllocationUserData(VmaVirtualBlock
VMA_CALL_PRE void VMA_CALL_POST vmaCalculateVirtualBlockStats(VmaVirtualBlock VMA_NOT_NULL virtualBlock,
VmaStatInfo* VMA_NOT_NULL pStatInfo)
{
VMA_ASSERT(0 && "TODO implement");
VMA_ASSERT(virtualBlock != VK_NULL_HANDLE && pStatInfo != VMA_NULL);
VMA_DEBUG_LOG("vmaCalculateVirtualBlockStats");
VMA_DEBUG_GLOBAL_MUTEX_LOCK;
virtualBlock->CalculateStats(*pStatInfo);
}
VMA_CALL_PRE void VMA_CALL_POST vmaBuildVirtualBlockStatsString(VmaVirtualBlock VMA_NOT_NULL virtualBlock,

View File

@ -2747,16 +2747,16 @@ static void TestVirtualBlocks()
TEST(alloc2Offset < blockSize);
TEST(alloc2Offset + 4 * MEGABYTE <= alloc0Offset || alloc0Offset + 8 * MEGABYTE <= alloc2Offset); // Check if they don't overlap.
#if 0
// # Calculate statistics
StatInfo statInfo = {};
block->CalculateStats(&statInfo);
CHECK_BOOL(statInfo.AllocationCount == 2);
CHECK_BOOL(statInfo.BlockCount == 1);
CHECK_BOOL(statInfo.UsedBytes == blockSize);
CHECK_BOOL(statInfo.UnusedBytes + statInfo.UsedBytes == blockSize);
VmaStatInfo statInfo = {};
vmaCalculateVirtualBlockStats(block, &statInfo);
TEST(statInfo.allocationCount == 2);
TEST(statInfo.blockCount == 1);
TEST(statInfo.usedBytes == blockSize);
TEST(statInfo.unusedBytes + statInfo.usedBytes == blockSize);
#if 0
// # Generate JSON dump
WCHAR* json = nullptr;