diff --git a/src/gl/imgui_hud.cpp b/src/gl/imgui_hud.cpp index c369aabe..2ba940e6 100644 --- a/src/gl/imgui_hud.cpp +++ b/src/gl/imgui_hud.cpp @@ -78,14 +78,28 @@ 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; + } else if (sym.find("libtogl.so") != std::string::npos || sym.find("libtogl_client.so") != std::string::npos) { + sw_stats.engine = TOGL; + break; + } + } } + is_blacklisted(true); notifier.params = ¶ms; start_notifier(notifier); 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[];