我希望即使我使用的是 Pop!_OS,在这里发布我的问题也不会有太大影响。这个问题也发生在 Manjaro live usb 上。
我正在使用
- Ryzen 1500x CPU,
- 16GB RAM,
- MSI B350m Gaming Pro 主板,配备 RX 580 8GB 版本,
- 显示器是 AOC G2260VWQ6 1920x1080x75hz。
启动和登录后一切都正常,但是,关闭屏幕然后打开,从屏幕保护程序返回,更改显示设置,使屏幕“重新启动”或任何类似操作,同时刷新率超过 60hz,我的屏幕约为 75hz,开始出现奇怪的闪烁。
以下是针对不同情况的视频链接:
登录后一切正常:https://streamable.com/am3kp
锁定后屏幕开始闪烁(一秒后关闭屏幕)然后重新登录:https://streamable.com/meeiz
通过更改分辨率并恢复来修复闪烁:https://streamable.com/5l5z2
有时它仍然可以正常工作,但只发生过一次,多次重新启动屏幕都没有开始闪烁,直到重新启动。
我使用 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
要永久修复此问题(即使重启后仍有效):
- 在终端中运行:
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
- 在终端中运行:
sudo chmod 644 /etc/systemd/system/amdfix_service.service
- 在终端中运行(如果需要,可以更改
'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
- 在终端中运行:
sudo chmod +x /usr/bin/amdfix_script.sh
- 在终端中运行:
sudo systemctl enable amdfix_service.service
- 在终端中运行:
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
你知道该如何修复它吗?