From 05ef5647cd0b2404cb03f62042676288d11a79ab Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Tue, 9 Oct 2018 09:27:57 -0700 Subject: Improved D3D12DynamicHeap memory usage reporting --- Graphics/GraphicsEngineD3D12/include/D3D12DynamicHeap.h | 2 ++ Graphics/GraphicsEngineD3D12/src/D3D12DynamicHeap.cpp | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'Graphics/GraphicsEngineD3D12') 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(m_PeakUsedSize) / static_cast(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(m_PeakUsedSize) / static_cast(std::max(m_PeakAlignedSize, Uint64{1})) * 100.0, '%', + ". Peak utilization (used/allocated): ", std::fixed, std::setprecision(1), static_cast(m_PeakUsedSize) / static_cast(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; } } -- cgit v1.2.3