
У меня на компьютере GeForce RTX 2070 SUPER, на котором запущен Arch с GNOME.
Я помню, что у меня были разрывы экрана до недавних обновлений драйвера nvidia (в частности, с 450.66-21 до 450.66-22 на Arch), но активация Full Composition Pipeline смогла исправить это. Однако после обновления разрывы экрана вернулись. Обновление до nvidia-455 не исправило ни одного из разрывов экрана. На протяжении всего этого процесса Full Composition Pipeline был активен и смог уменьшить некоторые разрывы экрана, но не все из них все время.
Без настройки режима ядра и без дополнительных параметров в моем xorg.conf, кроме Full Composition Pipeline, разрывов экрана нет, но есть проблемы с приостановкой. Я вижу пустой экран сразу после пробуждения, который зависает на секунду или две, прежде чем экран загрузится. Такая проблема с приостановкой не возникала до вышеуказанных обновлений драйвера nvidia. После загрузки экрана некоторые приложения (например, anki и vscode) имеют черные артефакты и другие графические проблемы. Например, в anki весь экран черный, а в vscode я вижу несколько черных прямоугольников по бокам, а текст для приглашения терминала исчезает. Изменение рабочих пространств избавляет от пустого экрана anki, в то время как наведение курсора на артефакты и повторное открытие терминала в приложении устраняет проблемы vscode. Тем не менее, это чрезвычайно раздражающая проблема, которая также влияет на некоторые темы GNOME, которые я пытался применить. Я подозреваю, что эта же проблема влияет и на другие приложения.
Я потратил около полутора часов на изучение проблемы в Интернете и попытки найти разные решения, но все безрезультатно.
Настройка режима (например, nvidia-drm.modeset=1) без параметров TripleBuffering и IndirectGLXProtocol в xorg.conf не приводит к проблемам с приостановкой, но вызывает значительные разрывы экрана
Включение TripleBuffering и/или выключение IndirectGLXProtocol приводит к указанным выше проблемам с приостановкой, но не к разрывам экрана (с настройкой режима ядра и без нее).
Как видите, у меня либо остались разрывы экрана, но нет проблем с задержкой, либо нет разрывов экрана и проблем с задержкой. Понижение только пакетов nvidia до версии до обновления драйвера, которое сломало мою установку, ломает lightdm. Понижение до зеркала 17 сентября (до обновления драйвера) выполнимо, но не идеально, так как я бы предпочел обновления программного обеспечения с графическими неудобствами, чем застрявший во времени компьютер.
Я не совсем уверен, что это проблема именно с драйвером nvidia, но, учитывая вышеизложенные события, я считаю это вполне вероятным.
Пожалуйста, сообщите мне, если у вас возникли те же проблемы. Мне бы также хотелось узнать, какие решения вы пробовали.
решение1
Я решил проблему!
Добрые ребята на форумах Arch Linux выявили несоответствия с разрывами экрана, которые у меня были с состояниями гонки во время процесса загрузки. Если модуль nvidia загружается правильно, то у меня нет разрывов экрана. Но если нет, то компьютер возвращается к какому-то другому драйверу (я почти уверен, что nouveau), и происходит разрыв экрана. Чтобы исправить это, я гарантирую, что модули nvidia всегда загружаются правильно, добавляя модули nvidia в список MODULES
в /etc/mkinitcpio.conf следующим образом:
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
Я также узнал, что графические проблемы приостановки, с которыми я столкнулся, вызваны тем, что nvidia избавляется от того, что она считает "ненужной" видеопамятью во время приостановки. Чтобы исправить это, я загрузил модуль nvidia с экспериментальной опцией, добавив эту строку в мой /etc/modprobe.d/nvidia.conf:
options nvidia NVreg_PreserveVideoMemoryAllocations=1
Наконец, я пересобрал образ initramfs с помощью sudo mkinitcpio -p linux
и перезагрузился. Теперь nvidia стабильно загружается во время загрузки (я это понял, потому что больше нет разрывов экрана!), и все графические проблемы для anki и vscode исчезли.