After almost two years work, inveterate Raspberry Pi (opens in new tab) tinkerer and friend of the Tom’s Hardware Pi Cast (opens in new tab) Jeff Geerling has succeeded (opens in new tab) in his goal of getting an external GPU to work on Compute Module 4 (opens in new tab)’s via the carrier board's PCIe slot.
Naturally, Geerling is kind of happy about the development, which comes as a result of the combined efforts of dozens of people exploring, as he puts it, “the dark, dusty corners of the BCM2711”. That’s the Broadcom Arm chipset powering the Compute Module 4 and Raspberry Pi 4 (opens in new tab), which already has a perfectly good GPU on board. Previous experiments have seen an ancient SM750 GPU (opens in new tab) flicker into life, but what can this breakthrough bring to the Pi?
Well, not a lot really. It’s more of a proof of concept at the moment, with video available from DP, VGA, DVI and HDMI on the AMD 5000/6000/7000 boards tested, but plenty of glitches along the way, particularly with Xorg. The command line works, plus “Weston (a reference implementation of Wayland), as well as some 3D benchmarks and applications that use OpenGL”. Weston is less glitchy, but is sluggish and prone to locking up. And Nvidia cards, it seems, are right out.
Overall, it runs more slowly than the Raspberry Pi’s built-in GPU, but the driver is still in an early state, with “a lot of debug code currently, and the memory copy implementations err on the side of caution, slowing down some operations significantly”. Then there are things that simply don’t work, such as H.264 acceleration, and of course gaming. Things aren’t helped by the fact a card with a 16x PCIe 3 interface is being plugged into a 1x PCIe 2 slot, considerably narrowing its available bandwidth.
Geerling admits that, despite the breakthrough, this is quite possibly a dead end, and the CM4 may never interact with a GPU in a meaningful way, partly due to Broadcom’s out-of-spec implementation of the PCIe root complex on the chip, and partly because it was just never designed to work like this.
Efforts continue, however, with Github pages (opens in new tab) set up to track various combinations of cards and boards, and Geerling hopes future SoCs from Broadcom and other manufacturers will support PCIe in a more fully implemented way, so plugging a GPU into your SBC becomes A-OK.