mirror of
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
synced 2025-05-15 01:08:31 +00:00
Removed VmaPoolStats::unusedRangeSizeMax. COMPATIBILITY BREAKING!
This commit is contained in:
parent
204fcdc0a3
commit
6f73bc1b81
1 changed files with 0 additions and 109 deletions
|
@ -1230,13 +1230,6 @@ typedef struct VmaPoolStats
|
||||||
/** \brief Number of continuous memory ranges in the pool not used by any #VmaAllocation.
|
/** \brief Number of continuous memory ranges in the pool not used by any #VmaAllocation.
|
||||||
*/
|
*/
|
||||||
size_t unusedRangeCount;
|
size_t unusedRangeCount;
|
||||||
/** \brief Size of the largest continuous free memory region available for new allocation.
|
|
||||||
|
|
||||||
Making a new allocation of that size is not guaranteed to succeed because of
|
|
||||||
possible additional margin required to respect alignment and buffer/image
|
|
||||||
granularity.
|
|
||||||
*/
|
|
||||||
VkDeviceSize unusedRangeSizeMax;
|
|
||||||
/** \brief Number of `VkDeviceMemory` blocks allocated for this pool.
|
/** \brief Number of `VkDeviceMemory` blocks allocated for this pool.
|
||||||
*/
|
*/
|
||||||
size_t blockCount;
|
size_t blockCount;
|
||||||
|
@ -5847,7 +5840,6 @@ public:
|
||||||
virtual bool Validate() const = 0;
|
virtual bool Validate() const = 0;
|
||||||
virtual size_t GetAllocationCount() const = 0;
|
virtual size_t GetAllocationCount() const = 0;
|
||||||
virtual VkDeviceSize GetSumFreeSize() const = 0;
|
virtual VkDeviceSize GetSumFreeSize() const = 0;
|
||||||
virtual VkDeviceSize GetUnusedRangeSizeMax() const = 0;
|
|
||||||
// Returns true if this block is empty - contains only single free suballocation.
|
// Returns true if this block is empty - contains only single free suballocation.
|
||||||
virtual bool IsEmpty() const = 0;
|
virtual bool IsEmpty() const = 0;
|
||||||
virtual void GetAllocationInfo(VkDeviceSize offset, VmaVirtualAllocationInfo& outInfo) = 0;
|
virtual void GetAllocationInfo(VkDeviceSize offset, VmaVirtualAllocationInfo& outInfo) = 0;
|
||||||
|
@ -6026,7 +6018,6 @@ public:
|
||||||
|
|
||||||
virtual void Init(VkDeviceSize size);
|
virtual void Init(VkDeviceSize size);
|
||||||
virtual bool Validate() const;
|
virtual bool Validate() const;
|
||||||
virtual VkDeviceSize GetUnusedRangeSizeMax() const;
|
|
||||||
|
|
||||||
virtual void CalcAllocationStatInfo(VmaStatInfo& outInfo) const;
|
virtual void CalcAllocationStatInfo(VmaStatInfo& outInfo) const;
|
||||||
virtual void AddPoolStats(VmaPoolStats& inoutStats) const;
|
virtual void AddPoolStats(VmaPoolStats& inoutStats) const;
|
||||||
|
@ -6219,18 +6210,6 @@ bool VmaBlockMetadata_Generic::Validate() const
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
VkDeviceSize VmaBlockMetadata_Generic::GetUnusedRangeSizeMax() const
|
|
||||||
{
|
|
||||||
if (!m_FreeSuballocationsBySize.empty())
|
|
||||||
{
|
|
||||||
return m_FreeSuballocationsBySize.back()->size;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void VmaBlockMetadata_Generic::CalcAllocationStatInfo(VmaStatInfo& outInfo) const
|
void VmaBlockMetadata_Generic::CalcAllocationStatInfo(VmaStatInfo& outInfo) const
|
||||||
{
|
{
|
||||||
const uint32_t rangeCount = (uint32_t)m_Suballocations.size();
|
const uint32_t rangeCount = (uint32_t)m_Suballocations.size();
|
||||||
|
@ -6258,7 +6237,6 @@ void VmaBlockMetadata_Generic::AddPoolStats(VmaPoolStats& inoutStats) const
|
||||||
inoutStats.unusedSize += m_SumFreeSize;
|
inoutStats.unusedSize += m_SumFreeSize;
|
||||||
inoutStats.allocationCount += rangeCount - m_FreeCount;
|
inoutStats.allocationCount += rangeCount - m_FreeCount;
|
||||||
inoutStats.unusedRangeCount += m_FreeCount;
|
inoutStats.unusedRangeCount += m_FreeCount;
|
||||||
inoutStats.unusedRangeSizeMax = VMA_MAX(inoutStats.unusedRangeSizeMax, GetUnusedRangeSizeMax());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if VMA_STATS_STRING_ENABLED
|
#if VMA_STATS_STRING_ENABLED
|
||||||
|
@ -7196,7 +7174,6 @@ public:
|
||||||
virtual void Init(VkDeviceSize size);
|
virtual void Init(VkDeviceSize size);
|
||||||
virtual bool Validate() const;
|
virtual bool Validate() const;
|
||||||
virtual size_t GetAllocationCount() const;
|
virtual size_t GetAllocationCount() const;
|
||||||
virtual VkDeviceSize GetUnusedRangeSizeMax() const;
|
|
||||||
|
|
||||||
virtual void CalcAllocationStatInfo(VmaStatInfo& outInfo) const;
|
virtual void CalcAllocationStatInfo(VmaStatInfo& outInfo) const;
|
||||||
virtual void AddPoolStats(VmaPoolStats& inoutStats) const;
|
virtual void AddPoolStats(VmaPoolStats& inoutStats) const;
|
||||||
|
@ -7476,70 +7453,6 @@ size_t VmaBlockMetadata_Linear::GetAllocationCount() const
|
||||||
AccessSuballocations2nd().size() - m_2ndNullItemsCount;
|
AccessSuballocations2nd().size() - m_2ndNullItemsCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
VkDeviceSize VmaBlockMetadata_Linear::GetUnusedRangeSizeMax() const
|
|
||||||
{
|
|
||||||
const VkDeviceSize size = GetSize();
|
|
||||||
|
|
||||||
/*
|
|
||||||
We don't consider gaps inside allocation vectors with freed allocations because
|
|
||||||
they are not suitable for reuse in linear allocator. We consider only space that
|
|
||||||
is available for new allocations.
|
|
||||||
*/
|
|
||||||
if (IsEmpty())
|
|
||||||
{
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
const SuballocationVectorType& suballocations1st = AccessSuballocations1st();
|
|
||||||
|
|
||||||
switch (m_2ndVectorMode)
|
|
||||||
{
|
|
||||||
case SECOND_VECTOR_EMPTY:
|
|
||||||
/*
|
|
||||||
Available space is after end of 1st, as well as before beginning of 1st (which
|
|
||||||
would make it a ring buffer).
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
const size_t suballocations1stCount = suballocations1st.size();
|
|
||||||
VMA_ASSERT(suballocations1stCount > m_1stNullItemsBeginCount);
|
|
||||||
const VmaSuballocation& firstSuballoc = suballocations1st[m_1stNullItemsBeginCount];
|
|
||||||
const VmaSuballocation& lastSuballoc = suballocations1st[suballocations1stCount - 1];
|
|
||||||
return VMA_MAX(
|
|
||||||
firstSuballoc.offset,
|
|
||||||
size - (lastSuballoc.offset + lastSuballoc.size));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SECOND_VECTOR_RING_BUFFER:
|
|
||||||
/*
|
|
||||||
Available space is only between end of 2nd and beginning of 1st.
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
const SuballocationVectorType& suballocations2nd = AccessSuballocations2nd();
|
|
||||||
const VmaSuballocation& lastSuballoc2nd = suballocations2nd.back();
|
|
||||||
const VmaSuballocation& firstSuballoc1st = suballocations1st[m_1stNullItemsBeginCount];
|
|
||||||
return firstSuballoc1st.offset - (lastSuballoc2nd.offset + lastSuballoc2nd.size);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SECOND_VECTOR_DOUBLE_STACK:
|
|
||||||
/*
|
|
||||||
Available space is only between end of 1st and top of 2nd.
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
const SuballocationVectorType& suballocations2nd = AccessSuballocations2nd();
|
|
||||||
const VmaSuballocation& topSuballoc2nd = suballocations2nd.back();
|
|
||||||
const VmaSuballocation& lastSuballoc1st = suballocations1st.back();
|
|
||||||
return topSuballoc2nd.offset - (lastSuballoc1st.offset + lastSuballoc1st.size);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
VMA_ASSERT(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void VmaBlockMetadata_Linear::CalcAllocationStatInfo(VmaStatInfo& outInfo) const
|
void VmaBlockMetadata_Linear::CalcAllocationStatInfo(VmaStatInfo& outInfo) const
|
||||||
{
|
{
|
||||||
const VkDeviceSize size = GetSize();
|
const VkDeviceSize size = GetSize();
|
||||||
|
@ -7740,7 +7653,6 @@ void VmaBlockMetadata_Linear::AddPoolStats(VmaPoolStats& inoutStats) const
|
||||||
const VkDeviceSize unusedRangeSize = suballoc.offset - lastOffset;
|
const VkDeviceSize unusedRangeSize = suballoc.offset - lastOffset;
|
||||||
inoutStats.unusedSize += unusedRangeSize;
|
inoutStats.unusedSize += unusedRangeSize;
|
||||||
++inoutStats.unusedRangeCount;
|
++inoutStats.unusedRangeCount;
|
||||||
inoutStats.unusedRangeSizeMax = VMA_MAX(inoutStats.unusedRangeSizeMax, unusedRangeSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Process this allocation.
|
// 2. Process this allocation.
|
||||||
|
@ -7760,7 +7672,6 @@ void VmaBlockMetadata_Linear::AddPoolStats(VmaPoolStats& inoutStats) const
|
||||||
const VkDeviceSize unusedRangeSize = freeSpace2ndTo1stEnd - lastOffset;
|
const VkDeviceSize unusedRangeSize = freeSpace2ndTo1stEnd - lastOffset;
|
||||||
inoutStats.unusedSize += unusedRangeSize;
|
inoutStats.unusedSize += unusedRangeSize;
|
||||||
++inoutStats.unusedRangeCount;
|
++inoutStats.unusedRangeCount;
|
||||||
inoutStats.unusedRangeSizeMax = VMA_MAX(inoutStats.unusedRangeSizeMax, unusedRangeSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// End of loop.
|
// End of loop.
|
||||||
|
@ -7793,7 +7704,6 @@ void VmaBlockMetadata_Linear::AddPoolStats(VmaPoolStats& inoutStats) const
|
||||||
const VkDeviceSize unusedRangeSize = suballoc.offset - lastOffset;
|
const VkDeviceSize unusedRangeSize = suballoc.offset - lastOffset;
|
||||||
inoutStats.unusedSize += unusedRangeSize;
|
inoutStats.unusedSize += unusedRangeSize;
|
||||||
++inoutStats.unusedRangeCount;
|
++inoutStats.unusedRangeCount;
|
||||||
inoutStats.unusedRangeSizeMax = VMA_MAX(inoutStats.unusedRangeSizeMax, unusedRangeSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Process this allocation.
|
// 2. Process this allocation.
|
||||||
|
@ -7813,7 +7723,6 @@ void VmaBlockMetadata_Linear::AddPoolStats(VmaPoolStats& inoutStats) const
|
||||||
const VkDeviceSize unusedRangeSize = freeSpace1stTo2ndEnd - lastOffset;
|
const VkDeviceSize unusedRangeSize = freeSpace1stTo2ndEnd - lastOffset;
|
||||||
inoutStats.unusedSize += unusedRangeSize;
|
inoutStats.unusedSize += unusedRangeSize;
|
||||||
++inoutStats.unusedRangeCount;
|
++inoutStats.unusedRangeCount;
|
||||||
inoutStats.unusedRangeSizeMax = VMA_MAX(inoutStats.unusedRangeSizeMax, unusedRangeSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// End of loop.
|
// End of loop.
|
||||||
|
@ -7845,7 +7754,6 @@ void VmaBlockMetadata_Linear::AddPoolStats(VmaPoolStats& inoutStats) const
|
||||||
const VkDeviceSize unusedRangeSize = suballoc.offset - lastOffset;
|
const VkDeviceSize unusedRangeSize = suballoc.offset - lastOffset;
|
||||||
inoutStats.unusedSize += unusedRangeSize;
|
inoutStats.unusedSize += unusedRangeSize;
|
||||||
++inoutStats.unusedRangeCount;
|
++inoutStats.unusedRangeCount;
|
||||||
inoutStats.unusedRangeSizeMax = VMA_MAX(inoutStats.unusedRangeSizeMax, unusedRangeSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Process this allocation.
|
// 2. Process this allocation.
|
||||||
|
@ -7865,7 +7773,6 @@ void VmaBlockMetadata_Linear::AddPoolStats(VmaPoolStats& inoutStats) const
|
||||||
const VkDeviceSize unusedRangeSize = size - lastOffset;
|
const VkDeviceSize unusedRangeSize = size - lastOffset;
|
||||||
inoutStats.unusedSize += unusedRangeSize;
|
inoutStats.unusedSize += unusedRangeSize;
|
||||||
++inoutStats.unusedRangeCount;
|
++inoutStats.unusedRangeCount;
|
||||||
inoutStats.unusedRangeSizeMax = VMA_MAX(inoutStats.unusedRangeSizeMax, unusedRangeSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// End of loop.
|
// End of loop.
|
||||||
|
@ -9130,7 +9037,6 @@ public:
|
||||||
|
|
||||||
virtual void Init(VkDeviceSize size);
|
virtual void Init(VkDeviceSize size);
|
||||||
virtual bool Validate() const;
|
virtual bool Validate() const;
|
||||||
virtual VkDeviceSize GetUnusedRangeSizeMax() const;
|
|
||||||
|
|
||||||
virtual void CalcAllocationStatInfo(VmaStatInfo& outInfo) const;
|
virtual void CalcAllocationStatInfo(VmaStatInfo& outInfo) const;
|
||||||
virtual void AddPoolStats(VmaPoolStats& inoutStats) const;
|
virtual void AddPoolStats(VmaPoolStats& inoutStats) const;
|
||||||
|
@ -9343,18 +9249,6 @@ bool VmaBlockMetadata_Buddy::Validate() const
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
VkDeviceSize VmaBlockMetadata_Buddy::GetUnusedRangeSizeMax() const
|
|
||||||
{
|
|
||||||
for (uint32_t level = 0; level < m_LevelCount; ++level)
|
|
||||||
{
|
|
||||||
if (m_FreeList[level].front != VMA_NULL)
|
|
||||||
{
|
|
||||||
return LevelToNodeSize(level);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void VmaBlockMetadata_Buddy::CalcAllocationStatInfo(VmaStatInfo& outInfo) const
|
void VmaBlockMetadata_Buddy::CalcAllocationStatInfo(VmaStatInfo& outInfo) const
|
||||||
{
|
{
|
||||||
VmaInitStatInfo(outInfo);
|
VmaInitStatInfo(outInfo);
|
||||||
|
@ -9377,12 +9271,10 @@ void VmaBlockMetadata_Buddy::AddPoolStats(VmaPoolStats& inoutStats) const
|
||||||
inoutStats.unusedSize += m_SumFreeSize + unusableSize;
|
inoutStats.unusedSize += m_SumFreeSize + unusableSize;
|
||||||
inoutStats.allocationCount += m_AllocationCount;
|
inoutStats.allocationCount += m_AllocationCount;
|
||||||
inoutStats.unusedRangeCount += m_FreeCount;
|
inoutStats.unusedRangeCount += m_FreeCount;
|
||||||
inoutStats.unusedRangeSizeMax = VMA_MAX(inoutStats.unusedRangeSizeMax, GetUnusedRangeSizeMax());
|
|
||||||
|
|
||||||
if (unusableSize > 0)
|
if (unusableSize > 0)
|
||||||
{
|
{
|
||||||
++inoutStats.unusedRangeCount;
|
++inoutStats.unusedRangeCount;
|
||||||
// Not updating inoutStats.unusedRangeSizeMax with unusableSize because this space is not available for allocations.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16358,7 +16250,6 @@ void VmaAllocator_T::GetPoolStats(VmaPool pool, VmaPoolStats* pPoolStats)
|
||||||
pPoolStats->unusedSize = 0;
|
pPoolStats->unusedSize = 0;
|
||||||
pPoolStats->allocationCount = 0;
|
pPoolStats->allocationCount = 0;
|
||||||
pPoolStats->unusedRangeCount = 0;
|
pPoolStats->unusedRangeCount = 0;
|
||||||
pPoolStats->unusedRangeSizeMax = 0;
|
|
||||||
pPoolStats->blockCount = 0;
|
pPoolStats->blockCount = 0;
|
||||||
|
|
||||||
pool->m_BlockVector.AddPoolStats(pPoolStats);
|
pool->m_BlockVector.AddPoolStats(pPoolStats);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue