diff --git a/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.cpp b/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.cpp index b2154b95f3..4a6722e497 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.cpp @@ -1,5 +1,5 @@ #include "stdafx.h" -#include "overlays.h" +#include "overlay_perf_metrics.h" #include "../GSRender.h" #include "Emu/Cell/SPUThread.h" diff --git a/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.h b/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.h new file mode 100644 index 0000000000..150c3fa816 --- /dev/null +++ b/rpcs3/Emu/RSX/Overlays/overlay_perf_metrics.h @@ -0,0 +1,69 @@ +#pragma once + +#include "overlays.h" + +namespace rsx +{ + namespace overlays + { + struct perf_metrics_overlay : overlay + { + private: + // minimal - fps + // low - fps, total cpu usage + // medium - fps, detailed cpu usage + // high - fps, frametime, detailed cpu usage, thread number, rsx load + detail_level m_detail{}; + + screen_quadrant m_quadrant{}; + positioni m_position{}; + + label m_body{}; + label m_titles{}; + + bool m_graphs_enabled{}; + graph m_fps_graph; + graph m_frametime_graph; + + CPUStats m_cpu_stats{}; + Timer m_update_timer{}; + Timer m_frametime_timer{}; + u32 m_update_interval{}; // in ms + u32 m_frames{}; + std::string m_font{}; + u32 m_font_size{}; + u32 m_margin_x{}; // horizontal distance to the screen border relative to the screen_quadrant in px + u32 m_margin_y{}; // vertical distance to the screen border relative to the screen_quadrant in px + f32 m_opacity{}; // 0..1 + + bool m_force_update{}; + bool m_is_initialised{}; + + const std::string title1_medium{ "CPU Utilization:" }; + const std::string title1_high{ "Host Utilization (CPU):" }; + const std::string title2{ "Guest Utilization (PS3):" }; + + void reset_transform(label& elm, u16 bottom_margin = 0) const; + void reset_transforms(); + void reset_body(); + void reset_titles(); + void reset_text(); + + public: + void init(); + + void set_detail_level(detail_level level); + void set_position(screen_quadrant quadrant); + void set_update_interval(u32 update_interval); + void set_font(std::string font); + void set_font_size(u32 font_size); + void set_margins(u32 margin_x, u32 margin_y); + void set_opacity(f32 opacity); + void force_next_update(); + + void update() override; + + compiled_resource get_compiled() override; + }; + } +} diff --git a/rpcs3/Emu/RSX/Overlays/overlays.h b/rpcs3/Emu/RSX/Overlays/overlays.h index b0fa0670fa..c78554d2e7 100644 --- a/rpcs3/Emu/RSX/Overlays/overlays.h +++ b/rpcs3/Emu/RSX/Overlays/overlays.h @@ -325,68 +325,6 @@ namespace rsx } }; - struct perf_metrics_overlay : overlay - { - private: - /* - minimal - fps - low - fps, total cpu usage - medium - fps, detailed cpu usage - high - fps, frametime, detailed cpu usage, thread number, rsx load - */ - detail_level m_detail{}; - - screen_quadrant m_quadrant{}; - positioni m_position{}; - - label m_body{}; - label m_titles{}; - - bool m_graphs_enabled{}; - graph m_fps_graph; - graph m_frametime_graph; - - CPUStats m_cpu_stats{}; - Timer m_update_timer{}; - Timer m_frametime_timer{}; - u32 m_update_interval{}; // in ms - u32 m_frames{}; - std::string m_font{}; - u32 m_font_size{}; - u32 m_margin_x{}; // horizontal distance to the screen border relative to the screen_quadrant in px - u32 m_margin_y{}; // vertical distance to the screen border relative to the screen_quadrant in px - f32 m_opacity{}; // 0..1 - - bool m_force_update{}; - bool m_is_initialised{}; - - const std::string title1_medium{"CPU Utilization:"}; - const std::string title1_high{"Host Utilization (CPU):"}; - const std::string title2{"Guest Utilization (PS3):"}; - - void reset_transform(label& elm, u16 bottom_margin = 0) const; - void reset_transforms(); - void reset_body(); - void reset_titles(); - void reset_text(); - - public: - void init(); - - void set_detail_level(detail_level level); - void set_position(screen_quadrant quadrant); - void set_update_interval(u32 update_interval); - void set_font(std::string font); - void set_font_size(u32 font_size); - void set_margins(u32 margin_x, u32 margin_y); - void set_opacity(f32 opacity); - void force_next_update(); - - void update() override; - - compiled_resource get_compiled() override; - }; - struct osk_dialog : public user_interface, public OskDialogBase { using callback_t = std::function; diff --git a/rpcs3/Emu/RSX/RSXThread.cpp b/rpcs3/Emu/RSX/RSXThread.cpp index 4523d78fd8..b4cc12f5cb 100644 --- a/rpcs3/Emu/RSX/RSXThread.cpp +++ b/rpcs3/Emu/RSX/RSXThread.cpp @@ -14,6 +14,7 @@ #include "rsx_utils.h" #include "Emu/Cell/lv2/sys_event.h" #include "Emu/Cell/Modules/cellGcmSys.h" +#include "Overlays/overlay_perf_metrics.h" #include "Utilities/span.h" #include "Utilities/StrUtil.h" diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index 058461ff33..c4991faa41 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -392,6 +392,7 @@ + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index 1a2c45917a..0a7828922f 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -1576,5 +1576,8 @@ Emu\Cell\Modules + + Emu\GPU\RSX\Overlays +