From 3b978f7c27fe2552e5bfb0e97ef9c82580d8a9d9 Mon Sep 17 00:00:00 2001 From: Jules Blok Date: Sun, 13 Jul 2014 13:04:25 +0200 Subject: [PATCH] Turn the FPSCounter namespace into a class. --- Source/Core/VideoBackends/D3D/Render.cpp | 3 +- Source/Core/VideoBackends/OGL/Render.cpp | 4 +- Source/Core/VideoCommon/FPSCounter.cpp | 57 +++++++++--------------- Source/Core/VideoCommon/FPSCounter.h | 35 +++++++++++---- Source/Core/VideoCommon/RenderBase.cpp | 8 +--- Source/Core/VideoCommon/RenderBase.h | 3 +- 6 files changed, 53 insertions(+), 57 deletions(-) diff --git a/Source/Core/VideoBackends/D3D/Render.cpp b/Source/Core/VideoBackends/D3D/Render.cpp index fd56ca3214..2699b56a46 100644 --- a/Source/Core/VideoBackends/D3D/Render.cpp +++ b/Source/Core/VideoBackends/D3D/Render.cpp @@ -27,6 +27,7 @@ #include "VideoCommon/AVIDump.h" #include "VideoCommon/BPFunctions.h" #include "VideoCommon/Fifo.h" +#include "VideoCommon/FPSCounter.h" #include "VideoCommon/ImageWrite.h" #include "VideoCommon/OnScreenDisplay.h" #include "VideoCommon/PixelEngine.h" @@ -898,7 +899,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangl // Finish up the current frame, print some stats if (g_ActiveConfig.bShowFPS) { - std::string fps = StringFromFormat("FPS: %d\n", s_fps); + std::string fps = StringFromFormat("FPS: %d\n", m_fps_counter.m_fps); D3D::font.DrawTextScaled(0, 0, 20, 0.0f, 0xFF00FFFF, fps); } diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index a261a28cb6..d0ec359a2c 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -36,6 +36,7 @@ #include "VideoCommon/BPStructs.h" #include "VideoCommon/DriverDetails.h" #include "VideoCommon/Fifo.h" +#include "VideoCommon/FPSCounter.h" #include "VideoCommon/ImageWrite.h" #include "VideoCommon/OnScreenDisplay.h" #include "VideoCommon/PixelEngine.h" @@ -335,7 +336,6 @@ Renderer::Renderer() OSDInternalW = 0; OSDInternalH = 0; - s_fps=0; s_ShowEFBCopyRegions_VBO = 0; s_blendMode = 0; @@ -683,7 +683,7 @@ void Renderer::DrawDebugInfo() std::string debug_info; if (g_ActiveConfig.bShowFPS) - debug_info += StringFromFormat("FPS: %d\n", s_fps); + debug_info += StringFromFormat("FPS: %d\n", m_fps_counter.m_fps); if (SConfig::GetInstance().m_ShowLag) debug_info += StringFromFormat("Lag: %" PRIu64 "\n", Movie::g_currentLagCount); diff --git a/Source/Core/VideoCommon/FPSCounter.cpp b/Source/Core/VideoCommon/FPSCounter.cpp index c9615a2f68..7a912c2fd7 100644 --- a/Source/Core/VideoCommon/FPSCounter.cpp +++ b/Source/Core/VideoCommon/FPSCounter.cpp @@ -10,61 +10,44 @@ #include "VideoCommon/FPSCounter.h" #include "VideoCommon/VideoConfig.h" -namespace FPSCounter -{ #define FPS_REFRESH_INTERVAL 1000 -static unsigned int s_counter = 0; -static unsigned int s_fps = 0; -static unsigned int s_fps_last_counter = 0; -static Common::Timer s_update_time; - -static Common::Timer s_render_time; -static std::ofstream s_bench_file; - -void Initialize() +FPSCounter::FPSCounter() { - s_counter = s_fps_last_counter = 0; - s_fps = 0; - - s_update_time.Update(); - s_render_time.Update(); - - if (s_bench_file.is_open()) - s_bench_file.close(); + m_update_time.Update(); + m_render_time.Update(); } -void Shutdown() +FPSCounter::~FPSCounter() { - if (s_bench_file.is_open()) - s_bench_file.close(); + if (m_bench_file.is_open()) + m_bench_file.close(); } -static void LogRenderTimeToFile(u64 val) +void FPSCounter::LogRenderTimeToFile(u64 val) { - if (!s_bench_file.is_open()) - s_bench_file.open(File::GetUserPath(D_LOGS_IDX) + "render_time.txt"); + if (!m_bench_file.is_open()) + m_bench_file.open(File::GetUserPath(D_LOGS_IDX) + "render_time.txt"); - s_bench_file << val << std::endl; + m_bench_file << val << std::endl; } -int Update() +int FPSCounter::Update() { - if (s_update_time.GetTimeDifference() >= FPS_REFRESH_INTERVAL) + if (m_update_time.GetTimeDifference() >= FPS_REFRESH_INTERVAL) { - s_update_time.Update(); - s_fps = s_counter - s_fps_last_counter; - s_fps_last_counter = s_counter; - s_bench_file.flush(); + m_update_time.Update(); + m_fps = m_counter - m_fps_last_counter; + m_fps_last_counter = m_counter; + m_bench_file.flush(); } if (g_ActiveConfig.bLogRenderTimeToFile) { - LogRenderTimeToFile(s_render_time.GetTimeDifference()); - s_render_time.Update(); + LogRenderTimeToFile(m_render_time.GetTimeDifference()); + m_render_time.Update(); } - s_counter++; - return s_fps; + m_counter++; + return m_fps; } -} \ No newline at end of file diff --git a/Source/Core/VideoCommon/FPSCounter.h b/Source/Core/VideoCommon/FPSCounter.h index 2ce61beaec..b3cb1c3b73 100644 --- a/Source/Core/VideoCommon/FPSCounter.h +++ b/Source/Core/VideoCommon/FPSCounter.h @@ -4,15 +4,32 @@ #pragma once -namespace FPSCounter +#include + +#include "Common/Timer.h" + +class FPSCounter { -// Initializes the FPS counter. -void Initialize(); +public: + unsigned int m_fps; -// Shutdown the FPS counter by closing the logs. -void Shutdown(); + // Initializes the FPS counter. + FPSCounter(); -// Called when a frame is rendered. Returns the value to be displayed on -// screen as the FPS counter (updated every second). -int Update(); -} + // Shutdown the FPS counter by closing the logs. + ~FPSCounter(); + + // Called when a frame is rendered. Returns the value to be displayed on + // screen as the FPS counter (updated every second). + int Update(); + +private: + unsigned int m_counter; + unsigned int m_fps_last_counter; + Common::Timer m_update_time; + + Common::Timer m_render_time; + std::ofstream m_bench_file; + + void LogRenderTimeToFile(u64 val); +}; diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 68afa4e11a..707d918fe9 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -65,8 +65,6 @@ int Renderer::s_LastEFBScale; bool Renderer::s_skipSwap; bool Renderer::XFBWrited; -unsigned int Renderer::s_fps = 0; - PEControl::PixelFormat Renderer::prev_efb_format = PEControl::INVALID_FMT; unsigned int Renderer::efb_scale_numeratorX = 1; unsigned int Renderer::efb_scale_numeratorY = 1; @@ -87,8 +85,6 @@ Renderer::Renderer() OSDChoice = 0; OSDTime = 0; - - FPSCounter::Initialize(); } Renderer::~Renderer() @@ -105,8 +101,6 @@ Renderer::~Renderer() if (pFrameDump.IsOpen()) pFrameDump.Close(); #endif - - FPSCounter::Shutdown(); } void Renderer::RenderToXFB(u32 xfbAddr, const EFBRectangle& sourceRc, u32 fbWidth, u32 fbHeight, float Gamma) @@ -529,7 +523,7 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight, const EFBRectangle& g_renderer->SwapImpl(xfbAddr, fbWidth, fbHeight, rc, Gamma); if (XFBWrited) - s_fps = FPSCounter::Update(); + g_renderer->m_fps_counter.Update(); frameCount++; GFX_DEBUGGER_PAUSE_AT(NEXT_FRAME, true); diff --git a/Source/Core/VideoCommon/RenderBase.h b/Source/Core/VideoCommon/RenderBase.h index 668a2a42eb..8707219d82 100644 --- a/Source/Core/VideoCommon/RenderBase.h +++ b/Source/Core/VideoCommon/RenderBase.h @@ -19,6 +19,7 @@ #include "Common/MathUtil.h" #include "Common/Thread.h" #include "VideoCommon/BPMemory.h" +#include "VideoCommon/FPSCounter.h" #include "VideoCommon/FramebufferManagerBase.h" #include "VideoCommon/NativeVertexFormat.h" #include "VideoCommon/VideoCommon.h" @@ -150,7 +151,7 @@ protected: static bool s_skipSwap; static bool XFBWrited; - static unsigned int s_fps; + FPSCounter m_fps_counter; private: static PEControl::PixelFormat prev_efb_format;