diff --git a/src/overlay.h b/src/overlay.h index 023c9955..80ca85b1 100644 --- a/src/overlay.h +++ b/src/overlay.h @@ -60,7 +60,10 @@ struct swapchain_stats { wine, gpu_load_high, gpu_load_med, - gpu_load_low; + gpu_load_low, + cpu_load_high, + cpu_load_med, + cpu_load_low; } colors; }; diff --git a/src/overlay_params.cpp b/src/overlay_params.cpp index 3a9702aa..5c78fb1f 100644 --- a/src/overlay_params.cpp +++ b/src/overlay_params.cpp @@ -329,7 +329,11 @@ parse_font_glyph_ranges(const char *str) #define parse_gpu_load_low_color(s) parse_color(s) #define parse_gpu_load_high(s) parse_unsigned(s) #define parse_gpu_load_med(s) parse_unsigned(s) -#define parse_gpu_load_low(s) parse_unsigned(s) +#define parse_cpu_load_high_color(s) parse_color(s) +#define parse_cpu_load_med_color(s) parse_color(s) +#define parse_cpu_load_low_color(s) parse_color(s) +#define parse_cpu_load_high(s) parse_unsigned(s) +#define parse_cpu_load_med(s) parse_unsigned(s) static bool parse_help(const char *str) @@ -490,6 +494,9 @@ parse_overlay_config(struct overlay_params *params, params->gpu_load_high_color=0xb22222; params->gpu_load_med_color=0xfdfd09; params->gpu_load_low_color=0x39f900; + params->cpu_load_high_color=0xb22222; + params->cpu_load_med_color=0xfdfd09; + params->cpu_load_low_color=0x39f900; params->font_scale_media_player = 0.55f; params->log_interval = 100; params->media_player_order = { MP_ORDER_TITLE, MP_ORDER_ARTIST, MP_ORDER_ALBUM }; @@ -571,7 +578,7 @@ parse_overlay_config(struct overlay_params *params, params->font_scale_media_player = 0.55f; // Convert from 0xRRGGBB to ImGui's format - std::array colors = { + std::array colors = { ¶ms->cpu_color, ¶ms->gpu_color, ¶ms->vram_color, @@ -586,6 +593,9 @@ parse_overlay_config(struct overlay_params *params, ¶ms->gpu_load_high_color, ¶ms-> gpu_load_med_color, ¶ms->gpu_load_low_color, + ¶ms->cpu_load_high_color, + ¶ms->cpu_load_med_color, + ¶ms->cpu_load_low_color, }; diff --git a/src/overlay_params.h b/src/overlay_params.h index 14d2547a..b52a1868 100644 --- a/src/overlay_params.h +++ b/src/overlay_params.h @@ -51,6 +51,7 @@ typedef unsigned long KeySym; OVERLAY_PARAM_BOOL(histogram) \ OVERLAY_PARAM_BOOL(wine) \ OVERLAY_PARAM_BOOL(gpu_load_change) \ + OVERLAY_PARAM_BOOL(cpu_load_change) \ OVERLAY_PARAM_CUSTOM(fps_sampling_period) \ OVERLAY_PARAM_CUSTOM(output_folder) \ OVERLAY_PARAM_CUSTOM(output_file) \ @@ -94,6 +95,9 @@ typedef unsigned long KeySym; OVERLAY_PARAM_CUSTOM(gpu_load_high_color) \ OVERLAY_PARAM_CUSTOM(gpu_load_med_color) \ OVERLAY_PARAM_CUSTOM(gpu_load_low_color) \ + OVERLAY_PARAM_CUSTOM(cpu_load_high_color) \ + OVERLAY_PARAM_CUSTOM(cpu_load_med_color) \ + OVERLAY_PARAM_CUSTOM(cpu_load_low_color) \ OVERLAY_PARAM_CUSTOM(alpha) \ OVERLAY_PARAM_CUSTOM(log_duration) \ OVERLAY_PARAM_CUSTOM(pci_dev) \ @@ -108,7 +112,9 @@ typedef unsigned long KeySym; OVERLAY_PARAM_CUSTOM(benchmark_percentiles) \ OVERLAY_PARAM_CUSTOM(help) \ OVERLAY_PARAM_CUSTOM(gpu_load_high) \ - OVERLAY_PARAM_CUSTOM(gpu_load_med) + OVERLAY_PARAM_CUSTOM(gpu_load_med) \ + OVERLAY_PARAM_CUSTOM(cpu_load_high) \ + OVERLAY_PARAM_CUSTOM(cpu_load_med) enum overlay_param_position { @@ -168,8 +174,10 @@ struct overlay_params { int gl_vsync; uint64_t log_duration; unsigned cpu_color, gpu_color, vram_color, ram_color, engine_color, io_color, frametime_color, background_color, text_color, wine_color; - unsigned gpu_load_high_color,gpu_load_med_color,gpu_load_low_color; - int gpu_load_high,gpu_load_med,gpu_load_change; + unsigned gpu_load_high_color, gpu_load_med_color, gpu_load_low_color; + unsigned cpu_load_high_color, cpu_load_med_color, cpu_load_low_color; + int gpu_load_high, gpu_load_med, gpu_load_change; + int cpu_load_high, cpu_load_med, cpu_load_change; unsigned media_player_color; unsigned tableCols; unsigned render_mango; diff --git a/src/vulkan.cpp b/src/vulkan.cpp index 3b1610cd..ce81d874 100644 --- a/src/vulkan.cpp +++ b/src/vulkan.cpp @@ -992,10 +992,10 @@ void render_mango(swapchain_stats& data, struct overlay_params& params, ImVec2& int change_on_load_temp ( int info, int high, int med) { - if (info >= high){ + if (info >= high) { return 1; - } - else if (info >= med && info < high) { + } + else if (info >= med && info < high) { return 2; } else { @@ -1106,9 +1106,37 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2& cpu_text = params.cpu_text.c_str(); ImGui::TextColored(data.colors.cpu, "%s", cpu_text); ImGui::TableNextCell(); - right_aligned_text(data.colors.text, ralign_width, "%d", int(cpuStats.GetCPUDataTotal().percent)); - ImGui::SameLine(0, 1.0f); - ImGui::Text("%%"); + auto cpu_high_color = data.colors.cpu_load_high; + auto cpu_med_color = data.colors.cpu_load_med; + auto cpu_low_color = data.colors.cpu_load_low; + auto text_color = data.colors.text; + int cpu_load_percent = int(cpuStats.GetCPUDataTotal().percent); + if (params.enabled[OVERLAY_PARAM_ENABLED_cpu_load_change]){ + int cpu_load = change_on_load_temp(cpu_load_percent, params.cpu_load_high, params.cpu_load_med); + // 1 is high, 2 is medium, and 3 is low load/temp + switch (cpu_load) { + case 1: + right_aligned_text(cpu_high_color, ralign_width, "%d", cpu_load_percent); + ImGui::SameLine(0, 1.0f); + ImGui::TextColored(cpu_high_color, "%%"); + break; + case 2: + right_aligned_text(cpu_med_color, ralign_width, "%d", cpu_load_percent); + ImGui::SameLine(0, 1.0f); + ImGui::TextColored(cpu_med_color, "%%"); + break; + case 3: + right_aligned_text(cpu_low_color, ralign_width, "%d", cpu_load_percent); + ImGui::SameLine(0, 1.0f); + ImGui::TextColored(cpu_low_color, "%%"); + break; + } + } + else { + right_aligned_text(text_color, ralign_width, "%d", int(cpuStats.GetCPUDataTotal().percent)); + ImGui::SameLine(0, 1.0f); + ImGui::Text("%%"); + } // ImGui::SameLine(150); // ImGui::Text("%s", "%"); @@ -2140,6 +2168,9 @@ void convert_colors(bool do_conv, struct swapchain_stats& sw_stats, struct overl sw_stats.colors.gpu_load_high = convert(params.gpu_load_high_color); sw_stats.colors.gpu_load_med = convert(params.gpu_load_med_color); sw_stats.colors.gpu_load_low = convert(params.gpu_load_low_color); + sw_stats.colors.cpu_load_high = convert(params.cpu_load_high_color); + sw_stats.colors.cpu_load_med = convert(params.cpu_load_med_color); + sw_stats.colors.cpu_load_low = convert(params.cpu_load_low_color); ImGuiStyle& style = ImGui::GetStyle(); style.Colors[ImGuiCol_PlotLines] = convert(params.frametime_color);