From 69f6788f9fbe42c282bdd3125dc622918c717847 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Fri, 27 Sep 2019 21:16:06 +1000 Subject: [PATCH] GPU: Show stats from previous frame if no rendering occured --- src/pse-sdl/sdl_interface.cpp | 2 +- src/pse/gpu_hw_opengl.cpp | 27 +++++++++++++++++++-------- src/pse/gpu_hw_opengl.h | 1 + 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/pse-sdl/sdl_interface.cpp b/src/pse-sdl/sdl_interface.cpp index 46cd9439e..78112595c 100644 --- a/src/pse-sdl/sdl_interface.cpp +++ b/src/pse-sdl/sdl_interface.cpp @@ -548,7 +548,7 @@ void SDLInterface::Run() { m_fps_counter++; const double time = m_fps_timer.GetTimeSeconds(); - if (time > 0.1) + if (time >= 0.25f) { m_fps = static_cast(m_fps_counter / time); m_fps_counter = 0; diff --git a/src/pse/gpu_hw_opengl.cpp b/src/pse/gpu_hw_opengl.cpp index f077a7c22..45a98d52a 100644 --- a/src/pse/gpu_hw_opengl.cpp +++ b/src/pse/gpu_hw_opengl.cpp @@ -37,33 +37,44 @@ void GPU_HW_OpenGL::RenderUI() { GPU_HW::RenderUI(); + ImGui::SetNextWindowSize(ImVec2(300.0f, 100.0f), ImGuiCond_Once); + + const bool is_null_frame = m_stats.num_batches == 0; + if (!is_null_frame) + { + m_last_stats = m_stats; + m_stats = {}; + } + if (ImGui::Begin("GL Render Statistics")) { ImGui::Columns(2); + ImGui::SetColumnWidth(0, 200.0f); - ImGui::TextUnformatted("Texture Page Updates:"); + ImGui::TextUnformatted("VRAM Read Texture Updates:"); ImGui::NextColumn(); - ImGui::Text("%u", m_stats.num_vram_read_texture_updates); + ImGui::Text("%u", m_last_stats.num_vram_read_texture_updates); ImGui::NextColumn(); ImGui::TextUnformatted("Batches Drawn:"); ImGui::NextColumn(); - ImGui::Text("%u", m_stats.num_batches); + ImGui::Text("%u", m_last_stats.num_batches); ImGui::NextColumn(); ImGui::TextUnformatted("Vertices Drawn: "); ImGui::NextColumn(); - ImGui::Text("%u", m_stats.num_vertices); + ImGui::Text("%u", m_last_stats.num_vertices); + ImGui::NextColumn(); + + ImGui::TextUnformatted("GPU Active In This Frame: "); + ImGui::NextColumn(); + ImGui::Text("%s", is_null_frame ? "Yes" : "No"); ImGui::NextColumn(); ImGui::Columns(1); } ImGui::End(); - - // skip update when no batches were drawn in that frame.. for now - if (m_stats.num_batches > 0) - m_stats = {}; } void GPU_HW_OpenGL::InvalidateVRAMReadCache() diff --git a/src/pse/gpu_hw_opengl.h b/src/pse/gpu_hw_opengl.h index cc2776136..114c1010f 100644 --- a/src/pse/gpu_hw_opengl.h +++ b/src/pse/gpu_hw_opengl.h @@ -66,4 +66,5 @@ private: std::array m_texture_page_programs; GLStats m_stats = {}; + GLStats m_last_stats = {}; };