Gamescope: Added parameter for the scaler

pull/1042/head
Fabian Arndt 12 months ago
parent ea9994b373
commit 5f8ab1ac21

@ -163,6 +163,7 @@ static void msg_read_thread(){
update_hud_info_with_frametime(sw_stats, params, vendorID, mangoapp_v1->visible_frametime_ns);
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;

@ -17,6 +17,7 @@ struct mangoapp_msg_v1 {
uint64_t latency_ns;
uint32_t outputWidth;
uint32_t outputHeight;
uint8_t scaler;
// WARNING: Always ADD fields, never remove or repurpose fields
} __attribute__((packed));

@ -839,6 +839,20 @@ void HudElements::battery(){
#endif
}
void HudElements::gamescope_scaler(){
static const char* const gamescope_upscale_scaler[] = {"AUTO", "INTEGER", "FIT", "FILL", "STRETCH"};
if (HUDElements.g_scaler < 0 || HUDElements.g_scaler > (int)ARRAY_SIZE(gamescope_upscale_scaler))
return;
if (!HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_scaler])
return;
ImguiNextColumnFirstItem();
HUDElements.TextColored(HUDElements.colors.engine, "%s", "SCALER");
ImguiNextColumnOrNewRow();
right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%s", gamescope_upscale_scaler[HUDElements.g_scaler]);
}
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))
@ -1191,6 +1205,7 @@ 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 == "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}); }
@ -1237,6 +1252,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_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])
@ -1258,7 +1275,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])

@ -23,6 +23,7 @@ class HudElements{
int text_column = 1;
int table_columns_count = 0;
int g_scaler_filter = -1;
int g_scaler = -1;
int g_fsrSharpness = -1;
Clock::time_point last_exec;
std::vector<std::pair<std::string, std::string>> options;
@ -65,6 +66,7 @@ class HudElements{
static void _exec();
static void battery();
static void fps_only();
static void gamescope_scaler();
static void gamescope_scaler_filter();
static void gamescope_frame_timing();
static void gamepad_battery();

@ -77,6 +77,7 @@ typedef unsigned long KeySym;
OVERLAY_PARAM_BOOL(battery) \
OVERLAY_PARAM_BOOL(battery_icon) \
OVERLAY_PARAM_BOOL(fps_only) \
OVERLAY_PARAM_BOOL(scaler) \
OVERLAY_PARAM_BOOL(filter) \
OVERLAY_PARAM_BOOL(mangoapp_steam) \
OVERLAY_PARAM_BOOL(debug) \

Loading…
Cancel
Save