Merge pull request #657 from ishitatsuyuki/quad

overlay: avoid quadratic behavior
pull/671/head
flightlessmango 2 years ago committed by GitHub
commit 1f94e0af4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -731,13 +731,13 @@ void HudElements::graphs(){
ImGui::TableNextRow(); ImGui::TableNextColumn();
ImGui::Dummy(ImVec2(0.0f, real_font_size.y));
const std::string& value = HUDElements.ordered_functions[HUDElements.place].second;
std::vector<float> arr(50, 0);
assert(kMaxGraphEntries >= graph_data.size());
std::vector<float> arr(kMaxGraphEntries - graph_data.size());
ImGui::PushFont(HUDElements.sw_stats->font1);
if (value == "cpu_load"){
for (auto& it : graph_data){
arr.push_back(float(it.cpu_load));
arr.erase(arr.begin());
}
HUDElements.max = 100; HUDElements.min = 0;
ImGui::TextColored(HUDElements.colors.engine, "%s", "CPU Load");
@ -746,7 +746,6 @@ void HudElements::graphs(){
if (value == "gpu_load"){
for (auto& it : graph_data){
arr.push_back(float(it.gpu_load));
arr.erase(arr.begin());
}
HUDElements.max = 100; HUDElements.min = 0;
ImGui::TextColored(HUDElements.colors.engine, "%s", "GPU Load");
@ -755,7 +754,6 @@ void HudElements::graphs(){
if (value == "cpu_temp"){
for (auto& it : graph_data){
arr.push_back(float(it.cpu_temp));
arr.erase(arr.begin());
}
if (int(arr.back()) > HUDElements.cpu_temp_max)
HUDElements.cpu_temp_max = arr.back();
@ -768,7 +766,6 @@ void HudElements::graphs(){
if (value == "gpu_temp"){
for (auto& it : graph_data){
arr.push_back(float(it.gpu_temp));
arr.erase(arr.begin());
}
if (int(arr.back()) > HUDElements.gpu_temp_max)
HUDElements.gpu_temp_max = arr.back();
@ -781,7 +778,6 @@ void HudElements::graphs(){
if (value == "gpu_core_clock"){
for (auto& it : graph_data){
arr.push_back(float(it.gpu_core_clock));
arr.erase(arr.begin());
}
if (int(arr.back()) > HUDElements.gpu_core_max)
HUDElements.gpu_core_max = arr.back();
@ -794,7 +790,6 @@ void HudElements::graphs(){
if (value == "gpu_mem_clock"){
for (auto& it : graph_data){
arr.push_back(float(it.gpu_mem_clock));
arr.erase(arr.begin());
}
if (int(arr.back()) > HUDElements.gpu_mem_max)
HUDElements.gpu_mem_max = arr.back();
@ -807,7 +802,6 @@ void HudElements::graphs(){
if (value == "vram"){
for (auto& it : graph_data){
arr.push_back(float(it.gpu_vram_used));
arr.erase(arr.begin());
}
HUDElements.max = gpu_info.memoryTotal;
@ -820,7 +814,6 @@ void HudElements::graphs(){
HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_ram] = true;
for (auto& it : graph_data){
arr.push_back(float(it.ram_used));
arr.erase(arr.begin());
}
HUDElements.max = memmax;

@ -40,7 +40,7 @@ bool gui_open = false;
struct benchmark_stats benchmark;
struct fps_limit fps_limit_stats {};
ImVec2 real_font_size;
std::vector<logData> graph_data;
std::deque<logData> graph_data;
const char* engines[] = {"Unknown", "OpenGL", "VULKAN", "DXVK", "VKD3D", "DAMAVAND", "ZINK", "WINED3D", "Feral3D", "ToGL", "GAMESCOPE"};
overlay_params *_params {};
@ -90,8 +90,8 @@ void update_hw_info(struct swapchain_stats& sw_stats, struct overlay_params& par
currentLogData.cpu_load = cpuStats.GetCPUDataTotal().percent;
currentLogData.cpu_temp = cpuStats.GetCPUDataTotal().temp;
// Save data for graphs
if (graph_data.size() > 50)
graph_data.erase(graph_data.begin());
if (graph_data.size() >= kMaxGraphEntries)
graph_data.pop_front();
graph_data.push_back(currentLogData);
logger->notify_data_valid();
HUDElements.update_exec();

@ -5,6 +5,7 @@
#include <string>
#include <stdint.h>
#include <vector>
#include <deque>
#include <imgui.h>
#include "overlay_params.h"
#include "iostats.h"
@ -26,6 +27,8 @@ struct frame_stat {
uint64_t stats[OVERLAY_PLOTS_MAX];
};
static const int kMaxGraphEntries = 50;
enum EngineTypes
{
UNKNOWN,
@ -141,7 +144,7 @@ extern int32_t deviceID;
extern struct benchmark_stats benchmark;
extern ImVec2 real_font_size;
extern std::string wineVersion;
extern std::vector<logData> graph_data;
extern std::deque<logData> graph_data;
extern overlay_params *_params;
extern struct gpu_metrics_v2_2 amdgpu_metrics;

Loading…
Cancel
Save