From 8aed0cc174a1353ac4c291a8d60da1eee32782f3 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sat, 28 Sep 2019 01:09:31 +1000 Subject: [PATCH] SDL: Display internal FPS/VPS seperately --- src/pse-sdl/sdl_interface.cpp | 13 +++++++++---- src/pse-sdl/sdl_interface.h | 4 +++- src/pse/gpu.cpp | 1 + src/pse/system.h | 3 +++ 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/pse-sdl/sdl_interface.cpp b/src/pse-sdl/sdl_interface.cpp index 28ab2fc63..3f372d5ff 100644 --- a/src/pse-sdl/sdl_interface.cpp +++ b/src/pse-sdl/sdl_interface.cpp @@ -483,9 +483,12 @@ void SDLInterface::RenderMainMenuBar() ImGui::EndMenu(); } - ImGui::SetCursorPosX(ImGui::GetIO().DisplaySize.x - 80.0f); + ImGui::SetCursorPosX(ImGui::GetIO().DisplaySize.x - 170.0f); ImGui::Text("FPS: %.2f", m_fps); + ImGui::SetCursorPosX(ImGui::GetIO().DisplaySize.x - 80.0f); + ImGui::Text("VPS: %.2f", m_vps); + ImGui::EndMainMenuBar(); } @@ -581,12 +584,14 @@ void SDLInterface::Run() // update fps counter { - m_fps_counter++; const double time = m_fps_timer.GetTimeSeconds(); if (time >= 0.25f) { - m_fps = static_cast(m_fps_counter / time); - m_fps_counter = 0; + m_vps = static_cast(static_cast(m_system->GetFrameNumber() - m_last_frame_number) / time); + m_last_frame_number = m_system->GetFrameNumber(); + m_fps = static_cast( + static_cast(m_system->GetInternalFrameNumber() - m_last_internal_frame_number) / time); + m_last_internal_frame_number = m_system->GetInternalFrameNumber(); m_fps_timer.Reset(); } } diff --git a/src/pse-sdl/sdl_interface.h b/src/pse-sdl/sdl_interface.h index 10caa5cc0..6e29e2c2d 100644 --- a/src/pse-sdl/sdl_interface.h +++ b/src/pse-sdl/sdl_interface.h @@ -78,7 +78,9 @@ private: std::shared_ptr m_controller; + float m_vps = 0.0f; float m_fps = 0.0f; - u32 m_fps_counter = 0; + u32 m_last_frame_number = 0; + u32 m_last_internal_frame_number = 0; Timer m_fps_timer; }; diff --git a/src/pse/gpu.cpp b/src/pse/gpu.cpp index 182b86dc7..0c3b05c30 100644 --- a/src/pse/gpu.cpp +++ b/src/pse/gpu.cpp @@ -499,6 +499,7 @@ void GPU::WriteGP1(u32 value) { m_crtc_state.regs.display_address_start = param & CRTCState::Regs::DISPLAY_ADDRESS_START_MASK; Log_DebugPrintf("Display address start <- 0x%08X", m_crtc_state.regs.display_address_start); + m_system->IncrementInternalFrameNumber(); } break; diff --git a/src/pse/system.h b/src/pse/system.h index 3bd18ba43..cab27ac4b 100644 --- a/src/pse/system.h +++ b/src/pse/system.h @@ -31,7 +31,9 @@ public: HostInterface* GetHostInterface() const { return m_host_interface; } u32 GetFrameNumber() const { return m_frame_number; } + u32 GetInternalFrameNumber() const { return m_internal_frame_number; } void IncrementFrameNumber() { m_frame_number++; } + void IncrementInternalFrameNumber() { m_internal_frame_number++; } bool Initialize(); void Reset(); @@ -68,4 +70,5 @@ private: std::unique_ptr m_timers; std::unique_ptr m_spu; u32 m_frame_number = 1; + u32 m_internal_frame_number = 1; };