Странное мерцание / разрывы экрана при использовании 75 Гц на графическом процессоре AMD

Надеюсь, что я не публикую здесь свой вопрос, даже если я использую Pop! _OS. Проблема также возникает на USB-накопителе Manjaro live.

Я использую

  • процессор Ryzen 1500x,
  • 16 ГБ ОЗУ,
  • материнскую плату MSI B350m Gaming Pro с версией RX 580 8 ГБ,
  • Монитор - AOC G2260VWQ6 1920x1080x75hz.

После загрузки и входа в систему все в порядке, однако после выключения и последующего включения экрана, возврата из заставки, изменения настроек отображения, которые заставляют экран «перезагружаться» или чего-то подобного, при частоте обновления более 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

5
задан 14 April 2019 в 00:03

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

ИЛИ

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

Чтобы исправить это навсегда (это будет работать даже после перезагрузки):

  1. Выполнить в терминале:

    echo '[Unit] Описание = Исправлено мерцание amd на мониторах с высокой частотой.

    [Сервис] ExecStart = / usr / bin / amdfix_script.sh

    [Установить] WantedBy = multi-user.target '| sudo tee /etc/systemd/system/amdfix_service.service

  2. Выполнить в терминале:

    sudo chmod 644 /etc/systemd/system/amdfix_service.service

  3. Выполнить в терминале (изменить 'низкий' на 'высокий' если хотите. Лично я выбираю "низкий": графический процессор менее шумный, и я не вижу снижения производительности.):

    echo '#! / bin / bash эхо "низкий" | sudo tee / sys / class / drm / card0 / device / power_dpm_force_performance_level '| sudo tee /usr/bin/amdfix_script.sh

  4. Выполнить в терминале:

    sudo chmod + x /usr/bin/amdfix_script.sh

  5. Выполнить в терминале:

    sudo systemctl enable amdfix_service.service

  6. Выполнить в терминале:

    sudo systemctl start amdfix_service.service

Чтобы проверить, работает ли он в терминале:

sudo systemctl status amdfix_service.service

в выводе должен быть текст «amdfix_service.service: Succeeded.»

Все готово.


Чтобы изменить уровень производительности после того, как вы выполнили все шаги, снова выполните команду внутри шага «3)» с желаемым уровнем производительности «низкий» или «высокий». А затем запустите

sudo systemctl restart amdfix_service.service
1
ответ дан 5 April 2020 в 10:59

Я полностью новичок в 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  

У вас есть идеи, как это исправить?

0
ответ дан 17 May 2020 в 10:40

Другие вопросы по тегам:

Похожие вопросы: