summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineD3D12
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-10-09 16:27:57 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-10-09 16:27:57 +0000
commit05ef5647cd0b2404cb03f62042676288d11a79ab (patch)
tree7dfa6a125c954d4ab8a3097f3495da6105a34125 /Graphics/GraphicsEngineD3D12
parentImprove memory usage stats reporting in Vk backend (diff)
downloadDiligentCore-05ef5647cd0b2404cb03f62042676288d11a79ab.tar.gz
DiligentCore-05ef5647cd0b2404cb03f62042676288d11a79ab.zip
Improved D3D12DynamicHeap memory usage reporting
Diffstat (limited to 'Graphics/GraphicsEngineD3D12')
-rw-r--r--Graphics/GraphicsEngineD3D12/include/D3D12DynamicHeap.h2
-rw-r--r--Graphics/GraphicsEngineD3D12/src/D3D12DynamicHeap.cpp16
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;
}
}