I am using an rx 560 egpu to test, which should be maybe 20% faster than integrated graphics. A partial glmark2 run without egpu yields a score of 5676. I am using a systemd service to turn on both tb4 ports with ectool at boot, no hotplugging.
Plugging in and turning on the gpu, it activates once the usb port goes into tb3 mode, and displays, but desktop performance is very bad and applications are still rendered on the intel graphics by default (glmark score unaffected). With the environment variable DRI_PRIME=1 glmark2 selects the AMD graphics, but gets a terrible score of just 557.
This issue seems to be caused because linux (or at least wayland) is very bad at running desktops across multiple gpu’s (to be fair, its a niche usecase).
This issue can be resolved by turning off integrated graphics by adding the following kernel parameter: module_blacklist=i915,xe
.
Now the the rx 560 scores 7413!
The one remaining issue is that the desktop is quite jittery, also, the builtin screen is still on with broken backlight control (probably the efifb, but video=efifb:off
had no effect, very strange). This can be fixed by going into settings and disabling the display that is not your monitor plugged into the egpu (in my case it was Unknown 28"). Now desktop performance is very good, perhaps even better than the integrated graphics. I imagine the jitteryness was caused by having to wait for the slow framebuffer to update every time animations happened across both displays. The downside is that the Unknown 28" was actually the builtin laptop display, which is now blank and therefore unusable, and of course hotplugging doesn’t work (you have to reboot to use egpu, not a big loss because hotplugging has always been very iffy on Linux). Also, you must work out getting the gpu turned on at boot, easiest way is with a systemd service similar to chromebook-usbc.service.