Page 1 of 1

[2.0.20][linux] "SDL_Error: Could not get EGL display" on launch

Posted: Thu Nov 21, 2024 7:13 pm
by tgurr
I'm getting the following error upon start:

Code: Select all

Adding process 72726 for gameID 427520
Adding process 72727 for gameID 427520
Game Recording - game stopped [gameid=427520]
Removing process 72727 for gameID 427520
Removing process 72726 for gameID 427520
Removing process 72687 for gameID 427520
Removing process 72589 for gameID 427520
Removing process 72588 for gameID 427520
Removing process 72582 for gameID 427520
chdir "/mnt/games/Steam/steamapps/common/Factorio"
ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
Game Recording - would start recording game 427520, but recording for this game is disabled
Adding process 73077 for gameID 427520
Adding process 73082 for gameID 427520
Adding process 73083 for gameID 427520
pid 73186 != 73182, skipping destruction (fork without exec?)
pid 73191 != 73182, skipping destruction (fork without exec?)
   0.000 Initializing Steam API.
Adding process 73182 for gameID 427520
[S_API] SteamAPI_Init(): Loaded '/home/user/.local/share/Steam/linux64/steamclient.so' OK.
Setting breakpad minidump AppID = 427520
SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  76561197976748495 [API loaded no]
   0.000 2024-11-19 18:44:36; Factorio 2.0.20 (build 80511, linux64, steam)
   0.000 Operating system: Linux
   0.000 Program arguments: "/mnt/games/Steam/steamapps/common/Factorio/bin/x64/factorio"
   0.000 Config path: /home/user/.factorio/config/config.ini
   0.000 Read data path: /mnt/games/Steam/steamapps/common/Factorio/data
   0.000 Write data path: /home/user/.factorio [74433/153823MB]
   0.000 Binaries path: /mnt/games/Steam/steamapps/common/Factorio/bin
   0.011 System info: [CPU: AMD Ryzen 9 3900X 12-Core Processor, 24 cores, RAM: 32019 MB]
   0.011 Environment: DISPLAY=:1 WAYLAND_DISPLAY=wayland-0 DESKTOP_SESSION=plasma XDG_SESSION_DESKTOP=KDE XDG_CURRENT_DESKTOP=KDE SDL_VIDEODRIVER=<unset> __GL_FSAA_MODE=<unset> __GL_LOG_MAX_ANISO=<unset> __GL_SYNC_TO_VBLANK=<unset> __GL_SORT_FBCONFIGS=<unset> __GL_YIELD=<unset>
   0.012 Display options: [FullScreen: true] [VSync: false] [UIScale: automatic (100.0%)] [Native DPI: true] [Screen: 255] [Special: lmw] [Lang: de]
   0.018 Video driver: wayland
   0.018 Available displays: 2
   0.018  [0]: FL_ HDMI-A-2-HDMI2K - {[0,0], 2048x1152, SDL_PIXELFORMAT_RGB888, 60Hz}
   0.019  [1]: LG Electronics LG ULTRAGEAR/308MAKR9QW25 - {[0,0], 2048x1152, SDL_PIXELFORMAT_RGB888, 165Hz}
   0.024 Error SDLWindow.cpp:221: Failed to create an application window. SDL_Error: Could not get EGL display
   0.024 Error Util.cpp:81: Fehler beim Erstellen eines Anwendungsfensters. SDL_Error: Could not get EGL display
This option is not available. Please see --help for all possible usages.
   0.077 Error MessageDialog.cpp:218: Unable to show message dialog. SDL Error: [Couldn't load font -*-*-medium-r-normal--*-120-*-*-*-*-*-*]
   0.079 Steam API shutdown.
   0.082 Goodbye
I'm not sure if this has to do with the latest changes to steam-runtime, but long story short, what makes things work again is to just use Steam Linux Runtime 3.0 (sniper) instead. A few days ago I was able to just select the runtime in the Steam game settings in the compatibility tab, however after trying stuff I was only able to select Steam Runtime 1.0 Scout via the dropdown menu and it wasn't possible to switch back to Steam Linux Runtime 3.0 (sniper).

After some digging I found out that Steam stores the selected compatibility tool per game setting in

Code: Select all

~/.local/share/Steam/config/config.vdf
so I manually edited that file

Code: Select all

					"427520"
					{
-						"name"		"steamlinuxruntime"
+						"name"		"SteamLinuxRuntime_sniper"
						"config"		""
						"priority"		"250"
					}
and now I'm able to run Factorio again.

According to the docs https://gitlab.steamos.cloud/steamrt/st ... e-3-sniper games may move over to using the newer runtime instead by adding a config file, mentioned games that did that already are for example:

Code: Select all

Early adopters of this mechanism included
Battle for Wesnoth,
Counter-Strike 2,
Dota 2,
Endless Sky and
Retroarch.
So when looking at the steamdb page of e.g. Battle for Wesnoth https://steamdb.info/app/599390/config/ you can see:

Configuration

Code: Select all

app_mappings	
1 ↴
platform	linux
tool	SteamLinuxRuntime_sniper
comment	sniper SLR
installdir	wesnoth
It would be great if you could consider moving the native Linux Factorio over to Steam Runtime 3 (sniper) as well.