在 AMD GPU 上使用 75hz 时,屏幕出现奇怪的闪烁/撕裂

在 AMD GPU 上使用 75hz 时,屏幕出现奇怪的闪烁/撕裂

我希望即使我使用的是 Pop!_OS,在这里发布我的问题也不会有太大影响。这个问题也发生在 Manjaro live usb 上。

我正在使用

  • Ryzen 1500x CPU,
  • 16GB RAM,
  • MSI B350m Gaming Pro 主板,配备 RX 580 8GB 版本,
  • 显示器是 AOC G2260VWQ6 1920x1080x75hz。

启动和登录后一切都正常,但是,关闭屏幕然后打开,从屏幕保护程序返回,更改显示设置,使屏幕“重新启动”或任何类似操作,同时刷新率超过 60hz,我的屏幕约为 75hz,开始出现奇怪的闪烁。

以下是针对不同情况的视频链接:

有时它仍然可以正常工作,但只发生过一次,多次重新启动屏幕都没有开始闪烁,直到重新启动。

我使用 DisplayPort 和 HDMI 进行了测试,在较低分辨率下使用较高刷新率时,问题仍然存在。当切换到其他分辨率并仍然使用 ~75hz 时,闪烁不会消失。

Mesa 18 和 19 版本都存在此问题,Manjaro 上即使切换到内核版本 5 也会出现此问题。当然,Windows 上不会出现此问题。

我对 Linux 不是很熟悉,所以我真的不知道如何修复它。请帮忙。

编辑:经过一番搜索,我找到了一个解决方法。我必须在文件 /sys/class/drm/card0/device/power_dpm_force_performance_level 中将“auto”更改为“high”。链接到我找到解决方法的帖子:https://bbs.archlinux.org/viewtopic.php?id=244398

答案1

arch wiki 上对此有一个很好的解释:https://wiki.archlinux.org/index.php/AMDGPU#Screen_artifacts_and_frequency_problem


要快速暂时地(每次启动时您都必须运行命令)修复在终端中运行的问题:

echo 'low' | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level

或者

echo 'high' | sudo tee  sys/class/drm/card0/device/power_dpm_force_performance_level

要永久修复此问题(即使重启后仍有效):

  1. 在终端中运行:
echo '[Unit]
Description=Fix amd flickering on high Hz monitors.
    
[Service]
ExecStart=/usr/bin/amdfix_script.sh
    
[Install]
WantedBy=multi-user.target' | sudo tee /etc/systemd/syste/amdfix_service.service
  1. 在终端中运行:
sudo chmod 644 /etc/systemd/system/amdfix_service.service
  1. 在终端中运行(如果需要,可以更改'low'为。我个人选择:gpu 噪音较小,而且我没有看到任何性能下降。):'high''low'
echo "#!/bin/bash
echo 'low' | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level" | sudo tee /usr/bin/amdfix_script.sh
  1. 在终端中运行:
sudo chmod +x /usr/bin/amdfix_script.sh
  1. 在终端中运行:
sudo systemctl enable amdfix_service.service
  1. 在终端中运行:
sudo systemctl start amdfix_service.service

要检查其是否在终端中运行:

sudo systemctl status amdfix_service.service

输出应该有文本“amdfix_service.service:成功”。

全做完了。


更改性能级别完成所有步骤后,再次以所需的性能级别运行“3)”步骤中的命令,'low'或者'high' 然后运行

sudo systemctl restart amdfix_service.service

答案2

我对 Linux 完全陌生,但我遇到了同样的问题...我正在使用 Ubuntu 20.04,我的 gpu 是 ADM Radeon rx 5700 xt。

如果我使用以下命令启动脚本,它将起作用

sudo systemctl start amdfix_service.service

但重启后它不起作用。我总是在启动后运行该命令。如果我使用

sudo systemctl status amdfix_service.service

在运行脚本之前,我得到以下输出:

mdfix_service.service - Fix amd flickering on high Hz monitors.
 Loaded: loaded (/etc/systemd/system/amdfix_service.service; enabled; vendor preset: enabled)
 Active: failed (Result: exit-code) since Sun 2020-05-17 12:32:19 CEST; 1min 45s ago
Process: 779 ExecStart=/usr/bin/amdfix_script.sh (code=exited, status=1/FAILURE)
Main PID: 779 (code=exited, status=1/FAILURE)
Mai 17 12:32:19 leonPC sudo[792]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/tee /sys/class/drm/card0/device/power_dpm_force_performance_level
Mai 17 12:32:19 leonPC sudo[792]: pam_unix(sudo:session): session opened for user root by (uid=0)
Mai 17 12:32:19 leonPC amdfix_script.sh[808]: tee: /sys/class/drm/card0/device/power_dpm_force_performance_level: Permission denied
Mai 17 12:32:19 leonPC amdfix_script.sh[808]: low
Mai 17 12:32:19 leonPC sudo[792]: pam_unix(sudo:session): session closed for user root
Mai 17 12:32:19 leonPC systemd[1]: amdfix_service.service: Main process exited, code=exited, status=1/FAILURE
Mai 17 12:32:19 leonPC systemd[1]: amdfix_service.service: Failed with result 'exit-code'.

因此,amdfix_script.sh 似乎没有写入权限

sys/class/drm/card0/device/power_dpm_force_performance_level  

你知道该如何修复它吗?

相关内容