I recently set up an RX 580 in a Razer Core X Thunderbolt 3 enclosure on my 1135g7 Framework using an external display, and ran some benchmarks in Fedora 37 and Windows 10. Here are some of my results, as well as a simple fix I discovered to improve performance on Linux.
The first thing I discovered is that the Framework won’t post with the eGPU attached, this seems to be a known issue and the workaround is simply to plug it in after posting. Once I figured this out, I moved on to testing in both Fedora and Windows.
Update: I also noticed that if I either unplug the HDMI cable, or power off the monitor, the Framework posts successfully.
Fedora 37 (Silverblue)
Once I got it to boot, I noticed that the external display connected to the eGPU was quite laggy. This is because the compositor was still on the iGPU, so I used all-ways-egpu to switch to the eGPU:
# Install all-ways-egpu
# See github repo for instructions
# Configure all-ways-egpu
all-ways-egpu setup
# Switch to egpu
all-ways-egpu switch egpu
This restarts the display manager and disables the iGPU for maximum performance.
Now things were looking promising, so I ran a few benchmarks and rebooted into Windows 10.
Windows 10
I simply installed the AMD driver package, and everything worked including hotplug.
Initial Results
Basemark GPU Benchmark (OpenGL)
OS | Score | Avg FPS |
---|---|---|
Windows 10 | 4324 | 43 |
Fedora 37 (wayland) | 3787 | 38 |
Fedora 37 (xorg) | 3749 | 37 |
Performance difference: ~ 12.5% slower on Linux
Performance Fix
This seemed like a bigger than expected difference to me, then I noticed that running lspci -vv
showed LnkSta: Speed 2.5GT/s (downgraded)
for the RX 580.
The eGPU was being restricted to 2.5 GT/s (PCI-E 1x speed) when the theoretical performance of Thunderbolt 3 is 8 GT/s!
I did some searching and discovered this helpful post from a user of a GPD Win 3 device who experienced the same problem, which appears to be a bug in the amdgpu
driver. This can be fixed by adding a kernel argument forcing it to the correct speed.
Since I am using Fedora Silverblue, I added the kernel arguments using:
rpm-ostree kargs --append=amdgpu.pcie_gen_cap=0x40000
Then after a reboot, I switched to the eGPU again using all-ways-egpu
and re-ran the benchmark:
Post Fix Results
Basemark GPU Benchmark (OpenGL)
OS | Score | Avg FPS |
---|---|---|
Windows 10 | 4324 | 43 |
Fedora 37 (wayland) | 4023 | 40 |
Performance difference: ~ 6.9% slower on Linux.
Still a bit slower but a worthwhile gain in performance. I would imagine that this might explain the poor performance reported by some newer cards which are probably more bottlenecked by PCI bandwidth than my old RX 580. (I have seen a few reports from owners of RX 6xxx cards that Linux performance is significantly worse).
Gaming Experience
I don’t have an extensive library of AAA games to test with, but performance is more than acceptable for me. I have tested some older classics like Portal 2 which runs at 4K on maximum settings, as well as some games using Proton: Subnautica runs great at 1080p, so does Alien: Isolation. More than enough for a casual gamer!