From ea9994b3736ea7f0c7706b159256ede1e6285c60 Mon Sep 17 00:00:00 2001 From: Fabian Arndt Date: Wed, 7 Jun 2023 02:12:55 +0200 Subject: [PATCH] Gamescope: Show current scaler filter instead of FSR status Removed parameter "fsr", added "filter". --- src/app/main.cpp | 4 ++-- src/app/mangoapp_proto.h | 2 +- src/hud_elements.cpp | 51 +++++++++++++++++++--------------------- src/hud_elements.h | 4 ++-- src/overlay_params.h | 2 +- 5 files changed, 30 insertions(+), 33 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index 0865394..b69b175 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -162,8 +162,8 @@ static void msg_read_thread(){ if (!params.no_display || logger->is_active()) update_hud_info_with_frametime(sw_stats, params, vendorID, mangoapp_v1->visible_frametime_ns); - if (msg_size > offsetof(mangoapp_msg_v1, fsrUpscale)){ - HUDElements.g_fsrUpscale = mangoapp_v1->fsrUpscale; + if (msg_size > offsetof(mangoapp_msg_v1, scaler_filter)){ + HUDElements.g_scaler_filter = mangoapp_v1->scaler_filter; if (params.fsr_steam_sharpness < 0) HUDElements.g_fsrSharpness = mangoapp_v1->fsrSharpness; else diff --git a/src/app/mangoapp_proto.h b/src/app/mangoapp_proto.h index 8bc9c90..b73c3bd 100644 --- a/src/app/mangoapp_proto.h +++ b/src/app/mangoapp_proto.h @@ -10,7 +10,7 @@ struct mangoapp_msg_v1 { uint32_t pid; uint64_t visible_frametime_ns; - uint8_t fsrUpscale; + uint8_t scaler_filter; uint8_t fsrSharpness; // For debugging uint64_t app_frametime_ns; diff --git a/src/hud_elements.cpp b/src/hud_elements.cpp index 1686679..c526e96 100644 --- a/src/hud_elements.cpp +++ b/src/hud_elements.cpp @@ -839,31 +839,28 @@ void HudElements::battery(){ #endif } -void HudElements::gamescope_fsr(){ - if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_fsr] && HUDElements.g_fsrUpscale >= 0) { - ImguiNextColumnFirstItem(); - string FSR_TEXT; - ImVec4 FSR_COLOR; - if (HUDElements.g_fsrUpscale){ - FSR_TEXT = "ON"; - FSR_COLOR = HUDElements.colors.fps_value_high; - } else { - FSR_TEXT = "OFF"; - FSR_COLOR = HUDElements.colors.fps_value_low; - } +void HudElements::gamescope_scaler_filter(){ + static const char* const gamescope_upscale_filter[] = {"LINEAR", "NEAREST", "FSR", "NIS"}; + if (HUDElements.g_scaler_filter < 0 || HUDElements.g_scaler_filter > (int)ARRAY_SIZE(gamescope_upscale_filter)) + return; - HUDElements.TextColored(HUDElements.colors.engine, "%s", "FSR"); - ImguiNextColumnOrNewRow(); - right_aligned_text(FSR_COLOR, HUDElements.ralign_width, "%s", FSR_TEXT.c_str()); - if (HUDElements.g_fsrUpscale){ - if (!HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_hide_fsr_sharpness]) { - ImguiNextColumnOrNewRow(); - right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%i", HUDElements.g_fsrSharpness); - ImGui::SameLine(0,1.0f); - ImGui::PushFont(HUDElements.sw_stats->font1); - HUDElements.TextColored(HUDElements.colors.text, "Sharp"); - ImGui::PopFont(); - } + if (!HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_filter]) + return; + + ImguiNextColumnFirstItem(); + HUDElements.TextColored(HUDElements.colors.engine, "%s", "FILTER"); + ImguiNextColumnOrNewRow(); + right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%s", gamescope_upscale_filter[HUDElements.g_scaler_filter]); + + // Additional parameters + if (HUDElements.g_scaler_filter == 2) { // FSR + if (!HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_hide_fsr_sharpness]) { + ImguiNextColumnOrNewRow(); + right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%i", HUDElements.g_fsrSharpness); + ImGui::SameLine(0,1.0f); + ImGui::PushFont(HUDElements.sw_stats->font1); + HUDElements.TextColored(HUDElements.colors.text, "Sharp"); + ImGui::PopFont(); } } } @@ -1194,7 +1191,7 @@ void HudElements::sort_elements(const std::pair& optio exec_list.push_back({int(ordered_functions.size() - 1), value}); } if (param == "battery") { ordered_functions.push_back({battery, value}); } if (param == "fps_only") { ordered_functions.push_back({fps_only, value}); } - if (param == "fsr") { ordered_functions.push_back({gamescope_fsr, value}); } + if (param == "filter") { ordered_functions.push_back({gamescope_scaler_filter, value});} if (param == "debug") { ordered_functions.push_back({gamescope_frame_timing, value}); } if (param == "gamepad_battery") { ordered_functions.push_back({gamepad_battery, value}); } if (param == "frame_count") { ordered_functions.push_back({frame_count, value}); } @@ -1240,8 +1237,8 @@ void HudElements::legacy_elements(){ ordered_functions.push_back({battery, value}); if (params->enabled[OVERLAY_PARAM_ENABLED_fan]) ordered_functions.push_back({fan, value}); - if (params->enabled[OVERLAY_PARAM_ENABLED_fsr]) - ordered_functions.push_back({gamescope_fsr, value}); + if (params->enabled[OVERLAY_PARAM_ENABLED_filter]) + ordered_functions.push_back({gamescope_scaler_filter, value}); if (params->enabled[OVERLAY_PARAM_ENABLED_throttling_status]) ordered_functions.push_back({throttling_status, value}); if (params->enabled[OVERLAY_PARAM_ENABLED_fps]) diff --git a/src/hud_elements.h b/src/hud_elements.h index b46be47..253408f 100644 --- a/src/hud_elements.h +++ b/src/hud_elements.h @@ -22,7 +22,7 @@ class HudElements{ int place; int text_column = 1; int table_columns_count = 0; - int g_fsrUpscale = -1; + int g_scaler_filter = -1; int g_fsrSharpness = -1; Clock::time_point last_exec; std::vector> options; @@ -65,7 +65,7 @@ class HudElements{ static void _exec(); static void battery(); static void fps_only(); - static void gamescope_fsr(); + static void gamescope_scaler_filter(); static void gamescope_frame_timing(); static void gamepad_battery(); static void frame_count(); diff --git a/src/overlay_params.h b/src/overlay_params.h index c60055d..2453b65 100644 --- a/src/overlay_params.h +++ b/src/overlay_params.h @@ -77,7 +77,7 @@ typedef unsigned long KeySym; OVERLAY_PARAM_BOOL(battery) \ OVERLAY_PARAM_BOOL(battery_icon) \ OVERLAY_PARAM_BOOL(fps_only) \ - OVERLAY_PARAM_BOOL(fsr) \ + OVERLAY_PARAM_BOOL(filter) \ OVERLAY_PARAM_BOOL(mangoapp_steam) \ OVERLAY_PARAM_BOOL(debug) \ OVERLAY_PARAM_BOOL(gamepad_battery) \