Pi Compute Module 4外接AMD Radeon 显卡,这才是大神

在油管上看到这位牛人的视频,就一个大大的服,
有梯子的直接去观摩吧 https://www.youtube.com/watch?v=crnEygp4C6g

英文blog原文在这里
https://www.jeffgeerling.com/blog/2022/external-graphics-cards-work-on-raspberry-pi

大概的步骤贴在这里,供想自己折腾的小伙伴们参考

在开始之前,需要准备:

Raspberry Pi Compute Module 4
Raspberry Pi Compute Module 4 IO Board (或者另外的支持PCI Express插槽的 IO board)
PCIe x1 to x16 riser/adapter
一块AMD Radeon 显卡(至少5450 \6450\7470 是可以工作的)

编译操作系统

当前的工作补丁基于之前维护的 5.10.y Linux fork Raspberry Pi,建议 基于 2022-01-28-raspios-bullseye-arm64-full.zip(https://downloads.raspberrypi.org/raspios_full_arm64/images/raspios_full_arm64-2022-01-28/
)从这里下载并扩展它,然后使用 Raspberry Pi Imager 将其烧录到 microSD 卡。

然后把SD卡插入树莓派,然后用sudo apt install -y firmware-amd-graphics. 安装AMD 固件

然后在电脑上并交叉编译 Raspberry Pi 内核(比直接在树莓派上编译节省时间)。编译设置环境等记录在此 (https://github.com/geerlingguy/raspberry-pi-pcie-devices/tree/master/extras/cross-compile)

在编译 Linux 之前,需要确保签出的分支是这个分支(https://github.com/Coreforge/linux/pull/1)。或者,可以在raspberrypi/linux处克隆源代码rpi-5.10.y,并将 Coreforge 的分支应用为补丁文件。

为了让自己更轻松,请在将交叉编译的内核复制到 Pi 之前将 radeon 驱动程序列入黑名单。创建一个名为 的文件

/etc/modprobe.d/blacklist-radeon.conf

其内容为:

blacklist radeon
然后将交叉编译的内核复制到 Pi。我们差不多完成了,但是要让 Xorg 和其他像 Weston 这样的合成器运行,你还需要覆盖这个memcpy库:

# Download Coreforge's modified memcpy library.
wget https://gist.githubusercontent.com/Coreforge/91da3d410ec7eb0ef5bc8dee24b91359/raw/1b72d428b2fe1cba459d5ae7f73663483743ff55/memcpy_unaligned.c

# Compile the library and move it into place.
gcc -shared -fPIC -o memcpy.so memcpy_unaligned.c
sudo mv memcpy.so /usr/local/lib/memcpy.so

# Create an ld.so.preload file to instruct Linux to use our version of memcpy.
sudo nano /etc/ld.so.preload

# Put the following line inside ld.so.preload:
/usr/local/lib/memcpy.so

加载驱动程序

现在,重新启动树莓派。重新启动后,打开一个终端会话并运行dmesg –follow查看

要加载radeon驱动程序,请运行:

sudo modprobe radeon
10 或 20 秒后,如果您将显示器插入 Radeon 卡,它应该会在驱动程序加载时出现。通常我将 Pi OS 设置为引导至控制台 (CLI) 而不是引导至图形系统,因为这样更稳定。

为了更好地运行 Xorg(startx启动)或 Weston(weston-launch启动),您还应该将以下选项添加到您的/boot/cmdline.txt(与其他选项在同一行)并重新启动:

radeon.uvd=0 pci=noaer,nomsi radeon.msi=0 radeon.pcie_gen2=0 pcie_aspm=off radeon.aspm=0 radeon.runpm=0 radeon.dpm=0

哪些功能有效

总结:DisplayPort、VGA、HDMI 和 DVI 端口。命令行(控制台)、Xorg 和 Weston(Wayland 的参考实现),以及一些使用 OpenGL 的 3D 基准测试和应用程序。

但是 Xorg 在其输出中特别显示了很多“故障”,尤其是在与不同的屏幕元素交互时。

Weston 在 Radeon on Raspberry Pi 上运行更流畅

Weston运行速度有点慢,并且经常会在一段时间后挂死

GLMark2 DRM 水母示例

glmark2-drm(看看我是如何在 Pi 上安装 GLMark2 的)并且glxgears通常会一直运行,但有时会在运行过程中锁定。

驱动程序在当前状态下远未达到最佳状态——目前有很多调试代码,内存复制实现在谨慎方面犯了错误,显着减慢了一些操作(GLMark2 给出的分数约为 50,glxgears渲染时为 25 -35 fps——比 Pi 内置的 VC4 GPU 慢!

什么不起作用

举个例子,H.264 加速目前被禁用,像 CUDA 内核之类的东西仍然无法访问。

即使经过更多的工作,您也不太可能使用外部 GPU 在 Pi 上玩 3A 游戏: x1 Gen 2.0 通道不提供大量带宽。
大多数(全部?)3A 游戏都是为 X86 平台编译的,而不是为 ARM/ARM64 编译的。

发表评论