Надеюсь, что я не публикую здесь свой вопрос, даже если я использую Pop! _OS. Проблема также возникает на USB-накопителе Manjaro live.
Я использую
После загрузки и входа в систему все в порядке, однако после выключения и последующего включения экрана, возврата из заставки, изменения настроек отображения, которые заставляют экран «перезагружаться» или чего-то подобного, при частоте обновления более 60 Гц , что составляет ~ 75 Гц для моего экрана, начинает происходить странное мерцание.
Вот ссылки с видео для разных ситуаций:
После входа в систему все в порядке: https://streamable.com/am3kp
Экран начинает мерцать после блокировки (через секунду отключается экран) а затем снова войдите в систему: https://streamable.com/meeiz
Исправление мерцания путем изменения разрешения и возврата: https://streamable.com/5l5z2
Иногда это все еще работает хорошо, но это произошло только один раз, при многократном перезапуске экрана мерцание не начиналось до перезагрузки.
Я тестировал его с использованием как DisplayPort, так и HDMI, при более высоких частотах обновления при более низком разрешении проблема все еще возникает.При переключении на другое разрешение и использовании ~ 75 Гц мерцание не исчезает.
Это происходит как в Mesa версии 18, так и в 19, в Manjaro это происходит даже при переходе на версию ядра 5. Конечно, проблема не возникает в Windows.
Я не настолько продвинут в Linux, поэтому не знаю, как это исправить. Пожалуйста помоги.
РЕДАКТИРОВАТЬ: Немного поискав, я нашел обходной путь. Мне пришлось изменить «auto» на «high» в файле / sys / class / drm / card0 / device / power_dpm_force_performance_level. Ссылка на ветку, в которой я нашел обходной путь: https://bbs.archlinux.org/viewtopic.php?id=244398
Хорошее объяснение на 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] Описание = Исправлено мерцание amd на мониторах с высокой частотой.
[Сервис] ExecStart = / usr / bin / amdfix_script.sh
[Установить] WantedBy = multi-user.target '| sudo tee /etc/systemd/system/amdfix_service.service
Выполнить в терминале:
sudo chmod 644 /etc/systemd/system/amdfix_service.service
Выполнить в терминале (изменить 'низкий' на 'высокий' если хотите. Лично я выбираю "низкий": графический процессор менее шумный, и я не вижу снижения производительности.):
echo '#! / bin / bash эхо "низкий" | 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: Succeeded.»
Все готово.
Чтобы изменить уровень производительности после того, как вы выполнили все шаги, снова выполните команду внутри шага «3)» с желаемым уровнем производительности «низкий» или «высокий». А затем запустите
sudo systemctl restart amdfix_service.service
Я полностью новичок в Linux, но у меня та же проблема... Я использую Ubuntu 20.04, и мой графический процессор - 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
У вас есть идеи, как это исправить?