Hi there,
I'm using GroovyArcade and using Pegasus as my frontend. I used to be able to launch Retroarch games but at some point an update appears to have broken it. When I launch a game that uses retroarch, the screen very briefly flashes to white text on a black background (too quickly for me to read the text but it looks like a warning about setting a powersave mode and I *think* it's unrelated to the issue launching Retroarch) and then reloads the Pegasus UI.
It appears that Retroarch is core dumping at launch. I looked over pegasus.log and I think this is the relevant section:
[i] Executing command: [`/opt/galauncher/galauncher.sh`,`retroarch`,`megadrive`,`/home/arcade/shared/roms/megadrive/QuackShot Starring Donald Duck (World) (Rev A) (Alt).md`]
[i] Working directory: `/opt/galauncher`
[i] Process 0 started
[i] ----------------------------------------
Prelaunching Retroarch
ac_compute_device_uuid's output is based on invalid pci bus info.
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb, minimal, wayland, eglfs, linuxfb, minimalegl, wayland-egl, offscreen, vkkhrdisplay, vnc.
/opt/galauncher/emulators/retroarch.sh: line 7: 902 Aborted (core dumped) retroarch --verbose --log-file "$LOG_DIR"/retroarch.log -L "$core_file" "$rom" ${@:3} < /dev/null
I get the same error if I exit out of Pegasus and gasetup and run retroarch from the command line (either just running plain `retroarch` or using galauncher.sh).
Retroarch runs without issue if I launch it from the desktop (again, either using the `retroarch` command or galauncher.sh).
As far as I've been able to tell, what's happening is that Retroarch is using a Qt plugin called xcb to load its GUI (even though I've got it set to use rgui, which I don't think should require Qt at all?) and xcb requires X. That's why it works if I launch it from the desktop. But if I launch from Pegasus or the command line, it fails because X isn't running and it's supposed to be rendering to the framebuffer.
Per the
Qt for Embedded Linux docs, I've tried setting the QT_QPA_PLATFORM environment variable to the following values, with these results when I run retroarch:
minimal
Segfaults at launch; no other error message
eglfs
Screen goes black (so it might be rendering somewhere but not to my primary display); I can SSH in, kill retroarch, and it'll drop back to the command line.
linuxfb
Screen briefly flashes black, then freezes on the command line; it seems like something is running but whatever it is won't update the screen. If I SSH in, ps shows there's no running retroarch process; I haven't worked out how (or if) I can get back to an interactive shell without a reboot.
minimalegl
Exits with "Could not initialize egl display" error
offscreen
Segfaults at launch; no other error message
I haven't tried the wayland, wayland-egl, vkkhrdisplay, or vnc plugins, because I'm not using Wayland, Vulkan, or VNC.
So that's what I've tried so far, and I'm about out of ideas at this point. Has anybody else seen anything like this, or have any ideas? Thanks in advance.