From f1eae9325357af29af71f088ca95ded93c92adf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hor=C3=A1=C4=8Dek?= Date: Sat, 13 Mar 2021 17:08:52 +0100 Subject: [PATCH 1/2] Use map_files instead of lsof for wined3d detection --- src/gl/imgui_hud.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/gl/imgui_hud.cpp b/src/gl/imgui_hud.cpp index c369aabe..81fbc0f4 100644 --- a/src/gl/imgui_hud.cpp +++ b/src/gl/imgui_hud.cpp @@ -78,14 +78,25 @@ void imgui_init() } if (sw_stats.engine != EngineTypes::ZINK){ + sw_stats.engine = OPENGL; + + stringstream ss; + string line; auto pid = getpid(); - string find_wined3d = "lsof -w -lnPX -L -p " + to_string(pid) + " | grep -oh wined3d"; - string ret_wined3d = exec(find_wined3d); - if (ret_wined3d == "wined3d\n" ) - sw_stats.engine = WINED3D; - else - sw_stats.engine = OPENGL; + string path = "/proc/" + to_string(pid) + "/map_files/"; + auto files = exec("ls " + path); + ss << files; + + while(std::getline(ss, line, '\n')){ + auto file = path + line; + auto sym = read_symlink(file.c_str()); + if (sym.find("wined3d") != std::string::npos) { + sw_stats.engine = WINED3D; + break; + } + } } + is_blacklisted(true); notifier.params = ¶ms; start_notifier(notifier); From 213953089d590197950ab3df39a70a10feddbc1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hor=C3=A1=C4=8Dek?= Date: Sat, 13 Mar 2021 17:09:17 +0100 Subject: [PATCH 2/2] Detect ToGL --- src/gl/imgui_hud.cpp | 3 +++ src/overlay.cpp | 2 +- src/overlay.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gl/imgui_hud.cpp b/src/gl/imgui_hud.cpp index 81fbc0f4..2ba940e6 100644 --- a/src/gl/imgui_hud.cpp +++ b/src/gl/imgui_hud.cpp @@ -93,6 +93,9 @@ void imgui_init() if (sym.find("wined3d") != std::string::npos) { sw_stats.engine = WINED3D; break; + } else if (sym.find("libtogl.so") != std::string::npos || sym.find("libtogl_client.so") != std::string::npos) { + sw_stats.engine = TOGL; + break; } } } diff --git a/src/overlay.cpp b/src/overlay.cpp index 6f9314d4..976dd8ac 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -19,7 +19,7 @@ struct benchmark_stats benchmark; struct fps_limit fps_limit_stats {}; ImVec2 real_font_size; std::vector graph_data; -const char* engines[] = {"Unknown", "OpenGL", "VULKAN", "DXVK", "VKD3D", "DAMAVAND", "ZINK", "WINED3D", "Feral3D"}; +const char* engines[] = {"Unknown", "OpenGL", "VULKAN", "DXVK", "VKD3D", "DAMAVAND", "ZINK", "WINED3D", "Feral3D", "ToGL"}; void update_hw_info(struct swapchain_stats& sw_stats, struct overlay_params& params, uint32_t vendorID) { diff --git a/src/overlay.h b/src/overlay.h index d59f6c43..99c975fc 100644 --- a/src/overlay.h +++ b/src/overlay.h @@ -35,6 +35,7 @@ enum EngineTypes WINED3D, FERAL3D, + TOGL, }; extern const char* engines[];