Nouveau (Українська)

Повʼязані статті
NVIDIA
Xorg (Українська)
Bumblebee
У цій статті розглядається відкритий драйвер
Nouveau
для відеокарт Nvidia. Якщо ви хочете ознайомитися із пропієтарним драйвером, перегляньте сторінку
NVIDIA
.
Щоб визначити функції, які Nouveau підтримує з вашою відеокартою, спочатку знайдіть її в цьому списку
(кодові назви Nouveau)
. Порівняйте потрібну кодову назву з
таблицею функцій (Feature Matrix)
.
Встановлення
Для драйвера DDX (який надає 2D прискорення в сесії X.org) встановіть пакунок
xf86-video-nouveau
Для підтримки 3D-прискорення, встановіть пакунок
mesa
, який надає драйвер DRI
Для підтримки 32-бітних програм встановіть пакунок
lib32-mesa
(репозитарій multilib).
Примітка
Було запропоновано не встановлювати X.org драйвер
xf86-video-nouveau
(звіт користувачів)
, а замість цього використовувати драйвер modesetting для NV50 (Tesla) та новіших відеокарт.
(Необов'язково) Щоб отримати останні вдосконалення Nouveau, встановіть такі пакети:
linux-git
AUR
libdrm-git
AUR
lib32-libdrm-git
AUR
lib32-mesa-git
AUR
mesa-git
AUR
Апаратне прискорення відео
Nouveau
підтримує
як і VA-API, так і VDPAU
Підтримка є від серії
GeForce 8
і до
Kepler (NV108)
(Але ви ще можете спробувати це все завести на Maxwell).
Але для його роботи потрібно встановити пакет прошивок
nouveau-fw
AUR
, отриманих з бінарного драйвера NVIDIA
За деталями звертайтеся до сторінки
Hardware video acceleration
Підготовка до встановлення Mesa NVK Vulkan Драйвера
Примітка
Над цим драйвером триває робота, тому можливі регресії. Можливо, ваша гра або програма не буде працювати з цим драйвером, але є велика ймовірність того, що в найближчому майбутньому вона запрацює.
Для драйвера
NVK
необхідне ядро версії 6.7 та више і
mesa
версії 24.1 та вище.
Перш ніж використовувати NVK, ви повинні видалити пропієтарний драйвер. Необхідно видалити ці пакунки з переліку (та їх lib32 і модулі DKMS):
nvidia
[
пакет відсутній
: package not found]
,
nvidia-open
,
nvidia-lts
[
пакет відсутній
: package not found]
,
nvidia-beta
AUR
nvidia-settings
,
nvidia-utils
egl-wayland
Якщо ви використовуєте гібридний ноутбук або систему з двома графічним процесором, переконайтеся, що ви не внесли Nouveau до чорного списку менеджером графічного процесора в
/etc/modprobe.d
.
Примітка
Можливо, вам також слід видалити будь-які менеджери GPU у вашій системі, оскільки більшість із них працюють за допомогою модулів у чорному списку, які можуть заважати NVK.
Встановлення Mesa NVK
Для підтримки Vulkan (Turing
NV160
та новіших), встановіть пакунок
vulkan-nouveau
.
Для підтримки 32-бітної версії Vulkan встановіть пакет
lib32-vulkan-nouveau
Якщо хочете мати найновішу версію NVK, встановіть пакунок
vulkan-nouveau-git
AUR
та
lib32-vulkan-nouveau-git
AUR
, для підтримки 32-бітної версії Vulkan
Використання Mesa NVK
Щоб переконатися, що все працює
vulkaninfo
з
vulkan-tools
можна використовувати. Він повинен повідомити, що графічний процесор NVIDIA у вашій системі використовує драйвер NVK.
$ vulkaninfo
...
GPU id : 0 (NVIDIA GeForce RTX 3050 Ti Laptop GPU (
NVK GA107
)):
      Surface type = VK_KHR_wayland_surface
        Formats: count = 8
...
Поради та підказки стосовно графічних API
Використання NVK на відеокартах NVF0-NV140 і новіші
Якщо визначено до 1 або true, це дозволить перерахувати та використовувати всі GPU Kepler та новіші, включаючи графічні процесори, для яких апаратна підтримка погано протестована або повністю зламана.
Джерело
$ NVK_I_WANT_A_BROKEN_VULKAN_DRIVER=1
програма
Примітка
Використовуйте цю змінну, якщо вам потрібна найновіша версія Vulkan або загалом Vulkan на відеокартах нижче NV160.
Використання Zink
Так як виникають проблеми при реалізації нативного OpenGL для драйверу Nouveau, було прийнято рішення використовувати драйвер Zink.
Zink
— це драйвер Gallium, який генерує виклики API Vulkan замість того, щоб орієнтуватися на конкретну архітектуру GPU. Це можна використовувати для отримання повної підтримки OpenGL на пристроях, які підтримують лише Vulkan.
Найкраще він зараз працює на відеокартах
NV160
і вище, та надає OpenGL 4.6
Просто додайте цю змінну перед командою запуску:
$ NOUVEAU_USE_ZINK=1
програма
Як альтернативу, ви можете використовувати змінну
MESA_LOADER_DRIVER_OVERRIDE=zink
:
$ MESA_LOADER_DRIVER_OVERRIDE=zink
програма
Також, якщо у вас відеокарта нижча за
NV160
, то ви можете комбінувати дві змінні
$ NVK_I_WANT_A_BROKEN_VULKAN_DRIVER=1 NOUVEAU_USE_ZINK=1
програма
Завантаження в систему
Модуль ядра Nouveau повинен завантажуватися автоматично під час завантаження системи. Якщо це не так, перевірте наступне:
Переконайтеся, що у вас немає зайвих параметрів ядра, на кшталт
nomodeset
або
vga=
, оскільки драйвер вимагає
Kernel mode setting
Перконайтеся, що ви або якісь інші утиліти не занесли драйвер Nouveau в чорний список в
/etc/modprobe.d/
або
/usr/lib/modprobe.d/
.
Перевірте файл
/etc/X11/xorg.conf
або подібні в теці
/etc/X11/xorg.conf.d/
. Ймовірно, там залишилися якісь конфіги.
Kernel Mode Setting
Налаштування режиму ядра (KMS) підтримується Nouveau і увімкнуто за замовчуванням, починаючи з mkinitcpio v32. Для інших налаштувань див.
Налаштування режиму ядра
, щоб отримати інструкції щодо того, як увімкнути KMS якнайшвидше під час процесу завантаження.
Поради та підказки
Залишити встановленим драйвер NVIDIA
Якщо ви хочете залишити встановленим пропрієтарний драйвер NVIDIA (і не використовуєте OpenGL), але бажаєте використовувати драйвер Nouveau, виконайте наступні кроки:
Закоментуйте чорний список для драйвера Nouveau у файлах
/etc/modprobe.d/nouveau_blacklist.conf
та
/usr/lib/modprobe.d/nvidia-utils.conf
, змінивши їх так:
#blacklist nouveau
Також, можливо, вам потрібно буде закоментувати інші файли конфігурації, які пріоритезують пропрієтарний драйвер, наприклад, у
systemd-modules-load
/usr/lib/modules-load.d/nvidia-utils.conf
, та у
Udev
/usr/lib/udev/rules.d/60-nvidia.rules
. Перевірте, які файли встановив драйвер, за допомогою наступної команди:
# pacman -Ql nvidia-utils | grep conf
Потім переконайтеся, що ви вимкнули всі служби з префіксом
nvidia-
, які можуть викликати
nvidia-modprobe
для завантаження модуля під час завантаження системи. Наприклад:
$ systemctl status nvidia-persistenced.service
І якщо ви використовуєте
Xorg
, скажіть Xorg завантажити nouveau замість NVIDIA, створивши файл
/etc/X11/xorg.conf.d/20-nouveau.conf
з таким вмістом:
Section "Device"
    Identifier "Nvidia card"
    Driver "nouveau"
EndSection
Перезавантажте систему, щоб зміни набрали чинності. І перевірте, чи все завантажилось правильно, переглянувши повідомлення ядра:
# dmesg
Монітори
Завітайте на сторінку
Multihead#RandR
, де написано як налаштувати декілька моніторів за допомогою
RandR
.
Налаштування роздільної здатності консолі
Ви можете виставити роздільну здатність за допомогою
video=
в параметрах ядра (дивіться додатково:
KMS
).
Керування живленням (reclocking)
Відсутність належного керування живленням у драйвері nouveau є однією з найважливіших причин проблем із продуктивністю, оскільки під час використання більшість карт залишатимуться в стані низького енергоспоживання з нижчою тактовою частотою.
Експериментальна підтримка керування живленням графічного процесора доступна від
NV40
, і до новіших відеокарт (не враховуючи
NV130
та
NV140
).
Примітка
Відстутність керуванням живленням на відеокартах
NV130
та
NV140
є завдяки компанії Nvidia, яка запровадила підписані прошивки, які необхідні відеокартам NV140 та NV160. Якщо раніше можна було згенерувати прошивку та написати PMU для відеокарти, то для цих карт потрібна прошивка від Nvidia. Якщо у вас вона є, або ви хочете її видобути з пакету драйверів Nvidia, напишіть будь ласка в канал
IRC: #nouveau
.
Ця частина вікі (4.4 та 4.4.2) буде відноситися тільки для серії відеокарт від
NV40
, і до
NV120
. Для
NV160
дивіться пункт 4.4.1
Для підтримки керування живленням потрібне ядро 4.5 та вище, керувати живленням можна через інтерфейс debugfs, який розташований за шляхом
/sys/kernel/debug/dri/*/pstate
Щоб перевірити доступні рівні та поточне значення, виконайте:
# cat /sys/kernel/debug/dri/0/pstate
Щоб виставити потрібний параметр, виконайте
# echo
pstate
> /sys/kernel/debug/dri/0/pstate
Керування живленням для NV160 та вище
Вам потрібно мати ядро 6.7 та вище.
Додайте
nouveau.config=NvGspRm=1
до
параметрів ядра Linux
. Це надає вам змогу використовувати автоматичне керування живленням.
Додаткові утиліти
Встановіть пакунок
nouveau-reclocking
AUR
Про пакунок:
Ця утиліта на Lua має допомогти спростити процес reclocking та зробити це легше, без додаткових зусиль в терміналі. Зауважте, що якщо ваш графічний процесор не підтримує reclocking, то ця утиліта напевно для вас марна витрата часу.
Джерело
Для перевірки, передивіться доступні профілі
# nouveau-reclocking --list
Якщо у вас відобразився список pstate, то можна спробувати виставити максимальне число:
# nouveau-reclocking --max
Примітка
Якщо ви використовуєте один із наведених нижче варіантів: --max, --min, або --pstate без уточнення --card, скрипт автоматично виявить картки доступні для повторного блокування та встановіть для них відповідний рівень Pstate. Також зауважте, що будь-які зміни, зроблені без вказівки параметра --save, працюватимуть лише до перезавантаження.
Збережіть профіль, щоб він не скинувся та автоматично застосовувався після перезавантаження:
# nouveau-reclocking --save
Керування вентиляторами
Якщо це реалізовано для вашої карти, ви можете налаштувати керування вентилятором через
/sys
$ find /sys -name pwm1_enable
/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon1/pwm1_enable
$ readlink /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/driver
../../../../bus/pci/drivers/nouveau
pwm1_enable
можна встановити на 0, 1 або 2, що означає НЕМАЄ, РУЧНИЙ і АВТОМАТИЧНИЙ контроль вентилятора. Якщо встановлено ручне керування вентилятором, ви можете встановити
pwm1
вручну, наприклад до 40 на 40%.
Попередження
Використовуйте на свій ризик, не перегрівайте свою відеокарту.
Ви також можете встановити це за правилом udev:
$ cat /etc/udev/rules.d/50-nouveau-hwmon.rules
ACTION=="add", SUBSYSTEM=="hwmon", DRIVERS=="nouveau", ATTR{pwm1_enable}="2"
Джерела:
https://floppym.blogspot.de/2013/07/fan-control-with-nouveau.html
https://web.archive.org/web/20141031191559/https://kalgan.cc/blog/posts/Controlling_nVidia_cards_fans_with_nouveau_in_Debian/
Optimus
У вас є два рішення для використання
Optimus
на ноутбуці (гібридна графіка, коли у вас два графічних процесори на вашому ноутбуці):
bumblebee
та
PRIME
Вертикальна синхронізація
Композитори Xorg схильні виявляти проблеми з Nouveau. На відміну від більшості з них,
Picom
пропонує безліч варіантів налаштування для більш гладкого результату без розривів. Конфігурація, яка, як очікується, дасть хороший результат, буде такою:
$ picom -b --unredir-if-possible --backend xr_glx_hybrid --vsync --use-damage --glx-no-stencil
Примітка
В віконих менеджерах KWin, Mutter, XFWM розривів не помічено.
Порада
Не забудьте вимкнути компонування віконного менеджера DE, наприклад KWin, коли користуєтеся іншим компонувальником.
Усунення несправностей
Щоб отримати додаткову інформацію в логах, додайте
drm.debug=14
та
log_buf_len=16M
до
параметрів ядра
Створіть докладний журнал Xorg:
$ startx -- -logverbose 9 -verbose 9
Переглянути параметри та значення завантаженого відеомодуля:
$ modinfo -p video
Вимкніть MSI
Якщо у вас все ще виникають проблеми із завантаженням модуля або запуском X-сервера, додайте
nouveau.config=NvMSI=0
до ваших параметрів ядра.
Джерело:
[1]
Фантомний відеовихід
Драйвер nouveau може виявити «фантомні» виходи. Наприклад, і VGA-1, і LVDS-1 відображаються як підключені, але присутній лише LVDS-1. Це спричиняє проблеми з відображенням і/або запобігає призупиненню під час закриття кришки.
Параметри ядра
Проблему можна також подолати, вимкнувши фантомний вихід (VGA-1 у наведених прикладах) за допомогою параметрів ядра:
video=VGA-1:d
Де d = вимкнено
Модуль ядра nouveau також має можливість вимкнути виявлення ТВ-виходу
tv_disable=1
xorg.conf
Фантомний вихід також можна вимкнути в Xorg, додавши наступне до
/etc/X11/xorg.conf.d/20-nouveau.conf
:
Section "Monitor"
   Identifier "VGA-1"
   Option "Ignore" "1"
EndSection
Джерело вирішення
Xrandr
Xrandr може вимкнути вихід:
$ xrandr --output VGA-1 --off
Це можна додати до
конфігурації xinit
.
Випадкові блокування з повідомленнями про помилки ядра
Окремі мікросхеми Nvidia з Nouveau можуть спричиняти випадкові блокування системи та частіше викидати багато повідомлень ядра, що спостерігається за допомогою dmesg . Спробуйте додати
nouveau.noaccel=1
до параметрів ядра.
Джерело
.
Зауважте, що використання параметра ядро
nouveau.noaccel=1
може спричинити ~%100 використання ЦП на Wayland, якщо немає iGPU або
iGPU вимкнено на заводі
. Ви можете перейти до сеансу X11 або віддати перевагу додаванню
LIBGL_ALWAYS_SOFTWARE=1
змінна середовища для wayland, щоб повністю вимкнути апаратне прискорення OpenGL.
Як альтернативу ви також можете використовувати
QT_XCB_FORCE_SOFTWARE_OPENGL=1
змінна середовища , щоб вимкнути прискорення OpenGL у програмах Qt.
Таблиця плоскої панелі недійсна (Flat Panel Table Invalid)
Відеокарти NVIDIA з останніми наборами мікросхем можуть спричинити проблеми із запуском, зокрема неможливість запуску X11 і зависання lspci на невизначений час
[2]
[3]
[4]
[5]
[6]
.
Це може порушити дію живих дистрибутивів/інсталяційних носіїв. Це можна виявити, запустивши lspci або перевіривши журнал systemd на наявність помилки:
nouveau E[     DRM]Pointer to flat panel table invalid
Система може запуститися, якщо драйвер Nouveau вимкнено шляхом передачі таких
параметрів ядра
:
modprobe.blacklist=nouveau
Потім драйвер Nouveau можна завантажити за допомогою
# modprobe nouveau
Після цього система повинна працювати правильно. Якщо у вас є інша графічна карта Nvidia або ви просто хочете бути в безпеці, ви можете вимкнути несправну карту за допомогою:
$ echo 1 > /sys/bus/pci/devices/
[card device id]
/remove