Attempt to check sync

win-gl
FlightlessMango 4 years ago
parent cc83f2878e
commit e32934ee40

@ -696,6 +696,17 @@ void HudElements::graphs(){
ImGui::PopStyleColor(1);
}
void HudElements::_sync(){
if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_sync]){
ImGui::TableNextRow(); ImGui::TableNextColumn();
ImGui::PushFont(HUDElements.sw_stats->font1);
ImGui::TextColored(HUDElements.colors.engine, "%s", "SYNC");
ImGui::TableNextColumn();
right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, HUDElements.sync.c_str());
ImGui::PopFont();
}
}
void HudElements::sort_elements(std::pair<std::string, std::string> option){
auto param = option.first;
auto value = option.second;
@ -725,6 +736,7 @@ void HudElements::sort_elements(std::pair<std::string, std::string> option){
if (param == "custom_text_center") { ordered_functions.push_back({custom_text_center, value}); }
if (param == "gamemode") { ordered_functions.push_back({gamemode, value}); }
if (param == "vkbasalt") { ordered_functions.push_back({vkbasalt, value}); }
if (param == "sync") { ordered_functions.push_back({_sync, value}); }
if (param == "exec") { ordered_functions.push_back({_exec, value});
exec_list.push_back({int(ordered_functions.size() - 1), value}); }
if (param == "graphs"){

@ -29,6 +29,7 @@ class HudElements{
"vram", "ram", "cpu_temp", "gpu_temp"
};
std::vector<exec_list> exec_list;
std::string sync, cpu_sched;
void sort_elements(std::pair<std::string, std::string> option);
void legacy_elements();
void update_exec();
@ -56,6 +57,7 @@ class HudElements{
static void gamemode();
static void graphs();
static void _exec();
static void _sync();
void convert_colors(struct overlay_params& params);
void convert_colors(bool do_conv, struct overlay_params& params);

@ -68,6 +68,7 @@ typedef unsigned long KeySym;
OVERLAY_PARAM_BOOL(exec) \
OVERLAY_PARAM_BOOL(vkbasalt) \
OVERLAY_PARAM_BOOL(gamemode) \
OVERLAY_PARAM_BOOL(sync) \
OVERLAY_PARAM_CUSTOM(fps_sampling_period) \
OVERLAY_PARAM_CUSTOM(output_folder) \
OVERLAY_PARAM_CUSTOM(output_file) \

@ -681,7 +681,42 @@ void init_system_info(){
if (HUDElements.gamemode_bol && HUDElements.vkbasalt_bol)
break;
}
// check for esync/fsync/futex2
path = "/proc/" + to_string(pid) + "/fd/";
files = exec("ls " + path);
ss.clear(); ss << files;
string futex2_path;
while(std::getline(ss, line, '\n')){
auto file = path + line;
auto sym = read_symlink(file.c_str());
if (sym.find("esync") != std::string::npos){
HUDElements.sync = "ESYNC";
break;
}
if (sym.find("fsync") != std::string::npos){
if (getenv("WINEFSYNC_FUTEX2")){
if (atoi(getenv("WINEFSYNC_FUTEX2")) == 1 && find_folder("/sys/kernel/", "futex2", futex2_path) && wineVersion.find("experimental") != std::string::npos){
HUDElements.sync = "FUTEX2";
break;
} else {
HUDElements.sync = "FSYNC";
break;
}
} else {
if (find_folder("/sys/kernel/", "futex2", futex2_path) && wineVersion.find("experimental") != std::string::npos){
HUDElements.sync = "FUTEX2";
break;
} else {
HUDElements.sync = "FSYNC";
break;
}
}
}
}
if (HUDElements.sync.empty())
HUDElements.sync = "NONE";
if (ld_preload)
setenv("LD_PRELOAD", ld_preload, 1);
#ifndef NDEBUG
@ -691,7 +726,7 @@ void init_system_info(){
<< "Os:" << os << "\n"
<< "Gpu:" << gpu << "\n"
<< "Driver:" << driver << "\n"
<< "CPU Scheduler:" << cpusched << std::endl;
<< "Sync:" << HUDElements.sync << std::endl;
#endif
#endif
}

Loading…
Cancel
Save