mirror of
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
synced 2024-11-12 19:41:47 +00:00
Improved handling of destruction calls with null handle, in vk_mem_alloc as well as VmaReplay.
This commit is contained in:
parent
5b48b5efcf
commit
db1f73fee4
@ -765,17 +765,20 @@ void Player::ExecuteDestroyPool(size_t lineNumber, const CsvSplit& csvSplit)
|
|||||||
|
|
||||||
if(StrRangeToPtr(csvSplit.GetRange(FIRST_PARAM_INDEX), origPtr))
|
if(StrRangeToPtr(csvSplit.GetRange(FIRST_PARAM_INDEX), origPtr))
|
||||||
{
|
{
|
||||||
const auto it = m_Pools.find(origPtr);
|
if(origPtr != 0)
|
||||||
if(it != m_Pools.end())
|
|
||||||
{
|
{
|
||||||
vmaDestroyPool(m_Allocator, it->second.pool);
|
const auto it = m_Pools.find(origPtr);
|
||||||
m_Pools.erase(it);
|
if(it != m_Pools.end())
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(IssueWarning())
|
|
||||||
{
|
{
|
||||||
printf("Line %zu: Pool %llX not found.\n", lineNumber, origPtr);
|
vmaDestroyPool(m_Allocator, it->second.pool);
|
||||||
|
m_Pools.erase(it);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(IssueWarning())
|
||||||
|
{
|
||||||
|
printf("Line %zu: Pool %llX not found.\n", lineNumber, origPtr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -867,17 +870,20 @@ void Player::DestroyAllocation(size_t lineNumber, const CsvSplit& csvSplit)
|
|||||||
|
|
||||||
if(StrRangeToPtr(csvSplit.GetRange(FIRST_PARAM_INDEX), origAllocPtr))
|
if(StrRangeToPtr(csvSplit.GetRange(FIRST_PARAM_INDEX), origAllocPtr))
|
||||||
{
|
{
|
||||||
const auto it = m_Allocations.find(origAllocPtr);
|
if(origAllocPtr != 0)
|
||||||
if(it != m_Allocations.end())
|
|
||||||
{
|
{
|
||||||
Destroy(it->second);
|
const auto it = m_Allocations.find(origAllocPtr);
|
||||||
m_Allocations.erase(it);
|
if(it != m_Allocations.end())
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(IssueWarning())
|
|
||||||
{
|
{
|
||||||
printf("Line %zu: Allocation %llX not found.\n", lineNumber, origAllocPtr);
|
Destroy(it->second);
|
||||||
|
m_Allocations.erase(it);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(IssueWarning())
|
||||||
|
{
|
||||||
|
printf("Line %zu: Allocation %llX not found.\n", lineNumber, origAllocPtr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9929,6 +9929,11 @@ void vmaFreeMemory(
|
|||||||
{
|
{
|
||||||
VMA_ASSERT(allocator);
|
VMA_ASSERT(allocator);
|
||||||
|
|
||||||
|
if(allocation == VK_NULL_HANDLE)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
VmaMutexLock lock(g_FileMutex, true);
|
VmaMutexLock lock(g_FileMutex, true);
|
||||||
EnsureFile();
|
EnsureFile();
|
||||||
@ -9943,10 +9948,7 @@ void vmaFreeMemory(
|
|||||||
|
|
||||||
VMA_DEBUG_LOG("vmaFreeMemory");
|
VMA_DEBUG_LOG("vmaFreeMemory");
|
||||||
VMA_DEBUG_GLOBAL_MUTEX_LOCK
|
VMA_DEBUG_GLOBAL_MUTEX_LOCK
|
||||||
if(allocation != VK_NULL_HANDLE)
|
allocator->FreeMemory(allocation);
|
||||||
{
|
|
||||||
allocator->FreeMemory(allocation);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void vmaGetAllocationInfo(
|
void vmaGetAllocationInfo(
|
||||||
@ -10232,6 +10234,11 @@ void vmaDestroyBuffer(
|
|||||||
{
|
{
|
||||||
VMA_ASSERT(allocator);
|
VMA_ASSERT(allocator);
|
||||||
|
|
||||||
|
if(buffer == VK_NULL_HANDLE && allocation == VK_NULL_HANDLE)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
VmaMutexLock lock(g_FileMutex, true);
|
VmaMutexLock lock(g_FileMutex, true);
|
||||||
EnsureFile();
|
EnsureFile();
|
||||||
@ -10356,6 +10363,12 @@ void vmaDestroyImage(
|
|||||||
{
|
{
|
||||||
VMA_ASSERT(allocator);
|
VMA_ASSERT(allocator);
|
||||||
|
|
||||||
|
if(image == VK_NULL_HANDLE && allocation == VK_NULL_HANDLE)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
VmaMutexLock lock(g_FileMutex, true);
|
VmaMutexLock lock(g_FileMutex, true);
|
||||||
EnsureFile();
|
EnsureFile();
|
||||||
|
Loading…
Reference in New Issue
Block a user