@ -229,6 +229,7 @@ static void unmap_object(uint64_t obj)
void create_fonts ( const overlay_params & params , ImFont * & small_font , ImFont * & text_font )
{
auto & io = ImGui : : GetIO ( ) ;
ImGui : : GetIO ( ) . FontGlobalScale = params . font_scale ; // set here too so ImGui::CalcTextSize is correct
float font_size = params . font_size ;
if ( font_size < FLT_EPSILON )
font_size = 24 ;
@ -669,6 +670,8 @@ void init_gpu_stats(uint32_t& vendorID, overlay_params& params)
params . enabled [ OVERLAY_PARAM_ENABLED_gpu_stats ] = false ;
}
}
if ( ! params . permit_upload )
printf ( " MANGOHUD: Uploading is disabled (permit_upload = 0) \n " ) ;
}
void init_system_info ( ) {
@ -797,7 +800,7 @@ void check_keybinds(struct swapchain_stats& sw_stats, struct overlay_params& par
reload_cfg_press = now ;
}
}
if ( params . permit_upload & & elapsedUpload > = keyPressDelay ) {
# ifdef HAVE_X11
pressed = keys_are_pressed ( params . upload_log ) ;
@ -809,6 +812,17 @@ void check_keybinds(struct swapchain_stats& sw_stats, struct overlay_params& par
logger - > upload_last_log ( ) ;
}
}
if ( params . permit_upload & & elapsedUpload > = keyPressDelay ) {
# ifdef HAVE_X11
pressed = keys_are_pressed ( params . upload_logs ) ;
# else
pressed = false ;
# endif
if ( pressed ) {
last_upload_press = now ;
logger - > upload_last_logs ( ) ;
}
}
}
void calculate_benchmark_data ( void * params_void ) {
@ -1132,11 +1146,16 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
if ( not logger ) logger = std : : make_unique < Logger > ( & params ) ;
uint32_t f_idx = ( data . n_frames - 1 ) % ARRAY_SIZE ( data . frames_stats ) ;
uint64_t frame_timing = data . frames_stats [ f_idx ] . stats [ OVERLAY_PLOTS_frame_timing ] ;
static float char_width = ImGui : : CalcTextSize ( " A " ) . x ;
static float ralign_width = 0 , old_scale = 0 ;
window_size = ImVec2 ( params . width , params . height ) ;
unsigned height = ImGui : : GetIO ( ) . DisplaySize . y ;
auto now = Clock : : now ( ) ;
if ( old_scale ! = params . font_scale ) {
ralign_width = ImGui : : CalcTextSize ( " A " ) . x * 4 /* characters */ ;
old_scale = params . font_scale ;
}
if ( ! params . no_display ) {
ImGui : : Begin ( " Main " , & open , ImGuiWindowFlags_NoDecoration ) ;
if ( params . enabled [ OVERLAY_PARAM_ENABLED_version ] ) {
@ -1156,14 +1175,14 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
gpu_text = params . gpu_text . c_str ( ) ;
ImGui : : TextColored ( ImGui : : ColorConvertU32ToFloat4 ( params . gpu_color ) , " %s " , gpu_text ) ;
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %i " , gpu_info . load ) ;
right_aligned_text ( ralign _width, " %i " , gpu_info . load ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : Text ( " %% " ) ;
// ImGui::SameLine(150);
// ImGui::Text("%s", "%");
if ( params . enabled [ OVERLAY_PARAM_ENABLED_gpu_temp ] ) {
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %i " , gpu_info . temp ) ;
right_aligned_text ( ralign _width, " %i " , gpu_info . temp ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : Text ( " °C " ) ;
}
@ -1171,7 +1190,7 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
ImGui : : TableNextRow ( ) ;
if ( params . enabled [ OVERLAY_PARAM_ENABLED_gpu_core_clock ] ) {
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %i " , gpu_info . CoreClock ) ;
right_aligned_text ( ralign _width, " %i " , gpu_info . CoreClock ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : PushFont ( data . font1 ) ;
ImGui : : Text ( " MHz " ) ;
@ -1179,7 +1198,7 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
}
if ( params . enabled [ OVERLAY_PARAM_ENABLED_gpu_power ] ) {
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %i " , gpu_info . powerUsage ) ;
right_aligned_text ( ralign _width, " %i " , gpu_info . powerUsage ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : PushFont ( data . font1 ) ;
ImGui : : Text ( " W " ) ;
@ -1195,7 +1214,7 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
cpu_text = params . cpu_text . c_str ( ) ;
ImGui : : TextColored ( ImGui : : ColorConvertU32ToFloat4 ( params . cpu_color ) , " %s " , cpu_text ) ;
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %d " , data . total_cpu ) ;
right_aligned_text ( ralign _width, " %d " , data . total_cpu ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : Text ( " %% " ) ;
// ImGui::SameLine(150);
@ -1203,7 +1222,7 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
if ( params . enabled [ OVERLAY_PARAM_ENABLED_cpu_temp ] ) {
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %i " , cpuStats . GetCPUDataTotal ( ) . temp ) ;
right_aligned_text ( ralign _width, " %i " , cpuStats . GetCPUDataTotal ( ) . temp ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : Text ( " °C " ) ;
}
@ -1220,11 +1239,11 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
ImGui : : TextColored ( ImGui : : ColorConvertU32ToFloat4 ( params . cpu_color ) , " %i " , i ) ;
ImGui : : PopFont ( ) ;
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %i " , int ( cpuData . percent ) ) ;
right_aligned_text ( ralign _width, " %i " , int ( cpuData . percent ) ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : Text ( " %% " ) ;
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %i " , cpuData . mhz ) ;
right_aligned_text ( ralign _width, " %i " , cpuData . mhz ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : PushFont ( data . font1 ) ;
ImGui : : Text ( " MHz " ) ;
@ -1245,7 +1264,7 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
if ( params . enabled [ OVERLAY_PARAM_ENABLED_io_read ] ) {
ImGui : : TableNextCell ( ) ;
float val = data . io . diff . read * 1000000 / sampling ;
right_aligned_text ( cha r_width * 4 , val < 100 ? " %.1f " : " %.f " , val ) ;
right_aligned_text ( ralign _width, val < 100 ? " %.1f " : " %.f " , val ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : PushFont ( data . font1 ) ;
ImGui : : Text ( " MiB/s " ) ;
@ -1254,7 +1273,7 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
if ( params . enabled [ OVERLAY_PARAM_ENABLED_io_write ] ) {
ImGui : : TableNextCell ( ) ;
float val = data . io . diff . write * 1000000 / sampling ;
right_aligned_text ( cha r_width * 4 , val < 100 ? " %.1f " : " %.f " , val ) ;
right_aligned_text ( ralign _width, val < 100 ? " %.1f " : " %.f " , val ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : PushFont ( data . font1 ) ;
ImGui : : Text ( " MiB/s " ) ;
@ -1265,14 +1284,14 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
ImGui : : TableNextRow ( ) ;
ImGui : : TextColored ( ImGui : : ColorConvertU32ToFloat4 ( params . vram_color ) , " VRAM " ) ;
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %.1f " , gpu_info . memoryUsed ) ;
right_aligned_text ( ralign _width, " %.1f " , gpu_info . memoryUsed ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : PushFont ( data . font1 ) ;
ImGui : : Text ( " GiB " ) ;
ImGui : : PopFont ( ) ;
if ( params . enabled [ OVERLAY_PARAM_ENABLED_gpu_mem_clock ] ) {
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %i " , gpu_info . MemClock ) ;
right_aligned_text ( ralign _width, " %i " , gpu_info . MemClock ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : PushFont ( data . font1 ) ;
ImGui : : Text ( " MHz " ) ;
@ -1283,7 +1302,7 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
ImGui : : TableNextRow ( ) ;
ImGui : : TextColored ( ImGui : : ColorConvertU32ToFloat4 ( params . ram_color ) , " RAM " ) ;
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %.1f " , memused ) ;
right_aligned_text ( ralign _width, " %.1f " , memused ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : PushFont ( data . font1 ) ;
ImGui : : Text ( " GiB " ) ;
@ -1293,13 +1312,13 @@ void render_imgui(swapchain_stats& data, struct overlay_params& params, ImVec2&
ImGui : : TableNextRow ( ) ;
ImGui : : TextColored ( ImGui : : ColorConvertU32ToFloat4 ( params . engine_color ) , " %s " , is_vulkan ? data . engineName . c_str ( ) : " OpenGL " ) ;
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %.0f " , data . fps ) ;
right_aligned_text ( ralign _width, " %.0f " , data . fps ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : PushFont ( data . font1 ) ;
ImGui : : Text ( " FPS " ) ;
ImGui : : PopFont ( ) ;
ImGui : : TableNextCell ( ) ;
right_aligned_text ( cha r_width * 4 , " %.1f " , 1000 / data . fps ) ;
right_aligned_text ( ralign _width, " %.1f " , 1000 / data . fps ) ;
ImGui : : SameLine ( 0 , 1.0f ) ;
ImGui : : PushFont ( data . font1 ) ;
ImGui : : Text ( " ms " ) ;
@ -2504,7 +2523,7 @@ static VkResult overlay_QueuePresentKHR(
}
using namespace std : : chrono_literals ;
if ( fps_limit_stats . targetFrameTime > 0 s ) {
fps_limit_stats . frameStart = Clock : : now ( ) ;
FpsLimiter ( fps_limit_stats ) ;