Что такое 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.
Direct Rendering Infrastructure, также известная как DRI, это платформа для предоставления прямого доступа к графическому оборудованию безопасным и эффективным методом. Она также включает модификации для X-сервера, для многих клиентских библиотек и для ядра. Основная же цель DRI - создание эффективной реализации OpenGL.
Что такое DRM и как он взаимодействует с Xorg?
DRM (Direct Rendering Manager) это дополнение к Xorg, которое добавляет поддержку 3D ускорения для видеокарт, путем добавления модуля ядра, специально предназначенного для поддержки аппаратного ускорения.
Это руководство для тех, кто не может заставить аппаратное ускорение работать с Xorg. DRM поддерживает следующие драйверы:
Смотрите домашнюю страницу DRI за более подробной информацией и документацией.
Вопросы, предложения итп направляйте на e-mail Donnie Berkholz.
2. Установка 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 (Убедитесь /usr/src/linux указывает на текущее ядро.) # 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) (Параметра agpgart нет на 64-битных ядрах, просто выберите поддержку вашего набора микросхем.) <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. Настройка аппаратного ускорения
Откройте /etc/X11/xorg.conf в вашем любимом текстовом редакторе, и подредактируйте его, чтобы включить DRI и GLX.
Листинг 3.1: xorg.conf |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
(Замените 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. |
Перезагрузите ваш компьютер с новым ядром и зайдите как обычный пользователь. Пришло время проверить работает ли аппаратное ускорение и как хорошо. glxinfo и glxgears часть пакета mesa-progs, убедитесь, что он установлен, прежде чем пользоваться этими командами.
Листинг 4.1: Проверка ускорения |
$ startx (Не нужно подгружать модули вашего драйвера или agpgart.) (Они загрузятся автоматически.) $ glxinfo | grep rendering direct rendering: Yes (Если оно говорит "No", у вас не работает 3D ускорение.) $ glxgears (Сравните ваш показатель кадров в секунду (FPS) с показаниями до установки DRM. Число должно быть в разы больше. Проделайте это когда процессор не загружен, если возможно. |
Примечание: 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" (Это увеличило FPS с 609 до 618.) Option "AGPFastWrite" "True" (Это не дало значительного эффекта, но оно может привести к нестабильности компьютера.) (Вам также может понадобиться включить это в BIOS.) Option "EnablePageFlip" "True" (Это увеличило FPS с 618 до 702. Это также "опасно", но немного людей сообщило о проблемах.) ... EndSection |
Предупреждение: Включение AGPFastWrite на наборах микросхем VIA очень часто приводит к зависанию машины. Наборы микросхем VIA плохо дружат с быстрой записью, так что используйте ее на свой страх и риск. |
Примечание: Учтите, если вы хотите заставить работать быструю запись, вы должны сначала включить соответствующий параметр в BIOS. |
Если вы хотите установить другие возможности, читайте на сайте DRI, или features listing на Sourceforge.
Оно не работает. У меня нет ускорения, и я не могу сказать почему.
Попробуйте 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" |
Текст этого документа распространяется на условиях лицензии Creative Commons - Attribution / Share Alike.