Разделы:

Главная

О проекте

Загрузки

Документация:

Linux

BSD

Другие Unix

Программинг

HTML, XML...

Сервера

"Окна Закрой!"

MANы

 


Unoficial nVidia+Linux FAQ

Unoficial nVidia+Linux FAQ

Release Candidate версия от 05.07.2003

Автор: Nightfly aka Rostislav Gaytkulov
mail: neo@yes.net.ua or nightfly@ukr.net
web: http://nightfly.asmodeus.com.ua - Ukrainian Linux Project

Предупреждение.
Автор не несет никакой ответственности за последствия использования
даного документа а также не дает никаких гарантий работоспособности
нижеуказаных ответов в каждом конкретном случае поскольку он не является
сертифицированым nVidia FAQ писателем, и ему с этого ничего нет кроме
морального удовлетворения.

О развитии этого документа.
Этот FAQ пока что находится на стадии развития и любые пожелания и исправления приветствуются.
Любая помощь приветствуется в _мыло_ дабы не засорять эху всяческим мусором.
Любая часть этого FAQ можт быть скопирована или изменена с условием сохранения и указания
первоисточника и первоавтора. (я не очень знаток лицензий но типа FDL напоминает).

Замечания.
Этот FAQ с самого начала предназначался для постинга в эху RU.LINUX.CHAINIK и именно поэтому
содержит простейшие и _понятные всем_ рекомендации, пропуская массу технических аспектов и нюансов
таких как сборка NVIDIA Accelerated Linux Driver из исходников, установка NVIDIA Accelerated
Linux Driver на различные дистрибутивы, работа напильником, бубном и другими инструментами, поскольку
люди способные это реально сделать способны также самостоятельно найти информацию по этому вопросу
написаную более профессионально и точно.

Список вопросов:
1. Из-за чего тормозят игрушки?
2. Зачем нужен OpenGL?
3. Где взять NVIDIA Accelerated Linux Driver?
4. Из чего состоит NVIDIA Accelerated Linux Driver.
А Какой из них этот самый NVIDIA Accelerated Linux Driver который мне нужен?
5. Зачем нужен GLX?
6. Как выбрать драйвер конкретно под себя?
7. Использование nvchooser.
8. Что делать со свежескаченными драйверами?
9. Как устанавливать драйвера?
10. Что делать после установки?
11. Что делать если ничего не получилось?
12. Что такое Mesa?
13. Что такое DRI?
14. Почему я не получил выдяющегося быстродействия в своей любимой игре?
15. А где можно найти свежую версию этого FAQ?

Приложения:
1. Установка NVIDIA Accelerated Linux Driver из исходных текстов.

----------------------------------------------------------------------------------
1.----
Q:А почему вот тут у меня игрушка tuxracer, chromium, итд.. и тачка PIII/128/32 а она жутко тормозит
хотя ничего такоооого особенно крутого из себя не представляет?

A: Скорее всего у тебя карточка от nVidia, тоесть созданая на чипсете от
nVidia и носит название типа:
-VANTA
-TNT
-TNT2
-GeForce
-GeForce2
-GeForce3
-GeForce4
В норме эта карточка работает практически всеми современными дистрибутивами но поскольку создатели даных
чипсетов используют специфическое представление об OpenGL то для правильной поддержки 3Д требуются драйвера
от nVidia.

2.----
Q: OpenGL? - никогда о таком не слышал ;) зачем он нужен?

A:OpenGL -- это графический API высокого уровня, в оригинале разработанный SGI на
основе их предыдущего закрытого API Iris GL, и ставший несколько лет назад
индустриальным стандартом. Он определяется и утверждается организацией
Architectural Revision Board (ARB), которая включает в себя членов SGI, IBM,
DEC и Microsoft. OpenGL обеспечивает мощный, полный и обобщенный набор
возможностей для графических опреаций в 2D и 3D.

Существует 4 части OpenGL и его канонических расширений:

GL: Основные вызовы OpenGL
GLU: Дополнительные полезные вызовы
GLUI: Интерфейс с кнопками, checkbox'ами и т. п.
GLUT: Средства для системно-независимого управления событиями оконной
системы (фиксирование движений/щелчков мыши, нажатий на клавиши,
управление сигналом выхода из программы и т. п.). Также включает в
себя некоторые элементы UI, которые должны были войти в GLUI.

