Linux: Fix PRIME detection on Steam

To avoid trying to do PRIME detection on fake `libGL.so` as used by e.g.
Renderdoc or Primus, we skip detection if there's a `libGL.so` in
`LD_LIBRARY_PATH`... and our luck is that Steam defines it and includes
system paths too, thus the actual system `libGL`... 🤦

So if we detect Steam, we skip this check.

Co-authored-by: Hein-Pieter van Braam-Stewart <hp@tmm.cx>

(cherry picked from commit 562b1cd2cda2098e62c7501dae87393def99c23a)
This commit is contained in:
Rémi Verschelde 2021-03-08 16:03:24 +01:00
parent 118567ca28
commit 03dda90ddd

View file

@ -264,7 +264,10 @@ Error OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_a
use_prime = 0; use_prime = 0;
} }
if (getenv("LD_LIBRARY_PATH")) { // Some tools use fake libGL libraries and have them override the real one using
// LD_LIBRARY_PATH, so we skip them. *But* Steam also sets LD_LIBRARY_PATH for its
// runtime and includes system `/lib` and `/lib64`... so ignore Steam.
if (use_prime == -1 && getenv("LD_LIBRARY_PATH") && !getenv("STEAM_RUNTIME_LIBRARY_PATH")) {
String ld_library_path(getenv("LD_LIBRARY_PATH")); String ld_library_path(getenv("LD_LIBRARY_PATH"));
Vector<String> libraries = ld_library_path.split(":"); Vector<String> libraries = ld_library_path.split(":");