Ubuntu 18.04.1 LTS R9 390X amdgpu 指南/测试总结

aud*_*cus 5 radeon mesa vulkan amdgpu 18.04

我无法amdgpu加载为驱动程序。相反,它总是加载radeon.

设置:

  • Ubuntu 18.04.1 LTS

  • i7-5830k

  • 2x R9 390X

aud*_*cus 7

这是在安装了R9 390X并试用各种内核的Ubuntu 18.04.1 上启用 amdgpu(而不是radeon)的指南和测试摘要。

阅读完这篇文章并阅读/观看Level1Techs 指南和许多其他内容后,我终于设法加载了 amdgpu 而不是 radeon。以下步骤显示了如何实现这一点。

问题

我想使用开源驱动程序(不是 amdgpu-pro)通过 DXVK 在 Linux 上玩游戏。由于 DXVK 仅适用于 amdgpu 驱动程序,因此我不得不一直摆脱 Ubuntu 加载 radeon。

我的设置

  • Ubuntu 18.04.1 LTS

  • i7-5830k

  • R9 390X(实际上是2个,但应该没有关系)

如何

一、最新驱动

@未测试:它还应该与 Ubuntu 18.04.1 安装附带的官方驱动程序一起使用。如果您不想运行非官方驱动程序,请跳过此步骤。

@注意:从 PPA 下载更新的非官方驱动程序以获得更好的 DXVK 性能。可能不稳定。

https://launchpad.net/~oibaf/+archive/ubuntu/graphics-drivers安装最新的驱动程序:

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt update && sudo apt dist-upgrade
sudo apt install mesa-vulkan-drivers mesa-vulkan-drivers:i386
Run Code Online (Sandbox Code Playgroud)

@ERROR未满足的依赖项:首先安装原始驱动程序:

sudo add-apt-repository --remove ppa:oibaf/graphics-drivers
sudo apt install mesa-vulkan-drivers mesa-vulkan-drivers:i386
Run Code Online (Sandbox Code Playgroud)

@注意:确保您没有添加像ppa:paulo-miguel-dias/mesa这样的其他图形驱动程序 PPA 。您可以检查他的 Mesa 驱动程序:稳定不稳定

@ERROR由于 PPA 引起的一般错误: 清除图形驱动程序 PPA 以回退到原始驱动程序并进行清理:

sudo apt install ppa-purge && aptitude
sudo ppa-purge ppa:oibaf/graphics-drivers
sudo apt autoremove && sudo apt autoclean
Run Code Online (Sandbox Code Playgroud)

你可以重新开始。

二、Xorg 配置

创建一个将在启动时自动加载的 xorg 配置文件:

/usr/share/X11/xorg.conf.d/<nr-name>.conf 例如 42-amdgpu.conf

#/usr/share/X11/xorg.conf.d/42-amdgpu.conf
Section "Device"
    Identifier "AMDGPU"
    Driver "amdgpu"
    Option "AccelMethod" "glamor"
    Option "DRI" "3"
EndSection
Run Code Online (Sandbox Code Playgroud)

@未测试:将此添加到现有10-amdgpu.conf文件中。可能会被驱动程序安装覆盖。

@OPTION:您也可以将此添加到/etc/X11/xorg.conf/etc/xorg.conf

三、黑名单

使用应列入黑名单的模块创建黑名单文件:

/etc/modprobe.d/<name>.conf 例如 blacklist-radeon.conf

#/etc/modprobe.d/blacklist-radeon.conf
blacklist radeon
Run Code Online (Sandbox Code Playgroud)

@OPTION:可以blacklist.conf通过附加blacklist radeon到某处来使用已经存在的文件。

四、GRUB 配置

在 grub 配置中添加或更改这些参数/etc/default/grub

#/etc/default/grub
...
GRUB_GFXMODE=1920x1080x32
GRUB_CMDLINE_LINUX_DEFAULT="radeon.si_support=0 radeon.cik_support=0 amdgpu.si_support=1 amdgpu.cik_support=1 amdgpu.dc=1 amdgpu.dpm=1 amdgpu.modeset=1"
...
Run Code Online (Sandbox Code Playgroud)

@DID-NOT-WORK:40_custom/etc/grub.d/. 当我把它放在40_amdgpu而不是/etc/default/grub. (查看/etc/grub.d/README更多信息)

五、更新GRUB和初始ramdisk

让上述更改生效:

sudo update-grub2 && sudo update-initramfs -u -k all
Run Code Online (Sandbox Code Playgroud)

reboot
Run Code Online (Sandbox Code Playgroud)

六、核实

要验证 amdgpu 驱动程序是否已加载并正在使用,请执行以下一项或多项命令:

lsmod | egrep 'Used|amdgpu'

sudo lspci -v | grep amdgpu -B 19

sudo lshw -c video | grep amdgpu -B 10 -A 1
Run Code Online (Sandbox Code Playgroud)

运行 Vulkan 测试应用程序:

sudo apt install vulkan-utils
Run Code Online (Sandbox Code Playgroud)

