Xorg/Руководство по аппаратному 3D-ускорению

From Gentoo Wiki
< Xorg
Jump to:navigation Jump to:search
This page is a translated version of the page Xorg/Hardware 3D acceleration guide and the translation is 89% complete.
Outdated translations are marked like this.


Этот документ руководство по настройке аппаратного 3D-ускорения с помощью DRM и Xorg в Gentoo.

Введение

Что такое аппаратное 3D-ускорение и зачем оно нужно?

При наличии аппаратного 3D-ускорения для создания трёхмерных изображений используется графический процессор на видеокарте заместо использования ценных ресурсов процессора. Это также называется "аппаратным ускорением", а не "программным ускорением", поскольку без аппаратного 3D-ускорения ЦП вынужден отрисовывать всё самостоятельно, используя библиотеки Mesa, которые потребляют совсем немного вычислительной мощности.

While Xorg typically supports 2D hardware acceleration, it often lacks hardware 3D acceleration. Three-dimensional hardware acceleration is valuable in situations requiring rendering of 3D objects such as games, 3D CAD, and modeling.

Настройка аппаратного 3D-ускорения

Во многих случаях существуют как проприетарные драйвера, так и драйвера с открытым исходным кодом. Последние являются предпочтительными для Linux, поскольку открытость – это один из его основных принципов. Иногда проприетарные драйвера являются единственным выбором, особенно, если видеокарта настолько новая, что для неё ещё не написано драйверов с открытым исходным кодом. Проприетарные драйвера включают в себя x11-drivers/nvidia-drivers для видеокарт NVIDIA и x11-drivers/xf86-video-ati (ранее x11-drivers/ati-drivers) для старых видеокарт AMD/ATI и dev-libs/amdgpu-pro-opencl для новых AMD видеокарт.

Что такое DRI?

Direct Rendering Infrastructure, также известный как DRI, — это платформа, позволяющая получать прямой доступ к видеокарте безопасным и эффективным способом. Платформа включает в себя исправления для Xorg сервера, некоторых клиентских библиотек и для ядра. Первое важнейшее применение DRI — создание быстрых дополнений OpenGL.

Что такое DRM и как он связан с Xorg?

DRM (Direct Rendering Manager) — это дополнение к Xorg, осуществляющее 3D-ускорение путём добавления модулей ядра, необходимых для прямого доступа к видеокарте.

Основная тема

Это руководство предназначено для тех, кто не может получить прямой доступ к видеокарте, работая только с Xorg. DRM работает со следующими драйверами:

Смотрите домашнюю страницу DRI для более подробной информации и документации.

Установка Xorg и настройка ядра

Установка Xorg

Пожалуйста, прочитайте наше Руководство по настройке Xorg, чтобы установить и запустить Xorg.

Настройка ядра

Узнайте особенности необходимого оборудования.

root #emerge --ask sys-apps/pciutils
root #lspci | grep -Ei "VGA|AGP|3D"
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)

Вывод может отличаться из-за разности в аппаратном обеспечении.

Certain kernel options will be required, others may cause problems. Hardware specific resources concerning which kernel option for which hardware exist within this wiki and elsewhere.

Если видеокарта не поддерживается ядром, можно достичь некоторого успеха установив параметр ядра agp=try_unsupported. Для поддержки AGP будут использоваться стандартные функции Intel. Для добавления этого параметра, отредактируйте файл конфигурации загрузчика.

Большинство ядер должно иметь эти опции. Это было настроено с использованием стандартного ядра sys-kernel/gentoo-sources.

root #ls -dl /usr/src/linux*
lrwxrwxrwx  1 root root   19 Feb 16 16:30 /usr/src/linux -> linux-5.4.18-gentoo
drwxr-xr-x 27 root root 4096 Feb 16 21:27 /usr/src/linux-4.19.103-gentoo

Убедитесь, что /usr/src/linux является символической ссылкой на текущее ядро.

root #eselect kernel list
root #eselect kernel set

Изменив символьную ссылку, подкорректируйте параметры ядра:

root #cd /usr/src/linux
root #make menuconfig

Most, if not all, kernels should have these options set. In any case, options labeled <M> are compiled as modules and loaded-as-necessary, thus being very unlikely to break anything if not required.

This was configured using a standard sys-kernel/gentoo-sources kernel.

ЯДРО Параметры аппаратного 3D-ускорения
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Device drivers --->
   Graphics support --->
   <M> /dev/agpgart (AGP Support) --->
      (agpgart отсутствует для 64-разрядных ядер;
      нужно просто выбрать модуль для поддержки необходимой видеокарты.)
      <M> Intel 440LX/BX/GX, I8xx and E7x05 support
      (Вместо указанного выше выберете необходимую видеокарту.)
   <M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
      <M> (Из списка выберете необходимую видеокарту)

