DEV Community

RichardBrowning
RichardBrowning

Posted on

[Journal] Loongson 3A6000 and dGPU 独立显卡配置

概述

龙芯3A6000自己带的GPU叫做LG100。这不是一个集显,而是一个集成于7A2000桥片的独显。因此,很难给他分个类。
但无论如何,也许是因为驱动或者架构的原因,他的性能一言难尽。在Bilibili和Youtube上播放1080P视频就会掉帧,分辨率和帧率都只能勉强达到日常使用的程度。因此,需要引入独立显卡。
请注意本人用的机器是一个半高机箱,所以只支持low-profile的显卡,因此这些信息仅供有相同架构的显卡用户参考。

注意:英伟达显卡

英伟达显卡没有一个合适的、适用龙芯平台的驱动程序。由于英伟达对上游管控比较严格,驱动开源和模块化程度不高。总之,要使英伟达显卡适用龙芯平台,需要这两方的共同努力,在短期之内由于众所周知的原因是不可能的。

尝试B:AMD RX6400 和 RX550 显卡

这是本人后期想到的方案,所以是B计划。
AMD平台的驱动开源程度高,模块化好,相比暂时体系不完善的国产显卡和开源程度低的英伟达,是最好的选择。

RX550 vs RX6400 显卡参数对比

参数 RX550 RX6400
核心架构 Polaris 12 RDNA 2
显存类型 GDDR5 GDDR6
显存容量 2GB / 4GB 4GB
核心频率 1100 MHz 2039 MHz
浮点性能 1.2 TFLOPS 3.54 TFLOPS
最大分辨率 5120x2880 @ 60Hz 7680x4320 @ 60Hz
TDP 50W 53W
PCIe 版本 PCIe 3.0 x8 PCIe 4.0 x4
Vulkan 支持 Vulkan 1.3 Vulkan 1.3

RX550 vs RX6400 实际表现对比

参数 RX550 RX6400
bios内是否有显示 有,在xcls3a6m主板上没有 没有
是否兼容AMDGPU驱动 兼容 兼容

这个教程对两者都是有效的,本人有这两张卡,所以亲测可用。

配置的具体操作

预配置

Arch用户建议升级内核

sudo pacman -S linux-firmware
Enter fullscreen mode Exit fullscreen mode

内核参数

很多热心网友提供了一些内核参数,对本人的配置Archlinux没有作用,仅粘贴在这里

radeon.si_support=0, amdgpu.si_support=1 modprobe.blacklist=loongson loongson.modeset=0
Enter fullscreen mode Exit fullscreen mode

其中radeon.si_support=0, amdgpu.si_support=1是为了禁用radeon和启用amdgpu的Southern Island支持。Southern Island(SI)是AMD对于其早期HD系列显卡的代号。关于SI,理论上可以禁用,但是实际去除会出错。接下来会讲到。
modprobe.blacklist=loongson loongson.modeset=0是为了禁用龙芯自己的模块。这个也是不需要的,后面也会讲到

ModProbe配置

关于modprobe,lsmod指令我会做一期详解:TODO

书接上文,内核参数的方法不奏效,那么就令modprobe默认加载GPU需要的模块。首先在/etc/modprobe.d/amdgpu.conf加上如下内容:

# /etc/modprobe.d/amdgpu.conf
options amdgpu si_support=1
options amdgpu cik_support=1
Enter fullscreen mode Exit fullscreen mode

其中si_support和cik_support是需要加的,即使这些是老AMD显卡的驱动,但是可能是因为向后兼容的原因。可能是amdgpu无法支持龙芯的一些性质时,需要回退到一些老的架构方法?这只是本人的猜测。

相应的,可选确保radeon不被加载。建立/etc/modprobe.d/radeon.conf并加上如下内容:

# /etc/modprobe.d/radeon.conf
blacklist radeon
Enter fullscreen mode Exit fullscreen mode

本人尝试过,是否禁用loongson模块影响不大。

(可选)初始内存文件系统(iniramfs)

通过配置/etc/mkinitcpio.conf可以要求模块提早加载,把以下内容加入以下内容:

MODULES=(amdgpu)
Enter fullscreen mode Exit fullscreen mode

然后重新生成iniramfs

sudo mkinitcpio -P
Enter fullscreen mode Exit fullscreen mode

注意这个方法不是总有用,可能会影响其他组件的加载

大功告成,插上显卡就可以启动了。这个方法对loongarchlinux管用。

尝试A:摩尔线程MTT s30

这款显卡是本人刚开始的计划,目的是打造一台全国产电脑。后来废弃的原因非常简单:这款显卡除了x86_64架构下的Windows和Ubuntu驱动(就算有这两个,都不算成熟),其他的平台和架构都没有驱动。

对于龙架构,只有旧世界的银河麒麟和统信UOS有和摩尔线程合作出的系统镜像有集成驱动。下表总结一下个人尝试的旧世界操作系统,UOS下可以在应用商店下下载安装摩尔线程驱动

操作系统 显卡驱动获取方式 显示效果 附录
统信UOS 1050 集显下安装系统(和驱动,可选),然后启用/插入独显 正常分辨率和硬件加速 如果插入显卡安装,系统可能会安装失败
统信UOS 1060 集显下安装系统和驱动,然后启用/插入独显 正常分辨率和硬件加速
统信UOS 1070 集显下安装系统和驱动,然后启用/插入独显 分辨率不正常,止于1080P,硬件名称识别异常
Loongnix 没有驱动 没有显示,没有免驱DRM
银河麒麟 - - 银河麒麟主要提供给企事业单位,个人仅可以申请试用,没有个人购买渠道。麒麟的个人版没有龙架构

注意由于旧世界的Linux内核版本,工具版本都比较老旧,其在不远的未来很有可能走向消亡。

摩尔线程对新世界系统完全没有提供官方驱动,一些配置的好的系统,如Deepin V23,可以使用DRM(Direct Render Manager)显示GUI界面,分辨率是不正确的,而且没有硬件加速等支持。因为需要相关依赖,从UOS仓库下载的驱动在其他系统下无法使用,即使是Deepin V23。

不过值得欣慰的一点是,摩尔线程的显卡在BIOS下是有显示的。

不足,

存在一些情况,在接上独立显卡之后,无线网卡在系统中消失。无论是BIOS中,网络工具,甚至lspci指令都无法读取到网卡信息。此问题可能是由于主板BIOS无法读取全部pci设备的bug引起的。此问题暂且没有找到解决方法,另外此问题发生有很高的随机性。

参考文档

Kernel Module - Arch Linux 包含modprobe, lsmod的说明, Blacklisting的说明在第6部分
DRM/AMDGPU简介
内核参数
AMDGPU模块参数
Loong Arch Linux
本人在龙芯论坛上对Radeon RX6400兼容性的提问
如何使用Vesa驱动
Gentoo的AMDGPU文档

Top comments (0)