Age*_*gen 5 screen mesa display-resolution amd-graphics amd-ryzen
我希望即使我使用的是 Pop!_OS,我在这里发布我的问题也没有太大区别。在 Manjaro live usb 上也会出现这个问题。
我正在使用
启动并登录后一切正常,但是,在关闭屏幕然后再打开后,从屏幕保护程序返回,更改显示设置使屏幕“重新启动”或任何类似的设置,同时刷新率超过 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
小智 2
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
Run Code Online (Sandbox Code Playgroud)
或者
echo 'high' | sudo tee sys/class/drm/card0/device/power_dpm_force_performance_level
Run Code Online (Sandbox Code Playgroud)
要永久修复它(即使重新启动后也将起作用):
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
Run Code Online (Sandbox Code Playgroud)
sudo chmod 644 /etc/systemd/system/amdfix_service.service
Run Code Online (Sandbox Code Playgroud)
'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
Run Code Online (Sandbox Code Playgroud)
sudo chmod +x /usr/bin/amdfix_script.sh
Run Code Online (Sandbox Code Playgroud)
sudo systemctl enable amdfix_service.service
Run Code Online (Sandbox Code Playgroud)
sudo systemctl start amdfix_service.service
Run Code Online (Sandbox Code Playgroud)
要检查其是否在终端中运行:
sudo systemctl status amdfix_service.service
Run Code Online (Sandbox Code Playgroud)
输出应包含文本“amdfix_service.service:成功”。
全做完了。
要在完成所有步骤后更改性能级别,请使用所需的性能级别再次运行“3)”步骤中的命令'low',或者'high'
然后运行
sudo systemctl restart amdfix_service.service
Run Code Online (Sandbox Code Playgroud)
小智 0
我对 Linux 完全陌生,但我有同样的问题...我使用的是 Ubuntu 20.04,我的 GPU 是 ADM Radeon rx 5700 xt。
如果我用以下脚本启动它,该脚本就会起作用
sudo systemctl start amdfix_service.service
Run Code Online (Sandbox Code Playgroud)
但重启后就不行了。我总是必须在启动后运行该命令。如果我检查状态
sudo systemctl status amdfix_service.service
Run Code Online (Sandbox Code Playgroud)
在运行脚本之前,我得到以下输出:
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'.
Run Code Online (Sandbox Code Playgroud)
所以看起来,amdfix_script.sh没有权限写入
sys/class/drm/card0/device/power_dpm_force_performance_level
Run Code Online (Sandbox Code Playgroud)
你知道如何解决这个问题吗?