diff options
| author | Dolphin Bot <dolphin-emu-bot@users.noreply.github.com> | 2014-07-18 12:59:04 +0200 |
|---|---|---|
| committer | Dolphin Bot <dolphin-emu-bot@users.noreply.github.com> | 2014-07-18 12:59:04 +0200 |
| commit | b9dc69105d0529c74a4f3c8f3579fa699f2d7bdc (patch) | |
| tree | 2b2d159bf145e2849fb2a59108e9effb3c12fdfe /Source/Core/VideoCommon | |
| parent | a180cd60ee9d5bfb0f92084515ee4b28c1a260e6 (diff) | |
| parent | eaa7460636f01f7779154259d492568c9d2dee1e (diff) | |
Merge pull request #595 from Armada651/pref_log
FPSCounter: Flush the logs every second and close them when the renderer is shut down.
Diffstat (limited to 'Source/Core/VideoCommon')
| -rw-r--r-- | Source/Core/VideoCommon/FPSCounter.cpp | 50 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/FPSCounter.h | 31 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/RenderBase.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/RenderBase.h | 3 |
4 files changed, 48 insertions, 40 deletions
diff --git a/Source/Core/VideoCommon/FPSCounter.cpp b/Source/Core/VideoCommon/FPSCounter.cpp index 10bfebb26f..1ce46377c7 100644 --- a/Source/Core/VideoCommon/FPSCounter.cpp +++ b/Source/Core/VideoCommon/FPSCounter.cpp @@ -10,54 +10,38 @@ #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(); } -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; + 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 9bdee876eb..bb1dc7922d 100644 --- a/Source/Core/VideoCommon/FPSCounter.h +++ b/Source/Core/VideoCommon/FPSCounter.h @@ -4,12 +4,29 @@ #pragma once -namespace FPSCounter +#include <fstream> + +#include "Common/Timer.h" + +class FPSCounter { -// Initializes the FPS counter. -void Initialize(); +public: + unsigned int m_fps; + + // 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(); + +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; -// Called when a frame is rendered. Returns the value to be displayed on -// screen as the FPS counter (updated every second). -int Update(); -} + void LogRenderTimeToFile(u64 val); +}; diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 508dda77ca..4ba52d09fe 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -29,6 +29,7 @@ #include "VideoCommon/CPMemory.h" #include "VideoCommon/Debugger.h" #include "VideoCommon/Fifo.h" +#include "VideoCommon/FPSCounter.h" #include "VideoCommon/FramebufferManagerBase.h" #include "VideoCommon/MainBase.h" #include "VideoCommon/OpcodeDecoding.h" @@ -519,6 +520,9 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight, const EFBRectangle& // TODO: merge more generic parts into VideoCommon g_renderer->SwapImpl(xfbAddr, fbWidth, fbHeight, rc, Gamma); + if (XFBWrited) + 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 16b17ae8de..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,6 +151,8 @@ protected: static bool s_skipSwap; static bool XFBWrited; + FPSCounter m_fps_counter; + private: static PEControl::PixelFormat prev_efb_format; static unsigned int efb_scale_numeratorX; |
