mirror of
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
synced 2024-11-10 02:31:48 +00:00
Record and replay: Added support for function vmaMakePoolAllocationsLost.
This commit is contained in:
parent
5de71e1d28
commit
2556b377f7
@ -158,6 +158,10 @@ No parameters.
|
||||
|
||||
- allocation : pointer
|
||||
|
||||
**vmaMakePoolAllocationsLost** (min format version: 1.2)
|
||||
|
||||
- pool : pointer
|
||||
|
||||
## Data types
|
||||
|
||||
**bool**
|
||||
|
@ -65,6 +65,7 @@ enum class VMA_FUNCTION
|
||||
InvalidateAllocation,
|
||||
TouchAllocation,
|
||||
GetAllocationInfo,
|
||||
MakePoolAllocationsLost,
|
||||
Count
|
||||
};
|
||||
static const char* VMA_FUNCTION_NAMES[] = {
|
||||
@ -86,6 +87,7 @@ static const char* VMA_FUNCTION_NAMES[] = {
|
||||
"vmaInvalidateAllocation",
|
||||
"vmaTouchAllocation",
|
||||
"vmaGetAllocationInfo",
|
||||
"vmaMakePoolAllocationsLost",
|
||||
};
|
||||
static_assert(
|
||||
_countof(VMA_FUNCTION_NAMES) == (size_t)VMA_FUNCTION::Count,
|
||||
@ -573,6 +575,7 @@ private:
|
||||
void ExecuteInvalidateAllocation(size_t lineNumber, const CsvSplit& csvSplit);
|
||||
void ExecuteTouchAllocation(size_t lineNumber, const CsvSplit& csvSplit);
|
||||
void ExecuteGetAllocationInfo(size_t lineNumber, const CsvSplit& csvSplit);
|
||||
void ExecuteMakePoolAllocationsLost(size_t lineNumber, const CsvSplit& csvSplit);
|
||||
|
||||
void DestroyAllocation(size_t lineNumber, const CsvSplit& csvSplit);
|
||||
};
|
||||
@ -704,6 +707,8 @@ void Player::ExecuteLine(size_t lineNumber, const StrRange& line)
|
||||
ExecuteTouchAllocation(lineNumber, csvSplit);
|
||||
else if(StrRangeEq(functionName, "vmaGetAllocationInfo"))
|
||||
ExecuteGetAllocationInfo(lineNumber, csvSplit);
|
||||
else if(StrRangeEq(functionName, "vmaMakePoolAllocationsLost"))
|
||||
ExecuteMakePoolAllocationsLost(lineNumber, csvSplit);
|
||||
else
|
||||
{
|
||||
if(IssueWarning())
|
||||
@ -1988,6 +1993,42 @@ void Player::ExecuteGetAllocationInfo(size_t lineNumber, const CsvSplit& csvSpli
|
||||
}
|
||||
}
|
||||
|
||||
void Player::ExecuteMakePoolAllocationsLost(size_t lineNumber, const CsvSplit& csvSplit)
|
||||
{
|
||||
m_Stats.RegisterFunctionCall(VMA_FUNCTION::MakePoolAllocationsLost);
|
||||
|
||||
if(ValidateFunctionParameterCount(lineNumber, csvSplit, 1, false))
|
||||
{
|
||||
uint64_t origPtr = 0;
|
||||
|
||||
if(StrRangeToPtr(csvSplit.GetRange(FIRST_PARAM_INDEX), origPtr))
|
||||
{
|
||||
if(origPtr != 0)
|
||||
{
|
||||
const auto it = m_Pools.find(origPtr);
|
||||
if(it != m_Pools.end())
|
||||
{
|
||||
vmaMakePoolAllocationsLost(m_Allocator, it->second.pool, nullptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(IssueWarning())
|
||||
{
|
||||
printf("Line %zu: Pool %llX not found.\n", lineNumber, origPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(IssueWarning())
|
||||
{
|
||||
printf("Line %zu: Invalid parameters for vmaMakePoolAllocationsLost.\n", lineNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Main functions
|
||||
|
||||
|
@ -4854,6 +4854,8 @@ public:
|
||||
VmaAllocation allocation);
|
||||
void RecordGetAllocationInfo(uint32_t frameIndex,
|
||||
VmaAllocation allocation);
|
||||
void RecordMakePoolAllocationsLost(uint32_t frameIndex,
|
||||
VmaPool pool);
|
||||
|
||||
private:
|
||||
struct CallParams
|
||||
@ -8507,6 +8509,18 @@ void VmaRecorder::RecordGetAllocationInfo(uint32_t frameIndex,
|
||||
Flush();
|
||||
}
|
||||
|
||||
void VmaRecorder::RecordMakePoolAllocationsLost(uint32_t frameIndex,
|
||||
VmaPool pool)
|
||||
{
|
||||
CallParams callParams;
|
||||
GetBasicParams(callParams);
|
||||
|
||||
VmaMutexLock lock(m_FileMutex, m_UseMutex);
|
||||
fprintf(m_File, "%u,%.3f,%u,vmaMakePoolAllocationsLost,%p\n", callParams.threadId, callParams.time, frameIndex,
|
||||
pool);
|
||||
Flush();
|
||||
}
|
||||
|
||||
VmaRecorder::UserDataString::UserDataString(VmaAllocationCreateFlags allocFlags, const void* pUserData)
|
||||
{
|
||||
if(pUserData != VMA_NULL)
|
||||
@ -10401,6 +10415,13 @@ void vmaMakePoolAllocationsLost(
|
||||
|
||||
VMA_DEBUG_GLOBAL_MUTEX_LOCK
|
||||
|
||||
#if VMA_RECORDING_ENABLED
|
||||
if(allocator->GetRecorder() != VMA_NULL)
|
||||
{
|
||||
allocator->GetRecorder()->RecordMakePoolAllocationsLost(allocator->GetCurrentFrameIndex(), pool);
|
||||
}
|
||||
#endif
|
||||
|
||||
allocator->MakePoolAllocationsLost(pool, pLostAllocationCount);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user