From a0ea29a2fa337d5c78677591140ff8b90c97754a Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Fri, 21 Feb 2025 18:18:52 +0100 Subject: [PATCH] [hud] Display number of merged draws, if any --- src/dxvk/hud/dxvk_hud_item.cpp | 21 +++++++++++++-------- src/dxvk/hud/dxvk_hud_item.h | 11 ++++++----- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/dxvk/hud/dxvk_hud_item.cpp b/src/dxvk/hud/dxvk_hud_item.cpp index f80ba77d4..9c2a2f873 100644 --- a/src/dxvk/hud/dxvk_hud_item.cpp +++ b/src/dxvk/hud/dxvk_hud_item.cpp @@ -800,10 +800,11 @@ namespace dxvk::hud { auto diffCounters = counters.diff(m_prevCounters); if (elapsed.count() >= UpdateInterval) { - m_gpCount = diffCounters.getCtr(DxvkStatCounter::CmdDrawCalls); - m_cpCount = diffCounters.getCtr(DxvkStatCounter::CmdDispatchCalls); - m_rpCount = diffCounters.getCtr(DxvkStatCounter::CmdRenderPassCount); - m_pbCount = diffCounters.getCtr(DxvkStatCounter::CmdBarrierCount); + m_drawCallCount = diffCounters.getCtr(DxvkStatCounter::CmdDrawCalls); + m_drawCount = diffCounters.getCtr(DxvkStatCounter::CmdDrawsMerged) + m_drawCallCount; + m_dispatchCount = diffCounters.getCtr(DxvkStatCounter::CmdDispatchCalls); + m_renderPassCount = diffCounters.getCtr(DxvkStatCounter::CmdRenderPassCount); + m_barrierCount = diffCounters.getCtr(DxvkStatCounter::CmdBarrierCount); m_lastUpdate = time; } @@ -818,21 +819,25 @@ namespace dxvk::hud { const HudOptions& options, HudRenderer& renderer, HudPos position) { + std::string drawCount = m_drawCount > m_drawCallCount + ? str::format(m_drawCallCount, " (", m_drawCount, ")") + : str::format(m_drawCallCount); + position.y += 16; renderer.drawText(16, position, 0xffff8040, "Draw calls:"); - renderer.drawText(16, { position.x + 192, position.y }, 0xffffffffu, str::format(m_gpCount)); + renderer.drawText(16, { position.x + 192, position.y }, 0xffffffffu, drawCount); position.y += 20; renderer.drawText(16, position, 0xffff8040, "Dispatch calls:"); - renderer.drawText(16, { position.x + 192, position.y }, 0xffffffffu, str::format(m_cpCount)); + renderer.drawText(16, { position.x + 192, position.y }, 0xffffffffu, str::format(m_dispatchCount)); position.y += 20; renderer.drawText(16, position, 0xffff8040, "Render passes:"); - renderer.drawText(16, { position.x + 192, position.y }, 0xffffffffu, str::format(m_rpCount)); + renderer.drawText(16, { position.x + 192, position.y }, 0xffffffffu, str::format(m_renderPassCount)); position.y += 20; renderer.drawText(16, position, 0xffff8040, "Barriers:"); - renderer.drawText(16, { position.x + 192, position.y }, 0xffffffffu, str::format(m_pbCount)); + renderer.drawText(16, { position.x + 192, position.y }, 0xffffffffu, str::format(m_barrierCount)); position.y += 8; return position; diff --git a/src/dxvk/hud/dxvk_hud_item.h b/src/dxvk/hud/dxvk_hud_item.h index 866849b4e..9e6274d17 100644 --- a/src/dxvk/hud/dxvk_hud_item.h +++ b/src/dxvk/hud/dxvk_hud_item.h @@ -422,10 +422,11 @@ namespace dxvk::hud { DxvkStatCounters m_prevCounters; - uint64_t m_gpCount = 0; - uint64_t m_cpCount = 0; - uint64_t m_rpCount = 0; - uint64_t m_pbCount = 0; + uint64_t m_drawCallCount = 0; + uint64_t m_drawCount = 0; + uint64_t m_dispatchCount = 0; + uint64_t m_renderPassCount = 0; + uint64_t m_barrierCount = 0; dxvk::high_resolution_clock::time_point m_lastUpdate = dxvk::high_resolution_clock::now(); @@ -774,4 +775,4 @@ namespace dxvk::hud { }; -} \ No newline at end of file +}