diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-10-09 16:27:57 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-10-09 16:27:57 +0000 |
| commit | 05ef5647cd0b2404cb03f62042676288d11a79ab (patch) | |
| tree | 7dfa6a125c954d4ab8a3097f3495da6105a34125 /Graphics/GraphicsEngineD3D12 | |
| parent | Improve memory usage stats reporting in Vk backend (diff) | |
| download | DiligentCore-05ef5647cd0b2404cb03f62042676288d11a79ab.tar.gz DiligentCore-05ef5647cd0b2404cb03f62042676288d11a79ab.zip | |
Improved D3D12DynamicHeap memory usage reporting
Diffstat (limited to 'Graphics/GraphicsEngineD3D12')
| -rw-r--r-- | Graphics/GraphicsEngineD3D12/include/D3D12DynamicHeap.h | 2 | ||||
| -rw-r--r-- | Graphics/GraphicsEngineD3D12/src/D3D12DynamicHeap.cpp | 16 |
2 files changed, 15 insertions, 3 deletions
diff --git a/Graphics/GraphicsEngineD3D12/include/D3D12DynamicHeap.h b/Graphics/GraphicsEngineD3D12/include/D3D12DynamicHeap.h index f251d814..18fd3bd6 100644 --- a/Graphics/GraphicsEngineD3D12/include/D3D12DynamicHeap.h +++ b/Graphics/GraphicsEngineD3D12/include/D3D12DynamicHeap.h @@ -183,8 +183,10 @@ private: Uint64 m_CurrAllocatedSize = 0; Uint64 m_CurrUsedSize = 0; + Uint64 m_CurrAlignedSize = 0; Uint64 m_PeakAllocatedSize = 0; Uint64 m_PeakUsedSize = 0; + Uint64 m_PeakAlignedSize = 0; }; } diff --git a/Graphics/GraphicsEngineD3D12/src/D3D12DynamicHeap.cpp b/Graphics/GraphicsEngineD3D12/src/D3D12DynamicHeap.cpp index 522c7512..7bcb59c5 100644 --- a/Graphics/GraphicsEngineD3D12/src/D3D12DynamicHeap.cpp +++ b/Graphics/GraphicsEngineD3D12/src/D3D12DynamicHeap.cpp @@ -172,9 +172,15 @@ D3D12DynamicHeap::~D3D12DynamicHeap() { VERIFY(m_AllocatedPages.empty(), "Allocated pages have not been released which indicates FinishFrame() has not been called"); + auto PeakAllocatedPages = m_PeakAllocatedSize / m_PageSize; LOG_INFO_MESSAGE(m_HeapName, " usage stats:\n" - " Peak used/peak allocated size: ", FormatMemorySize(m_PeakUsedSize, 2, m_PeakAllocatedSize), '/', FormatMemorySize(m_PeakAllocatedSize, 2, m_PeakAllocatedSize), - ". Peak utilization: ", std::fixed, std::setprecision(1), static_cast<double>(m_PeakUsedSize) / static_cast<double>(std::max(m_PeakAllocatedSize, Uint64{1})) * 100.0, '%'); + " Peak used/aligned/allocated size: ", + FormatMemorySize(m_PeakUsedSize, 2, m_PeakAllocatedSize), " / ", + FormatMemorySize(m_PeakAlignedSize, 2, m_PeakAllocatedSize), " / ", + FormatMemorySize(m_PeakAllocatedSize, 2, m_PeakAllocatedSize), + " (", PeakAllocatedPages, (PeakAllocatedPages == 1 ? " page)" : " pages)"), + ". Peak efficiency (used/aligned): ", std::fixed, std::setprecision(1), static_cast<double>(m_PeakUsedSize) / static_cast<double>(std::max(m_PeakAlignedSize, Uint64{1})) * 100.0, '%', + ". Peak utilization (used/allocated): ", std::fixed, std::setprecision(1), static_cast<double>(m_PeakUsedSize) / static_cast<double>(std::max(m_PeakAllocatedSize, Uint64{1})) * 100.0, '%'); } D3D12DynamicAllocation D3D12DynamicHeap::Allocate(Uint64 SizeInBytes, Uint64 Alignment, Uint64 DvpCtxFrameNumber) @@ -210,7 +216,10 @@ D3D12DynamicAllocation D3D12DynamicHeap::Allocate(Uint64 SizeInBytes, Uint64 Ali m_CurrOffset += AdjustedSize; m_CurrUsedSize += SizeInBytes; - m_PeakUsedSize = std::max(m_PeakUsedSize, m_CurrUsedSize); + m_PeakUsedSize = std::max(m_PeakUsedSize, m_CurrUsedSize); + + m_CurrAlignedSize += AdjustedSize; + m_PeakAlignedSize = std::max(m_PeakAlignedSize, m_CurrAlignedSize); auto& CurrPage = m_AllocatedPages.back(); return D3D12DynamicAllocation @@ -238,6 +247,7 @@ void D3D12DynamicHeap::ReleaseAllocatedPages(Uint64 QueueMask) m_AvailableSize = 0; m_CurrAllocatedSize = 0; m_CurrUsedSize = 0; + m_CurrAlignedSize = 0; } } |
