From 3081aec7c1bbb007f5470a651306ac5c49c8be37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo?= Date: Tue, 11 Feb 2025 21:25:03 -0300 Subject: [PATCH] Collect samples over one second for FPS counter and average. (#377) --- UnleashedRecomp/gpu/video.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/UnleashedRecomp/gpu/video.cpp b/UnleashedRecomp/gpu/video.cpp index 55024e3..fb0079a 100644 --- a/UnleashedRecomp/gpu/video.cpp +++ b/UnleashedRecomp/gpu/video.cpp @@ -2358,11 +2358,18 @@ static void DrawFPS() double time = ImGui::GetTime(); static double updateTime = time; static double fps = 0; + static double totalDeltaTime = 0.0; + static uint32_t totalDeltaCount = 0; + + totalDeltaTime += g_presentProfiler.value.load(); + totalDeltaCount++; if (time - updateTime >= 1.0f) { - fps = 1000.0 / g_presentProfiler.value.load(); + fps = 1000.0 / std::max(totalDeltaTime / double(totalDeltaCount), 1.0); updateTime = time; + totalDeltaTime = 0.0; + totalDeltaCount = 0; } auto drawList = ImGui::GetBackgroundDrawList();