diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-05-28 17:40:57 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-05-28 17:40:57 +0200 |
| commit | 7d442d48514e62a41e5bad0176adb8428dd112b3 (patch) | |
| tree | 6e327af07b01a1e089e5d495bb697d4c4578a1da /src/debug/HyprDebugOverlay.cpp | |
| parent | 8c10857f14e6c91f3b3099b9508e1f4d68c2d276 (diff) | |
Added rendertime no overlay
Diffstat (limited to 'src/debug/HyprDebugOverlay.cpp')
| -rw-r--r-- | src/debug/HyprDebugOverlay.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/debug/HyprDebugOverlay.cpp b/src/debug/HyprDebugOverlay.cpp index 214965a8..0eb3ba17 100644 --- a/src/debug/HyprDebugOverlay.cpp +++ b/src/debug/HyprDebugOverlay.cpp @@ -11,6 +11,16 @@ void CHyprMonitorDebugOverlay::renderData(SMonitor* pMonitor, float µs) { m_pMonitor = pMonitor; } +void CHyprMonitorDebugOverlay::renderDataNoOverlay(SMonitor* pMonitor, float µs) { + m_dLastRenderTimesNoOverlay.push_back(µs / 1000.f); + + if (m_dLastRenderTimesNoOverlay.size() > (long unsigned int)pMonitor->refreshRate) + m_dLastRenderTimesNoOverlay.pop_front(); + + if (!m_pMonitor) + m_pMonitor = pMonitor; +} + void CHyprMonitorDebugOverlay::frameData(SMonitor* pMonitor) { m_dLastFrametimes.push_back(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::high_resolution_clock::now() - m_tpLastFrame).count() / 1000.f); @@ -46,6 +56,12 @@ int CHyprMonitorDebugOverlay::draw(int offset) { } avgRenderTime /= m_dLastRenderTimes.size() == 0 ? 1 : m_dLastRenderTimes.size(); + float avgRenderTimeNoOverlay = 0; + for (auto& rt : m_dLastRenderTimesNoOverlay) { + avgRenderTimeNoOverlay += rt; + } + avgRenderTimeNoOverlay /= m_dLastRenderTimes.size() == 0 ? 1 : m_dLastRenderTimes.size(); + const float FPS = 1.f / (avgFrametime / 1000.f); // frametimes are in ms const float idealFPS = m_dLastFrametimes.size(); @@ -95,6 +111,13 @@ int CHyprMonitorDebugOverlay::draw(int offset) { if (cairoExtents.width > maxX) maxX = cairoExtents.width; yOffset += 11; + cairo_move_to(g_pDebugOverlay->m_pCairo, 0, yOffset); + text = std::string("Avg Rendertime (no overlay): " + std::to_string((int)avgRenderTimeNoOverlay) + "." + std::to_string((int)(avgRenderTimeNoOverlay * 10.f) % 10) + "ms"); + cairo_show_text(g_pDebugOverlay->m_pCairo, text.c_str()); + cairo_text_extents(g_pDebugOverlay->m_pCairo, text.c_str(), &cairoExtents); + if (cairoExtents.width > maxX) maxX = cairoExtents.width; + + yOffset += 11; g_pHyprRenderer->damageBox(&m_wbLastDrawnBox); m_wbLastDrawnBox = {(int)g_pCompositor->m_lMonitors.front().vecPosition.x, (int)g_pCompositor->m_lMonitors.front().vecPosition.y + offset - 1, (int)maxX + 2, yOffset - offset + 2}; @@ -107,6 +130,10 @@ void CHyprDebugOverlay::renderData(SMonitor* pMonitor, float µs) { m_mMonitorOverlays[pMonitor].renderData(pMonitor, µs); } +void CHyprDebugOverlay::renderDataNoOverlay(SMonitor* pMonitor, float µs) { + m_mMonitorOverlays[pMonitor].renderDataNoOverlay(pMonitor, µs); +} + void CHyprDebugOverlay::frameData(SMonitor* pMonitor) { m_mMonitorOverlays[pMonitor].frameData(pMonitor); } |