Компиляция и установка ядра

root #make && make install && make modules_install

Не забудьте перенастроить grub.conf или lilo.conf.

Если используете LILO, выполните команду:

root #lilo

Если используете GRUB2, выполните команду:

root #grub-mkconfig -o /boot/grub/grub.cfg

Добавление пользователя(ей) в группу video

Далее, добавьте нужных пользователей в группу video.

root #gpasswd -a $USER video

Настройка direct rendering

Настройка Xorg

Надо надеяться, что добавления пользователя в группу video достаточно, чтобы задействовать direct rendering. Однако, может понадобиться дополнительных настроек в директории /etc/X11/xorg.conf.d/. Имя нового конфигурационный файл, созданного в этой директории, может содержать английские буквы и цифры, и оканчиваться на .conf. Откройте любимый текстовый редактор и создайте файл с таким содержанием:

ФАЙЛ /etc/X11/xorg.conf.d/10-dri.conf
Section "Device"
  Identifier "AMD Radeon"
  Driver "radeon"
EndSection
Section "dri"
  Mode 0666
EndSection

Замените radeon на необходимый драйвер.

Изменения, необходимые для автоматической загрузки модуля

Вы должны добавить модуль, используемый вашей видеокартой, в /etc/modules-load.d/video.conf, чтобы гарантировать, что он автоматически загружается при запуске системы.

ФАЙЛ /etc/modules-load.d/video.conf
intel-agp # Замените своим драйвером
Заметка
Если agpgart был скомпилирован как модуль, вам также придётся добавить его в /etc/modules-load.d/video.conf.

Тестирование 3D-ускорения

Перезагрузка в новое ядро

Перезагрузите компьютер выбрав новое ядром и войдите в систему под обычным пользователем. Настало время посмотреть насколько хорошо работает direct rendering. glxinfo и glxgears являются частями пакета x11-apps/mesa-progs, поэтому перед тем, как запускать их, убедитесь, что этот пакет установлен.

user $startx

Нет необходимости загружать модули вашего драйвера или agpgart, даже если они были скомпилированы как модули. Они будут загружены автоматически.

user $glxinfo | grep rendering
direct rendering: Yes

Если будет выведено "No", значит 3D-ускорение не работает.

user $glxgears

Проверьте частоту обновления (FPS) при обычном разрешении экрана. Это число должно быть значительно больше, чем до настройки DRM. Сделайте это пока ЦП настолько свободен, насколько это возможно.

Заметка
FPS может быть ограничен частотой обновления вашего дисплея, поэтому примите это во внимание, если glxgears выдаёт только 70-100 FPS. games-fps/xonotic или другие 3D-игры являются более лучшими средствами сравнения эффективности.

Получение максимальной отдачи от direct rendering

Если вы хотите настроить дополнительные функции, для повышения производительности или по другим причинам, смотрите таблицу характеристик на сайте DRI или список характеристик на Sourceforge.

Устранение проблем

Проблемы с рендерингом

Попробуйте выполнить modprobe radeon перед тем, как запускать X сервер (замените radeon на название вашего драйвера). Также попробуйте скомпилировать agpgart как часть ядра, а не как модуль.

Не удалось загрузить модуль ядра agpgart во время запуска startx

error: "[drm] failed to load kernel module agpgart" после запуска startx происходит из-за того что agpgart был скомпилирован как часть ядра, а не как модуль. Не обращайте на это внимание, пока у вас не появятся проблемы.

TV-Out на видеокартах Radeon

Драйвера разрабатываются проектом GATOS, объединённым с кодовой базой Xorg. Для вывода изображения на телевизор через TV-Out ничего особенного не требуется; x11-drivers/xf86-video-ati уже будет хорошо работать.

Поддержка новых видеокарт

Попробуйте использовать проприетарные драйвера. Для видеокарт AMD используйте ati-drivers. Если она всё равно не поддерживается, то используйте fbdev. Это медленно, но работает.

Не работает видеокарта PCI

Создайте файл в /etc/X11/xorg.conf.d/ с любым названием, оканчивающимся на .conf. Добавьте туда следующее:

ФАЙЛ /etc/X11/xorg.conf.d/10-pcimode.confДобавление режима ForcePCI
Section "Device"
  Option "ForcePCIMode" "True"
EndSection

Ссылки


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Donnie Berkholz (dberkholz) , peesh, nightmorph
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.