vulkan-smoketest
Run Code Online (Sandbox Code Playgroud)

VII.I 使用较新内核进行测试(截至 2018-11-19)

在上述步骤之后,我尝试启动各种内核。

要安装其他内核,我使用了Ubuntu 内核更新实用程序

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt update
sudo apt install ukuu
Run Code Online (Sandbox Code Playgroud)

以下是我的测试总结:

4.15.0 WORKING! Ubuntu 18.04.1 LTS 默认内核

4.17.5 WORKING!本视频中使用的内核

4.18.0 WORKAROUND! Ubuntu 19.10 Disco 当前默认内核 (2018-11-19)

4.18.15 WORKAROUND! 对 amdgpu 进行更改的最新 4.18.x 内核

4.18.19 WORKAROUND! 最新的 4.18.x 内核

4.19 FAILURE! 黑屏或 dmesg:

[drm:dm_pp_get_static_clocks [amdgpu]] *ERROR* DM_PPLIB: invalid powerlevel state: 0!
Run Code Online (Sandbox Code Playgroud)

4.19.1 FAILURE! 黑屏或 dmesg:

drm:dm_pp_get_static_clocks [amdgpu]] *ERROR* DM_PPLIB: invalid powerlevel state: 0!
drm:amdgpu_vce_ring_test_ring [amdgpu]] *ERROR* amdgpu: ring 12 test failed
drm:amdgpu_device_init.cold.28 [amdgpu]] *ERROR* hw_init of IP block <vce_v2_0> failed -110
amdgpu 0000:05:00.0: amdgpu_device_ip_init failed
amdgpu 0000:05:00.0: Fatal error during GPU init
Run Code Online (Sandbox Code Playgroud)

4.19.2 FAILURE! 留言:

Direct firmware load for amdgpu/hawaii_mc.bin failed with error -2

@NOTE:我还没有对4.19.x内核错误进行更多调查。

VII.II 解决方法

4.18-4.18.19

要使4.18内核工作:

  1. 备份您当前的固件文件:

    sudo cp -r /lib/firmware /lib/firmware-$(uname -r)
    
    Run Code Online (Sandbox Code Playgroud)
  2. https://packages.ubuntu.com/en/disco/linux-firmware下载 Ubuntu 19.10 Disco(当前 Disco 版本默认使用内核 4.18.0)的 linux-firmware或:

    wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.176.tar.gz
    
    Run Code Online (Sandbox Code Playgroud)
  3. 提取文件:

    tar -xvzf linux-firmware_1.76.tar.gz
    
    Run Code Online (Sandbox Code Playgroud)
  4. 进入新的固件目录:

    cd linux-firmware
    
    Run Code Online (Sandbox Code Playgroud)
  5. 安装固件:

    sudo make install
    
    Run Code Online (Sandbox Code Playgroud)
  6. 重启

    reboot
    
    Run Code Online (Sandbox Code Playgroud)


Teo*_*man 6

VII.II 使用较新内核进行测试(截至 2020-01-01)

下面是我的测试总结:

4.18.16 WORKING! Mint 19.1 带有所有提到的内核参数并且 Radeon 被列入黑名单

4.18.17 - 4.18.20 BLACKSCREEN! 固件更新没有解决问题

4.18.17 - 4.18.20 NOT TESTED! 省略 dpm 内核参数

4.20.12 WORKING! 省略了 dpm 内核参数

5.00.00 WORKING! 省略了 dpm 内核参数

5.2.21 RECOMMENDED! WORKING! amdgpu.dpm=1 已修复且有效

VIII 编写风扇控制服务以解决卡顿问题和静音游戏

    warning: many gpus have a maximum temperature of 95°C / 203°F
    exceeding that can damage your gpu, look at your config twice! 
Run Code Online (Sandbox Code Playgroud)
  1. 使用文件名编写服务:amdgpu-fancontrol.service

    [Unit]
    Description=amdgpu-fancontrol
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/amdgpu-fancontrol
    
    [Install]
    WantedBy=multi-user.target
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将服务放入

    /etc/systemd/system
    
    Run Code Online (Sandbox Code Playgroud)
  3. 从 github 获取脚本:链接

  4. 如果你想改变脚本的参数

4.1. 如果您还有集成图形,请将所有数字从零更改为一。

/sys/class/drm/card1/device/hwmon/hwmon1/
Run Code Online (Sandbox Code Playgroud)

4.2. 更改温度/转数映射。风扇速度的变化确实会干扰渲染。因此,这些值应该保持不变,以便在两者之间不发生插值。最后一个值将被选为过热保护的最大风扇速度。

TEMPS=( 60000 65000 80000 95000 96000 )
PWMS=(   170   170   170   170   255  )
Run Code Online (Sandbox Code Playgroud)

4.3 检查目录是否存在

  1. 将脚本放入 /usr/bin/amdgpu-fancontrol

  2. 激活服务

    sudo systemctl daemon-reload
    sudo systemctl enable amdgpu-fancontrol.service
    sudo systemctl start amdgpu-fancontrol.service
    
    Run Code Online (Sandbox Code Playgroud)