summaryrefslogtreecommitdiff
path: root/src/debug/HyprDebugOverlay.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-28 17:40:57 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-28 17:40:57 +0200
commit7d442d48514e62a41e5bad0176adb8428dd112b3 (patch)
tree6e327af07b01a1e089e5d495bb697d4c4578a1da /src/debug/HyprDebugOverlay.cpp
parent8c10857f14e6c91f3b3099b9508e1f4d68c2d276 (diff)
Added rendertime no overlay
Diffstat (limited to 'src/debug/HyprDebugOverlay.cpp')
-rw-r--r--src/debug/HyprDebugOverlay.cpp27
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);
}