diff --git a/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.cpp b/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.cpp index a6aa5751b5..7a3fad43b1 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.cpp @@ -183,7 +183,12 @@ namespace rsx // Position the graphs within the body const u16 graphs_width = m_body.w; const u16 body_left = m_body.x; - u16 y_offset = m_body.y + m_body.h + perf_overlay_padding; + u16 y_offset = m_body.y; + + if (m_body.h > 0) + { + y_offset += m_body.h + perf_overlay_padding; + } if (m_framerate_graph_enabled) { @@ -220,7 +225,8 @@ namespace rsx switch (m_detail) { - case detail_level::minimal: + case detail_level::none: [[fallthrough]]; + case detail_level::minimal: [[fallthrough]]; case detail_level::low: m_titles.set_text(""); break; case detail_level::medium: m_titles.set_text(fmt::format("\n\n%s", title1_medium)); break; case detail_level::high: m_titles.set_text(fmt::format("\n\n%s\n\n\n\n\n\n%s", title1_high, title2)); break; @@ -459,10 +465,15 @@ namespace rsx [[fallthrough]]; } case detail_level::minimal: + { + [[fallthrough]]; + } + case detail_level::none: { m_fps = std::max(0.f, static_cast(m_frames / (elapsed_update / 1000))); if (m_is_initialised && m_framerate_graph_enabled) m_fps_graph.record_datapoint(m_fps); + break; } } } @@ -472,6 +483,10 @@ namespace rsx switch (m_detail) { + case detail_level::none: + { + break; + } case detail_level::minimal: { perf_text += fmt::format("FPS : %05.2f", m_fps); @@ -512,7 +527,15 @@ namespace rsx m_body.set_text(perf_text); - if (m_body.auto_resize()) + if (perf_text.empty()) + { + if (m_body.w > 0 || m_body.h > 0) + { + m_body.set_size(0, 0); + reset_transforms(); + } + } + else if (m_body.auto_resize()) { reset_transforms(); } diff --git a/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.h b/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.h index 49abecea0a..f9ff1c2b2b 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.h +++ b/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.h @@ -11,6 +11,8 @@ namespace rsx struct perf_metrics_overlay : overlay { private: + // The detail level does not affect frame graphs apart from their width. + // none // minimal - fps // low - fps, total cpu usage // medium - fps, detailed cpu usage diff --git a/rpcs3/Emu/system_config_types.cpp b/rpcs3/Emu/system_config_types.cpp index b3cb2c5c4a..7e3154e3c3 100644 --- a/rpcs3/Emu/system_config_types.cpp +++ b/rpcs3/Emu/system_config_types.cpp @@ -132,6 +132,7 @@ void fmt_class_string::format(std::string& out, u64 arg) { switch (value) { + case detail_level::none: return "None"; case detail_level::minimal: return "Minimal"; case detail_level::low: return "Low"; case detail_level::medium: return "Medium"; diff --git a/rpcs3/Emu/system_config_types.h b/rpcs3/Emu/system_config_types.h index 5f808b9105..c0acf82d44 100644 --- a/rpcs3/Emu/system_config_types.h +++ b/rpcs3/Emu/system_config_types.h @@ -147,6 +147,7 @@ enum class msaa_level enum class detail_level { + none, minimal, low, medium, diff --git a/rpcs3/rpcs3qt/emu_settings.cpp b/rpcs3/rpcs3qt/emu_settings.cpp index 567c116ea3..5f9d94b8db 100644 --- a/rpcs3/rpcs3qt/emu_settings.cpp +++ b/rpcs3/rpcs3qt/emu_settings.cpp @@ -887,6 +887,7 @@ QString emu_settings::GetLocalizedSetting(const QString& original, emu_settings_ case emu_settings_type::PerfOverlayDetailLevel: switch (static_cast(index)) { + case detail_level::none: return tr("None", "Detail Level"); case detail_level::minimal: return tr("Minimal", "Detail Level"); case detail_level::low: return tr("Low", "Detail Level"); case detail_level::medium: return tr("Medium", "Detail Level");