Руководство по аппаратному 3D ускорению
1.
Введение
Что такое 3D ускорение и почему оно мне нужно?
С аппаратным 3D ускорением, трехмерные изображения создаются графическим
процессором на вашей видеокарте, заместо использования ценных ресурсов ЦП. Это
говорит в пользу "аппаратноного ускорения" заместо "программного ускорения",
потому как без 3D ускорения процессор вынужден отрисовывать все самостоятельно,
используя библиотеки Mesa, которые требуют значительной вычислительной мощности.
Xorg стандартно поддерживает аппаратное 2D ускорение, но зачастую в нем нет
аппаратного 3D ускорения. 3D ускорение важно в случаях, когда происходит
отрисовка 3D объектов, как например игры, 3D CAD и моделирование.
Как мне получить аппаратное 3D ускорение?
Во многих случаях, одновременно существуют бинарные и открытые драйверы.
Открытые драйверы предпочтительнее, так как мы используем Linux, а открытость
есть один из основных его принципов. Иногда бинарные драйверы являются лишь
дополнением, как в случае карт nVidia. Бинарые драйверы это
x11-drivers/nvidia-drivers для карт nVidia и
x11-drivers/ati-drivers для карт ATI. Открытые драйверы это
media-video/ati-gatos для карт ATI, которые нацелены на более полную
поддержку возможностей карт ATI.
What is DRI?
Direct Rendering
Infrastructure, также известная как DRI, это платформа для предоставления
прямого доступа к графическому оборудованию безопасным и эффективным методом.
Она также включает модификации для X-сервера, для многих клиентских библиотек
и для ядра. Основная же цель DRI - создание эффективной реализации OpenGL.
Что такое DRM и как он взаимодействует с Xorg?
DRM (Direct Rendering Manager) это дополнение к Xorg, которое добавляет
поддержку 3D ускорения для видеокарт, путем добавления модуля ядра, специально
предназначенного для поддержки аппаратного ускорения.
Конечная цель
Это руководство для тех, кто не может заставить аппаратное ускорение
работать с Xorg. DRM поддерживает следующие драйверы:
- 3dfx
- intel
- matrox
- rage128
- radeon
- mach64
- sis300
- via
Смотрите домашнюю страницу DRI за
более подробной информацией и документацией.
Обратная связь
Вопросы, предложения итп направляйте на e-mail Donnie Berkholz.
2.
Установка Xorg и конфигурация ядра
Установка Xorg
Пожалуйста воспользуйтесь Описанием
настройки X-сервера чтобы получить рабочий Xorg.
Настройка вашего ядра
Выясним какой у вас набор микросхем и включим его в сборку.
Листинг 2.1: Проверка вашего набора микросхем AGP |
# emerge pciutils; lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
|
Если ваш набор микросхем не поддерживается ядром, возможно вам поможет использование
agp=try_unsupported как параметра ядра. В результате будут использованы
стандартные правила Intel для поддержки AGP. Чтобы добавить этот параметр,
отредактируйте файл настроек вашего загрузчика.
Большинство, если не все, ядра имеют эти параметры. В примере использовалось
стандартное ядро gentoo-sources.
Листинг 2.2: Настройка ядра |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 2007-02-14 20:12 /usr/src/linux -> linux-2.6.18-gentoo-r4
# cd /usr/src/linux
# make menuconfig
|
Листинг 2.3: Параметры make menuconfig |
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Device drivers --->
Character devices --->
<M> /dev/agpgart (AGP Support)
<M> Intel 440LX/BX/GX, I8xx and E7x05 support
<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
|
Сборка и установка ядра
Листинг 2.4: Сборка и установка ядра |
# make && make modules_install
|
Не забудьте подредактировать grub.conf или lilo.conf
и запустить /sbin/lilo, если вы используете LILO.
3.
Настройка аппаратного ускорения
Правка Xorg.conf
Откройте /etc/X11/xorg.conf в вашем любимом текстовом редакторе, и
подредактируйте его, чтобы включить DRI и GLX.
Листинг 3.1: xorg.conf |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "dri"
Mode 0666
EndSection
|
Изменения в modules.autoload.d
Вам необходимо добавить имя модуля, который использует ваша карточка в
/etc/modules.autoload.d/kernel-2.6, чтобы обеспечить
загрузку модуля автоматически при запуске системы.
Листинг 3.2: Editing /etc/modules.autoload.d/kernel-2.6 |
intel-agp
|
Примечание:
Если вы собрали agpgart модулем вам нужно добавить и его в
/etc/modules.autoload.d/kernel-2.6.
|
4.
Тестирование 3D ускорения
Перезагрузка с новым ядром
Перезагрузите ваш компьютер с новым ядром и зайдите как обычный пользователь.
Пришло время проверить работает ли аппаратное ускорение и как хорошо.
glxinfo и glxgears часть пакета mesa-progs, убедитесь, что
он установлен, прежде чем пользоваться этими командами.
Листинг 4.1: Проверка ускорения |
$ startx
$ glxinfo | grep rendering
direct rendering: Yes
$ glxgears
|
Примечание:
FPS может быть ограничем частотой развертки монитора, учтите это, если
glxgears показывает лишь 70-100 кадров в секунду.
games-fps/ut2004-demo это лучший тест производительности, он может
показать реальные результаты.
|
5.
Увеличение производительности
Получите как можно больше от аппаратного ускорения
Несколько параметров могут увеличить производительность на 30% (или более).
Установите их в /etc/X11/xorg.conf. Однако, сначала вам
необходимо выяснить, поддерживает ли их ваша материнская плата и видеокарта.
Во-первых, проверим поддерживает ли ваша видеокарта быструю запись. Мы сделаем
это на основе вывода lspci. Точнее, нам понадобится информация о
"VGA compatible controller"
Листинг 5.1: Video card check |
# lspci -vv
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY (prog-if 00 [VGA])
. . .
Capabilities: [58] AGP version 2.0
Status: RQ=48 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
|
Среди всей прочей информации, нас интересует FW в субсекции "Status"
секции AGP "Capabilites". Если FW+ есть в строке "Status", это значит,
что ваша карточка поддерживает быструю запись. Сейчас проверим, поддерживает
ли ее материнская плата.
Важно:
Если вы не видите FW+, а напротив, FW-, вы не сможете включить
быструю запись в xorg.conf. Ваша карточка не поддерживает ее.
|
Сейчас мы убедимся, что материнская плата поддерживает быструю запись. Для
этого взглянем на секцию "Host bridge" вывода lspci.
Листинг 5.2: Motherboard check |
# lspci -vv
00:00.0 Host bridge: Intel Corporation 82830 830 Chipset Host Bridge (rev 02)
. . .
Capabilities: [a0] AGP version 2.0
Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
|
И снова взглянем на субсекцию "Status" секции AGP "Capabilities". Нам нужно
FW. Если вы видите FW+, ваша материнская плата поддерживает
быструю запись.
Важно:
Информация о видеокарте, а также информация о материнской плате должны показать
поддержку FW. Если одно из устройств показывает FW- в "Status",
вы не сможете включить поддержку быстрой записи в xorg.conf.
|
Понимая, что все идет нормально и ваша видеокарта наряду с вашей
материнской платой поддерживает быструю запись, давайте включим этот
параметр в /etc/X11/xorg.conf и получим максимальную
производительность от вашего железа.
Листинг 5.3: xorg.conf |
Section "Device"
Option "AGPMode" "4"
Option "AGPFastWrite" "True"
Option "EnablePageFlip" "True"
...
EndSection
|
Предупреждение:
Включение AGPFastWrite на наборах микросхем VIA очень часто приводит
к зависанию машины. Наборы микросхем VIA плохо дружат с быстрой записью, так что
используйте ее на свой страх и риск.
|
Примечание:
Учтите, если вы хотите заставить работать быструю запись, вы должны сначала
включить соответствующий параметр в BIOS.
|
Если вы хотите установить другие возможности, читайте на сайте
DRI, или features
listing на Sourceforge.
6.
Разрешение проблем
Оно не работает. У меня нет ускорения, и я не могу сказать почему.
Попробуйте modprobe radeon перед запуском X сервера (замените radeon
именем вашего драйвера). Также попробуйте собрать agpgart в ядро, а не модулем.
Когда я запускаю startx, я получаю эту ошибку: "[drm] failed to load kernel
module agpgart"
Это потому, что agpgart собран внутри ядра, а не модулем. Игнорируйте ее, если не
возникает проблем.
У меня Radeon, и я хочу TV-Out.
Взгляните на драйвера ati-gatos. emerge -av ati-gatos.
Оно не работает. Моя картачка настолька новая и крутая, что она не поддерживается
полностью.
Попытайтесь использовать двоичные драйвера. Страничка ati-drivers
находится на http://ati.amd.com/support/drivers/linux/linux-radeon.html
(для x86) и на
http://ati.amd.com/support/drivers/linux64/linux64-radeon.html
(для amd64). Если эти не поддерживаюь ее, используйте fbdev. Он медленный,
но работает.
У меня PCI карточка и она не работает. Помогите!
Исправьте /etc/X11/xorg.conf. В секции "Device" включите ForcePCIMode.
Листинг 6.1: Включение ForcePCIMode |
Option "ForcePCIMode" "True"
|
7.
Выражаем благодарность
-
Christopher Webber за содействие в разрешении вопросов о смене или
пересборке ядер.
-
Steve, за содействие во взаимодействии между dri и DRI в XF86Config
8.
Ссылки
- http://forums.gentoo.org/viewtopic.php?t=46681
- http://forums.gentoo.org/viewtopic.php?t=29264
- http://dri.freedesktop.org/
- http://www.retinalburn.net/linux/dri_status.html
Текст этого документа распространяется на условиях лицензии
Creative Commons
- Attribution / Share Alike.
|