OpenGL -- это не только API, но и его реализация, написанная SGI. Она пытается
использовать аппаратное ускорение для различных графических операций, там где
это возможно; это зависит от видеокарты, которая установлена в вашем
компьютере. Если для некоторой задачи ускорение не доступно, OpenGL
осуществляет программный рендеринг. Это значит, что если вы берете OpenGL у
SGI и при этом хотитие получить хоть какое-нибудь аппаратное ускорение, то это
должна быть реализация, которая написана и откомпилирована специально для
вашей видеокарты. Иначе, все что вы получите -- software rendering. То же самое
верно и для OpenGL-клонов, таких как Mesa.

3.----
Q: А где их эти драйвера взять?

A: Скорее всего на nvidia.com или nvidia.ru. можно также поискать на пиратских CD но такие мне
пока не встречались :)

4.----
Q: Ну зашел я на этот сайт а тут выложена куча непонятных файлов с циферками и
буковками в названии.
А какой из них этот самый NVIDIA Accelerated Linux Driver который мне нужен?

А: На самом деле этот NVIDIA Accelerated Linux Driver состоит из двух частей - kernel-module и
glx-module - тоесть загружаемого модуля для ядра и некой реализации GLX от
nVidia.

5.----
Q: а кто такой GLX и зачем он нужен?

. A:GLX -- это расширение X, используемое OpenGL-программами, "клей" между не
зависящим от платформы OpenGL и привязанным к платформе X.

6.----
Q: Чудесно а какой нужен конкретно мне? Или их просто так столько на сайте выложено?

А: Не просто так а с ращетом на конкретный дистрибутив и архитектуру. Навожу пример:
у меня: AMD Duron 800+GeForce2 MX400/32Mb + RedHat Linux 7.3 + XFree86 4.2.0
я выбрал для себя пару:
NVIDIA_GLX-1.0-3123.i386.rpm
NVIDIA_kernel-1.0-3123.rh73up.athlon.rpm
Заметь модуль для ядра и GLX одной версии -3132
Судя по названию файла модуль ядра выбирался исходя из конкретных вышеуказаных
характеристик -
архитектура - Athlon
версия - 1.0-3123 - последняя на то время.
rh73 - версия дистрибутива
Ну и в RPM-ах потому что проще ставить.

7.----
Q: а уменя фантазии не хватает выбрать для себя необходимую пару, что мне делать?

А: ищем на сайте утилиту nvprobe или nvchooser и читаем что она нам пишет.
А потом идем на http://www.nvidia.ru/drivers/driver_linux_archive.shtml и выбираем
версию которyю нам посоветовала nvchooser.

8.----
Q: ну скачал я их а дальше что?

А: Ставишь как ни странно :)

9.----
Q: Как?

А: А вот это уже другой вопрос :)
убеждаешся что у тебя XFree не ниже 4.0.2
после чего
# rpm -ivh NVIDIA_kernel.i386.rpm
# rpm -ivh NVIDIA_GLX.i386.rpm

потом если все ставится без ошибок:
#vi /etc/X11/XF86Config-4
и ищем строчки типа:
Driver "nv"
(или Driver "vesa")
и заменяем их на
Driver "nvidia"
в секции Module дописываем если этого там нет:
Load "glx"
А также ищем и коментируем(если нашли) строки:
Load "dri"
Load "GLcore"

10.----
Q: А дальше?

А: Все! - alt-ctrl-backspace а потом пробуем запустить glxgears чтобы
посмотреть на многкратно возросшее быстродействие :)

