mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-02-23 15:40:34 +00:00
perf overlay: add datapoint settings to GUI
This commit is contained in:
parent
86dbb859b7
commit
73ca2119ed
@ -1097,6 +1097,7 @@ namespace rsx
|
|||||||
void set_color(color4f color);
|
void set_color(color4f color);
|
||||||
void set_guide_interval(f32 guide_interval);
|
void set_guide_interval(f32 guide_interval);
|
||||||
u16 get_height() const;
|
u16 get_height() const;
|
||||||
|
u32 get_datapoint_count() const;
|
||||||
void record_datapoint(f32 datapoint);
|
void record_datapoint(f32 datapoint);
|
||||||
void update();
|
void update();
|
||||||
compiled_resource& get_compiled() override;
|
compiled_resource& get_compiled() override;
|
||||||
|
@ -264,7 +264,7 @@ namespace rsx
|
|||||||
visible = true;
|
visible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void perf_metrics_overlay::set_framerate_graph_enabled(bool enabled, u32 datapoint_count)
|
void perf_metrics_overlay::set_framerate_graph_enabled(bool enabled)
|
||||||
{
|
{
|
||||||
if (m_framerate_graph_enabled == enabled)
|
if (m_framerate_graph_enabled == enabled)
|
||||||
return;
|
return;
|
||||||
@ -275,7 +275,6 @@ namespace rsx
|
|||||||
{
|
{
|
||||||
m_fps_graph.set_title(" Framerate");
|
m_fps_graph.set_title(" Framerate");
|
||||||
m_fps_graph.set_font_size(static_cast<u16>(m_font_size * 0.8));
|
m_fps_graph.set_font_size(static_cast<u16>(m_font_size * 0.8));
|
||||||
m_fps_graph.set_count(datapoint_count);
|
|
||||||
m_fps_graph.set_color(convert_color_code(m_color_body, m_opacity));
|
m_fps_graph.set_color(convert_color_code(m_color_body, m_opacity));
|
||||||
m_fps_graph.set_guide_interval(10);
|
m_fps_graph.set_guide_interval(10);
|
||||||
}
|
}
|
||||||
@ -283,7 +282,7 @@ namespace rsx
|
|||||||
m_force_repaint = true;
|
m_force_repaint = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void perf_metrics_overlay::set_frametime_graph_enabled(bool enabled, u32 datapoint_count)
|
void perf_metrics_overlay::set_frametime_graph_enabled(bool enabled)
|
||||||
{
|
{
|
||||||
if (m_frametime_graph_enabled == enabled)
|
if (m_frametime_graph_enabled == enabled)
|
||||||
return;
|
return;
|
||||||
@ -294,7 +293,6 @@ namespace rsx
|
|||||||
{
|
{
|
||||||
m_frametime_graph.set_title(" Frametime");
|
m_frametime_graph.set_title(" Frametime");
|
||||||
m_frametime_graph.set_font_size(static_cast<u16>(m_font_size * 0.8));
|
m_frametime_graph.set_font_size(static_cast<u16>(m_font_size * 0.8));
|
||||||
m_frametime_graph.set_count(datapoint_count);
|
|
||||||
m_frametime_graph.set_color(convert_color_code(m_color_body, m_opacity));
|
m_frametime_graph.set_color(convert_color_code(m_color_body, m_opacity));
|
||||||
m_frametime_graph.set_guide_interval(8);
|
m_frametime_graph.set_guide_interval(8);
|
||||||
}
|
}
|
||||||
@ -302,6 +300,24 @@ namespace rsx
|
|||||||
m_force_repaint = true;
|
m_force_repaint = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void perf_metrics_overlay::set_framerate_datapoint_count(u32 datapoint_count)
|
||||||
|
{
|
||||||
|
if (m_fps_graph.get_datapoint_count() == datapoint_count)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_fps_graph.set_count(datapoint_count);
|
||||||
|
m_force_repaint = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void perf_metrics_overlay::set_frametime_datapoint_count(u32 datapoint_count)
|
||||||
|
{
|
||||||
|
if (m_frametime_graph.get_datapoint_count() == datapoint_count)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_frametime_graph.set_count(datapoint_count);
|
||||||
|
m_force_repaint = true;
|
||||||
|
}
|
||||||
|
|
||||||
void perf_metrics_overlay::set_detail_level(detail_level level)
|
void perf_metrics_overlay::set_detail_level(detail_level level)
|
||||||
{
|
{
|
||||||
if (m_detail == level)
|
if (m_detail == level)
|
||||||
@ -640,7 +656,20 @@ namespace rsx
|
|||||||
void graph::set_count(u32 datapoint_count)
|
void graph::set_count(u32 datapoint_count)
|
||||||
{
|
{
|
||||||
m_datapoint_count = datapoint_count;
|
m_datapoint_count = datapoint_count;
|
||||||
m_datapoints.resize(datapoint_count, 0);
|
|
||||||
|
if (m_datapoints.empty())
|
||||||
|
{
|
||||||
|
m_datapoints.resize(m_datapoint_count, 0);
|
||||||
|
}
|
||||||
|
else if (m_datapoints.empty() || m_datapoint_count < m_datapoints.size())
|
||||||
|
{
|
||||||
|
std::copy(m_datapoints.begin() + m_datapoints.size() - m_datapoint_count, m_datapoints.end(), m_datapoints.begin());
|
||||||
|
m_datapoints.resize(m_datapoint_count);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_datapoints.insert(m_datapoints.begin(), m_datapoint_count - m_datapoints.size(), 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void graph::set_color(color4f color)
|
void graph::set_color(color4f color)
|
||||||
@ -658,6 +687,11 @@ namespace rsx
|
|||||||
return h + m_label.h + m_label.padding_top + m_label.padding_bottom;
|
return h + m_label.h + m_label.padding_top + m_label.padding_bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 graph::get_datapoint_count() const
|
||||||
|
{
|
||||||
|
return m_datapoint_count;
|
||||||
|
}
|
||||||
|
|
||||||
void graph::record_datapoint(f32 datapoint)
|
void graph::record_datapoint(f32 datapoint)
|
||||||
{
|
{
|
||||||
ensure(datapoint >= 0.0f);
|
ensure(datapoint >= 0.0f);
|
||||||
@ -773,8 +807,10 @@ namespace rsx
|
|||||||
perf_overlay->set_opacity(perf_settings.opacity / 100.f);
|
perf_overlay->set_opacity(perf_settings.opacity / 100.f);
|
||||||
perf_overlay->set_body_colors(perf_settings.color_body, perf_settings.background_body);
|
perf_overlay->set_body_colors(perf_settings.color_body, perf_settings.background_body);
|
||||||
perf_overlay->set_title_colors(perf_settings.color_title, perf_settings.background_title);
|
perf_overlay->set_title_colors(perf_settings.color_title, perf_settings.background_title);
|
||||||
perf_overlay->set_framerate_graph_enabled(perf_settings.framerate_graph_enabled.get(), perf_settings.framerate_datapoint_count);
|
perf_overlay->set_framerate_datapoint_count(perf_settings.framerate_datapoint_count);
|
||||||
perf_overlay->set_frametime_graph_enabled(perf_settings.frametime_graph_enabled.get(), perf_settings.frametime_datapoint_count);
|
perf_overlay->set_frametime_datapoint_count(perf_settings.frametime_datapoint_count);
|
||||||
|
perf_overlay->set_framerate_graph_enabled(perf_settings.framerate_graph_enabled.get());
|
||||||
|
perf_overlay->set_frametime_graph_enabled(perf_settings.frametime_graph_enabled.get());
|
||||||
perf_overlay->init();
|
perf_overlay->init();
|
||||||
}
|
}
|
||||||
else if (perf_overlay)
|
else if (perf_overlay)
|
||||||
|
@ -85,8 +85,10 @@ namespace rsx
|
|||||||
public:
|
public:
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
void set_framerate_graph_enabled(bool enabled, u32 datapoint_count);
|
void set_framerate_graph_enabled(bool enabled);
|
||||||
void set_frametime_graph_enabled(bool enabled, u32 datapoint_count);
|
void set_frametime_graph_enabled(bool enabled);
|
||||||
|
void set_framerate_datapoint_count(u32 datapoint_count);
|
||||||
|
void set_frametime_datapoint_count(u32 datapoint_count);
|
||||||
void set_detail_level(detail_level level);
|
void set_detail_level(detail_level level);
|
||||||
void set_position(screen_quadrant quadrant);
|
void set_position(screen_quadrant quadrant);
|
||||||
void set_update_interval(u32 update_interval);
|
void set_update_interval(u32 update_interval);
|
||||||
|
@ -81,6 +81,8 @@ enum class emu_settings_type
|
|||||||
PerfOverlayEnabled,
|
PerfOverlayEnabled,
|
||||||
PerfOverlayFramerateGraphEnabled,
|
PerfOverlayFramerateGraphEnabled,
|
||||||
PerfOverlayFrametimeGraphEnabled,
|
PerfOverlayFrametimeGraphEnabled,
|
||||||
|
PerfOverlayFramerateDatapoints,
|
||||||
|
PerfOverlayFrametimeDatapoints,
|
||||||
PerfOverlayDetailLevel,
|
PerfOverlayDetailLevel,
|
||||||
PerfOverlayPosition,
|
PerfOverlayPosition,
|
||||||
PerfOverlayUpdateInterval,
|
PerfOverlayUpdateInterval,
|
||||||
@ -227,6 +229,8 @@ static const QMap<emu_settings_type, cfg_location> settings_location =
|
|||||||
{ emu_settings_type::PerfOverlayEnabled, { "Video", "Performance Overlay", "Enabled" } },
|
{ emu_settings_type::PerfOverlayEnabled, { "Video", "Performance Overlay", "Enabled" } },
|
||||||
{ emu_settings_type::PerfOverlayFramerateGraphEnabled, { "Video", "Performance Overlay", "Enable Framerate Graph" } },
|
{ emu_settings_type::PerfOverlayFramerateGraphEnabled, { "Video", "Performance Overlay", "Enable Framerate Graph" } },
|
||||||
{ emu_settings_type::PerfOverlayFrametimeGraphEnabled, { "Video", "Performance Overlay", "Enable Frametime Graph" } },
|
{ emu_settings_type::PerfOverlayFrametimeGraphEnabled, { "Video", "Performance Overlay", "Enable Frametime Graph" } },
|
||||||
|
{ emu_settings_type::PerfOverlayFramerateDatapoints, { "Video", "Performance Overlay", "Framerate datapoints" } },
|
||||||
|
{ emu_settings_type::PerfOverlayFrametimeDatapoints, { "Video", "Performance Overlay", "Frametime datapoints" } },
|
||||||
{ emu_settings_type::PerfOverlayDetailLevel, { "Video", "Performance Overlay", "Detail level" } },
|
{ emu_settings_type::PerfOverlayDetailLevel, { "Video", "Performance Overlay", "Detail level" } },
|
||||||
{ emu_settings_type::PerfOverlayPosition, { "Video", "Performance Overlay", "Position" } },
|
{ emu_settings_type::PerfOverlayPosition, { "Video", "Performance Overlay", "Position" } },
|
||||||
{ emu_settings_type::PerfOverlayUpdateInterval, { "Video", "Performance Overlay", "Metrics update interval (ms)" } },
|
{ emu_settings_type::PerfOverlayUpdateInterval, { "Video", "Performance Overlay", "Metrics update interval (ms)" } },
|
||||||
|
@ -1255,6 +1255,12 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
|
|||||||
EnhanceSlider(emu_settings_type::PerfOverlayOpacity, ui->perfOverlayOpacity, ui->label_opacity, tr("Opacity: %0 %", "Performance overlay opacity"));
|
EnhanceSlider(emu_settings_type::PerfOverlayOpacity, ui->perfOverlayOpacity, ui->label_opacity, tr("Opacity: %0 %", "Performance overlay opacity"));
|
||||||
SubscribeTooltip(ui->perf_overlay_opacity, tooltips.settings.perf_overlay_opacity);
|
SubscribeTooltip(ui->perf_overlay_opacity, tooltips.settings.perf_overlay_opacity);
|
||||||
|
|
||||||
|
EnhanceSlider(emu_settings_type::PerfOverlayFramerateDatapoints, ui->slider_framerate_datapoints, ui->label_framerate_datapoints, tr("Framerate datapoints: %0", "Framerate graph datapoints"));
|
||||||
|
SubscribeTooltip(ui->perf_overlay_framerate_datapoints, tooltips.settings.perf_overlay_framerate_datapoints);
|
||||||
|
|
||||||
|
EnhanceSlider(emu_settings_type::PerfOverlayFrametimeDatapoints, ui->slider_frametime_datapoints, ui->label_frametime_datapoints, tr("Frametime datapoints: %0", "Frametime graph datapoints"));
|
||||||
|
SubscribeTooltip(ui->perf_overlay_frametime_datapoints, tooltips.settings.perf_overlay_frametime_datapoints);
|
||||||
|
|
||||||
EnhanceSlider(emu_settings_type::ShaderLoadBgDarkening, ui->shaderLoadBgDarkening, ui->label_shaderLoadBgDarkening, tr("Background darkening: %0 %", "Shader load background darkening"));
|
EnhanceSlider(emu_settings_type::ShaderLoadBgDarkening, ui->shaderLoadBgDarkening, ui->label_shaderLoadBgDarkening, tr("Background darkening: %0 %", "Shader load background darkening"));
|
||||||
SubscribeTooltip(ui->shaderLoadBgDarkening, tooltips.settings.shader_load_bg_darkening);
|
SubscribeTooltip(ui->shaderLoadBgDarkening, tooltips.settings.shader_load_bg_darkening);
|
||||||
|
|
||||||
|
@ -1983,8 +1983,7 @@
|
|||||||
<enum>QLayout::SetNoConstraint</enum>
|
<enum>QLayout::SetNoConstraint</enum>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="searchBox">
|
<widget class="QLineEdit" name="searchBox"/>
|
||||||
</widget>
|
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="resetLleList">
|
<widget class="QPushButton" name="resetLleList">
|
||||||
@ -2858,6 +2857,64 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="perf_overlay_framerate_datapoints" native="true">
|
||||||
|
<layout class="QVBoxLayout" name="layout_perf_overlay_framerate_datapoints">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_framerate_datapoints">
|
||||||
|
<property name="text">
|
||||||
|
<string>Framerate datapoints:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSlider" name="slider_framerate_datapoints">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="perf_overlay_frametime_datapoints" native="true">
|
||||||
|
<layout class="QVBoxLayout" name="layout_perf_overlay_frametime_datapoints">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_frametime_datapoints">
|
||||||
|
<property name="text">
|
||||||
|
<string>Frametime datapoints:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSlider" name="slider_frametime_datapoints">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="emulatorTabSpacerRight">
|
<spacer name="emulatorTabSpacerRight">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
@ -119,6 +119,8 @@ public:
|
|||||||
const QString perf_overlay_enabled = tr("Enables or disables the performance overlay.");
|
const QString perf_overlay_enabled = tr("Enables or disables the performance overlay.");
|
||||||
const QString perf_overlay_framerate_graph_enabled = tr("Enables or disables the framerate graph.");
|
const QString perf_overlay_framerate_graph_enabled = tr("Enables or disables the framerate graph.");
|
||||||
const QString perf_overlay_frametime_graph_enabled = tr("Enables or disables the frametime graph.");
|
const QString perf_overlay_frametime_graph_enabled = tr("Enables or disables the frametime graph.");
|
||||||
|
const QString perf_overlay_framerate_datapoints = tr("Sets the amount of datapoints used in the framerate graph.");
|
||||||
|
const QString perf_overlay_frametime_datapoints = tr("Sets the amount of datapoints used in the frametime graph.");
|
||||||
const QString perf_overlay_position = tr("Sets the on-screen position (quadrant) of the performance overlay.");
|
const QString perf_overlay_position = tr("Sets the on-screen position (quadrant) of the performance overlay.");
|
||||||
const QString perf_overlay_detail_level = tr("Controls the amount of information displayed on the performance overlay.");
|
const QString perf_overlay_detail_level = tr("Controls the amount of information displayed on the performance overlay.");
|
||||||
const QString perf_overlay_update_interval = tr("Sets the time interval in which the performance overlay is being updated (measured in milliseconds).");
|
const QString perf_overlay_update_interval = tr("Sets the time interval in which the performance overlay is being updated (measured in milliseconds).");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user