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); m_Metadata->SetAllocationUserData(offset, userData);
} }
void CalculateStats(VmaStatInfo& outStatInfo) const
{
m_Metadata->CalcAllocationStatInfo(outStatInfo);
}
private: private:
VmaBlockMetadata* m_Metadata; 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, VMA_CALL_PRE void VMA_CALL_POST vmaCalculateVirtualBlockStats(VmaVirtualBlock VMA_NOT_NULL virtualBlock,
VmaStatInfo* VMA_NOT_NULL pStatInfo) 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, 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 < blockSize);
TEST(alloc2Offset + 4 * MEGABYTE <= alloc0Offset || alloc0Offset + 8 * MEGABYTE <= alloc2Offset); // Check if they don't overlap. TEST(alloc2Offset + 4 * MEGABYTE <= alloc0Offset || alloc0Offset + 8 * MEGABYTE <= alloc2Offset); // Check if they don't overlap.
#if 0
// # Calculate statistics // # Calculate statistics
StatInfo statInfo = {}; VmaStatInfo statInfo = {};
block->CalculateStats(&statInfo); vmaCalculateVirtualBlockStats(block, &statInfo);
CHECK_BOOL(statInfo.AllocationCount == 2); TEST(statInfo.allocationCount == 2);
CHECK_BOOL(statInfo.BlockCount == 1); TEST(statInfo.blockCount == 1);
CHECK_BOOL(statInfo.UsedBytes == blockSize); TEST(statInfo.usedBytes == blockSize);
CHECK_BOOL(statInfo.UnusedBytes + statInfo.UsedBytes == blockSize); TEST(statInfo.unusedBytes + statInfo.usedBytes == blockSize);
#if 0
// # Generate JSON dump // # Generate JSON dump
WCHAR* json = nullptr; WCHAR* json = nullptr;