11.----
Q: А у меня ничего не получилось(или получилось но не то) - сплошные ошибки и
зависания и еще неизвестно что про которые ты ничего не сказал :(

А: пробуй експериментируй - я все знать и предусмотреть не смого так что дерзай. И не забудь после удачного
завершения написать мне - думаю другие у кого возникнут такие же проблемы скажут тебе спасибо.

Еще несколько терминов которые будут встречатся по ходу чтения дополнительной
документации:

12.----
Q: Что такое Mesa?

А: Mesa -- это свободная реализация OpenGL API, которую придумал и написал Brian
Paul. Несмотря на отсутствие официального сертификата, это практически
полностью совместимая с оригиалом OpenGL-реализация, соответствующая
спецификациям ARB. Сообщается, что Mesa даже быстрее реализации OpenGL от SGI.

Как и OpenGL, Mesa использует аппаратное ускорение, там где это возможно. Это
означает, что существуют разные "версии" или "сборки" Mesa, в зависимости от
видеокарты, которая у вас установлена. Если у вас Voodoo I, II или III, то
предполагается использование "mesa+glide2" (автор David Bucciarelli), которая
является реализацией OpenGL, использующей glide в качестве средства для
рендеринга определенных графических операций.

13.----
Q: Что такое DRI?

А: В рендеринге графики участвуют 3 елемента: приложение-клиент (такое как Quake 3),
X-сервер и железо (видеокарта). Раньше клиентам строго запрещалась запись
непосредственно в аппаратную часть, и для этого была хорошая причина.
Программа, которой позволено напрямую обращаться к железу, различными
путями может привести систему к зависанию. Вместо того, чтобы довериться
программистам, Linux просто запрещает это делать. Однако, это изменилось с
появлением X 4.0 и Direct Rendering Infrastructure (DRI). DRI свободно
разрешает X-клиентам коллективную запись информации 3D рендеринга
непосредственно в видеокарту безопасным путем.

DRI "убирает с дороги" X-сервер, и 3D драйвер (Mesa или OpenGL) может
использовать железо напрямую. Это делает процесс быстрее. Информация 3D
рендеринга может быть либо ускорена железом, либо нет.

С технической точки зрения, это имеет несколько достоинств.
* Не надо кодировать/декодировать вершины через GLX.
* Не надо пересылать графику X-серверу через сокет.
* На машинах с одним процессором, ЦПУ не приходится менять контекст между X и
клиентом при рендеринге графики.

14.----
Q: Акселерация у меня заработала а я не получил 10E+32 FPS в своей любимой игрушке.

А: И правильно. Линукс давно перестал быть платформой для фанатиков програмистов, он
все больше теснит win9x на десктопах пользователей но он остается всего лишь _очень хорошей
операционной системой_ и ожидать от него сверхестественых результатов не надо. Кроме того
недавно слышал мысль о том что NVIDIA пишет драйверы для Линукса только для отмашки и по этому
их качество является более низким чем для win.
Но всеже даже при таком раскладе многие вещи работают быстрее своих windows портов.
Недавно я провел мелкий тест -

Машина:
Duron 800 MHz
128 SDRAM
GeForce2 MX400 32Mb
Motherboard - MSI

операционные системы:
Windows 98 (свежеустановленый ради эксперимента :)
Linux RedHat 7.3(Valhalla).

тестировалось на:
Quake3 1.31 + OSP 0.99 (native версии под windows и Linux)
map: ztn3dm1

конфиг:
разрешение: 640х480
com_maxfps 0
sv_fps 50
r_picmip 3.8
r_gamma 1.5
(настройки графики из моего конфига)

Результаты:
Под Linux: 210-230 FPS
Под windows: 190-210 FPS
Под wine: 80-120 FPS

Говорят что 4191 заметно медленее - есть сообщение что на GF 4 MX 440
с драйвером 3123 в glxgears fps был примерно 2300, а с версией 4191- 1600.
15.----
Q: А где можно найти свежую версию этого FAQ?
А: Послежнюю версию можно найти по ссылке:
http://nightfly.asmodeus.com.ua/nvfaq.txt
или
http://nightfly.asmodeus.com.ua/nvfaq.htm



Приложения:
1. Установка из исходных текстов для особо интересующихся
Установка драйвера из исходных текстов пригодится тем, у кого NVchooser.sh не выбрал конкретных файлов.

После скачивания необходимых файлов (kernel, GLX) делаем раз:
$ tar xvzf NVIDIA_kernel.tar.gz
$ tar xvzf NVIDIA_GLX.tar.gz
$ cd NVIDIA_kernel
$ make install
$ cd ../NVIDIA_GLX
$ make install

Делаем два:
vi /etc/X11/XF86Config-4

NB: если данный файл (XF86Config-4) у Вас отсутствует запустите Xconfigurator и следуйте указаниям программы.

Делаем три:
Находим секцию Device и меняем Driver "nv" (или Driver "vesa") на Driver "nvidia"
Убедимся что в секции Module имеется строка Load "glx"
Удаляем из этой же секции строки Load "dri" и Load "GLcore" Сохраняем изменения

Все! Набираем startx и следим за эффектом, если все прошло нормально перед стартом Хсервера появится Лого Нвидиа

P.S. некоторые "особо умные и экономные" дистрибутивы забывают устанавливать
исходники ядра. Без них ничего не получится. Таким образом, перед сборкой
драйвера проверьте - на месте ли исходники ядра.


Special thanx:
Mentat - заценка
Ejyk - вопросы
d00dm4n - вопросы
Alexandr Stepanov - исправления
Alec Voropay - рекомендации к исправлениям
Edward Yudanov - исправления
Alexandr S. Agranovsky - исправления
Asmodeus - рекомендации к исправлениям
Sergey Krinitsin - исправления
Игорь Крайнов 2:5061/55.45 - дополнения



Партнёры и спонсоры проекта:

Все материалы сайта распространяются по лицензии GNU/GPL
© ProUNIX 2003-2009, UnixLib 2005-2009, SoftLib 2006-2009.