pull/1042/merge
Root-Core 9 months ago committed by GitHub
commit 2119253ce5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -162,12 +162,13 @@ 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 = mangoapp_v1->scaler;
HUDElements.g_scaler_filter = mangoapp_v1->scaler_filter;
if (params.fsr_steam_sharpness < 0)
HUDElements.g_fsrSharpness = mangoapp_v1->fsrSharpness;
HUDElements.g_scaler_sharpness = mangoapp_v1->scaler_sharpness;
else
HUDElements.g_fsrSharpness = params.fsr_steam_sharpness - mangoapp_v1->fsrSharpness;
HUDElements.g_scaler_sharpness = params.fsr_steam_sharpness - mangoapp_v1->scaler_sharpness;
}
if (!HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_mangoapp_steam]){
steam_focused = get_prop("GAMESCOPE_FOCUSED_APP_GFX") == 769;

@ -10,13 +10,16 @@ struct mangoapp_msg_v1 {
uint32_t pid;
uint64_t visible_frametime_ns;
uint8_t fsrUpscale;
uint8_t fsrSharpness;
uint8_t fsrUpscale; // deprecated / unused
uint8_t fsrSharpness; // deprecated / unused
// For debugging
uint64_t app_frametime_ns;
uint64_t latency_ns;
uint32_t outputWidth;
uint32_t outputHeight;
uint8_t scaler;
uint8_t scaler_filter;
uint8_t scaler_sharpness;
// WARNING: Always ADD fields, never remove or repurpose fields
} __attribute__((packed));

@ -937,32 +937,58 @@ 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(){
static const char* const gamescope_upscale_scaler[] = {"AUTO", "INTEGER", "FIT", "FILL", "STRETCH"};
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_scaler])
return;
ImguiNextColumnFirstItem();
HUDElements.TextColored(HUDElements.colors.engine, "%s", "SCALER");
ImguiNextColumnOrNewRow();
if (ARRAY_CHECK_BOUNDS(gamescope_upscale_scaler, HUDElements.g_scaler))
right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%s", gamescope_upscale_scaler[HUDElements.g_scaler]);
else
right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%s", "UNKNOWN");
}
void HudElements::gamescope_scaler_filter(){
static const char* const gamescope_upscale_filter[] = {"LINEAR", "NEAREST", "FSR", "NIS"};
if (!HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_filter])
return;
ImguiNextColumnFirstItem();
HUDElements.TextColored(HUDElements.colors.engine, "%s", "FILTER");
ImguiNextColumnOrNewRow();
if (ARRAY_CHECK_BOUNDS(gamescope_upscale_filter, HUDElements.g_scaler_filter))
right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%s", gamescope_upscale_filter[HUDElements.g_scaler_filter]);
else
right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%s", "UNKNOWN");
// Additional hud elements
if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_hide_scaler_additional])
return;
switch (HUDElements.g_scaler_filter) {
case 2: // FSR
ImguiNextColumnOrNewRow();
right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%i", HUDElements.g_scaler_sharpness);
ImGui::SameLine(0, 1.0f);
ImGui::PushFont(HUDElements.sw_stats->font1);
HUDElements.TextColored(HUDElements.colors.text, "Sharp");
ImGui::PopFont();
break;
case 3: // NIS
ImguiNextColumnOrNewRow();
right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%.0f",
(20 - HUDElements.g_scaler_sharpness) / 20.0f * 100.0f);
ImGui::SameLine(0, 1.0f);
HUDElements.TextColored(HUDElements.colors.text, "%%");
break;
}
}
@ -1311,7 +1337,8 @@ void HudElements::sort_elements(const std::pair<std::string, std::string>& 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 == "scaler") { ordered_functions.push_back({gamescope_scaler, 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}); }
@ -1358,8 +1385,10 @@ 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_scaler])
ordered_functions.push_back({gamescope_scaler, 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])
@ -1379,7 +1408,7 @@ void HudElements::legacy_elements(){
if (params->enabled[OVERLAY_PARAM_ENABLED_frame_timing])
ordered_functions.push_back({frame_timing, value});
if (params->enabled[OVERLAY_PARAM_ENABLED_frame_count])
ordered_functions.push_back({frame_count, value});
ordered_functions.push_back({frame_count, value});
if (params->enabled[OVERLAY_PARAM_ENABLED_debug] && !params->enabled[OVERLAY_PARAM_ENABLED_horizontal])
ordered_functions.push_back({gamescope_frame_timing, value});
if (params->enabled[OVERLAY_PARAM_ENABLED_gamemode])

@ -22,8 +22,9 @@ class HudElements{
int place;
int text_column = 1;
int table_columns_count = 0;
int g_fsrUpscale = -1;
int g_fsrSharpness = -1;
int g_scaler_filter = -1;
int g_scaler = -1;
int g_scaler_sharpness = -1;
Clock::time_point last_exec;
std::vector<std::pair<std::string, std::string>> options;
std::vector<std::pair<void(*)(), std::string >> ordered_functions;
@ -68,7 +69,8 @@ class HudElements{
static void _exec();
static void battery();
static void fps_only();
static void gamescope_fsr();
static void gamescope_scaler();
static void gamescope_scaler_filter();
static void gamescope_frame_timing();
static void gamepad_battery();
static void frame_count();

@ -34,6 +34,11 @@
# define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#endif
/* Check if index is in array's bounds */
#ifndef ARRAY_CHECK_BOUNDS
# define ARRAY_CHECK_BOUNDS(array, index) (index >= 0 && index < (int)ARRAY_SIZE(array))
#endif
/* For compatibility with Clang's __has_builtin() */
#ifndef __has_builtin
# define __has_builtin(x) 0

@ -574,7 +574,7 @@ parse_overlay_env(struct overlay_params *params,
params->enabled[OVERLAY_PARAM_ENABLED_core_load_change] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_battery_icon] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_mangoapp_steam] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_hide_fsr_sharpness] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_hide_scaler_additional] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_throttling_status] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_read_cfg] = read_cfg;
params->enabled[OVERLAY_PARAM_ENABLED_fcat] = 0;
@ -775,7 +775,7 @@ parse_overlay_config(struct overlay_params *params,
params->enabled[OVERLAY_PARAM_ENABLED_fps_only] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_battery_icon] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_mangoapp_steam] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_hide_fsr_sharpness] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_hide_scaler_additional] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_throttling_status] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_fcat] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_horizontal] = 0;
@ -954,7 +954,7 @@ parse_overlay_config(struct overlay_params *params,
new_frame = true; // we probably changed how we look.
}
mangoapp_cv.notify_one();
g_fsrSharpness = params->fsr_steam_sharpness;
g_scaler_sharpness = params->fsr_steam_sharpness;
#endif
}

@ -78,12 +78,13 @@ 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(scaler) \
OVERLAY_PARAM_BOOL(filter) \
OVERLAY_PARAM_BOOL(mangoapp_steam) \
OVERLAY_PARAM_BOOL(debug) \
OVERLAY_PARAM_BOOL(gamepad_battery) \
OVERLAY_PARAM_BOOL(gamepad_battery_icon) \
OVERLAY_PARAM_BOOL(hide_fsr_sharpness) \
OVERLAY_PARAM_BOOL(hide_scaler_additional) \
OVERLAY_PARAM_BOOL(fan) \
OVERLAY_PARAM_BOOL(throttling_status) \
OVERLAY_PARAM_BOOL(fcat) \

Loading…
Cancel
Save