OpenGL в Linux
Тестирование и рекомендации по установки Quake2 и Quake3 на TNT и Banshee
Алексей Сорокин
Для начала, если кого-либо интересуют общие сведения поддержки 3D-графики в Linux (и в Unix системах вообще), то могу посоветовать начать вот с этой страницы.
Кроме того, ID Software (персонально Dave 'Zoid' Kirsch, Official Quake Unix Port Administrator еще со времен Quake I) в каждом релизе предупреждает, что официально поддерживаются только Voodoo Graphics и Voodoo2. Это стоит учесть
при интерпретации приводимых далее результатов.
Условия тестирования
Cравнивались 2 видеоплаты: Asus V3400 (Riva TNT) и Asus V3200 (Banshee). Обе карты имеют по 16 Мб локальной памяти, на обоих установлен кулер. Карта v3400 имеет tv in/out, но поддержка этих возможностей в Linux пока отсутствует.
Никакого разгона ни карт, ни тестовой системы в целом не производилось. Целью сравнения было получение общего представления о gameplay под Linux.
Hardware: PII-350, 128 Mb PC100 SDRAM, m/b Tyan Tsunami ATX (BX chipset), sound - Crystal CS4235.
Software:
RedHat6.0 based system, kernel 2.2.10, XFree86 3.3.3.1, KDE 1.1.1
Quake1 for X11 v1.0, Quake2 v3.20, Quake3Arena Test v1.07
Для TNT: SVGA X server for NVidia Riva TNT, NVidia Mesa/GLX module v1.0
Для Banshee: SVGA X server & Glide by Daryll Strauss, Mesa3D v3.1-beta2
Настройки Quake2:
8bit textures: yes
texture quality: max
sound quality: low
video mode: 640x480
Vsync: off
Настройки Q3test:
Sound quality: low
OpenGL Extensions: On
video mode: 640x480
color depth: 16 bit
lighting: vertex
geometric detail: low
texture detail: 1е положение бегунка
texture quality: 16 bit
texture filter: bilinear
identity target: yes
все остальные: no
Vsync: off
Рекомендации по установке TNT
FAQ по TNT
Бинарники и исходники Х-сервера и Mesa/GLX модуля
Бинарники спокойно встают на систему, хотя я бы все же рекомендовал самостоятельно скопировать файлы в нужные места, не пользуясь прикладываемым shell-овским скриптом инсталляции. Карта на TNT под Linux способна работать с использованием
Frame Buffer device, но только с драйвером vesafb. Это значит, что пересобрав ядро вы сможете получить консоль 800x600x32 на 60Hz, но не сможете увеличить частоту (если вы никогда не пересобирали ядро самостоятельно, то лучше пройдите сей
процесс под руководством ближайшего гуру, ибо имеется большое число тонкостей). svgalib практически не поддерживает TNT. Теоретически конечно есть в конфиге строчка 'chipset VESA', но мне не удалось получить ни одного приемлемого
работоспособного режима.
Рекомендации по установке Banshee
Бинарники Х-сервера и исходники Glide. Внимательно прочитайте все, что там написано. Точное следование инструкциям должно привести к положительным результатам.
Дополнительно советую взять и собрать последнюю версию Mesa.
У меня карта на Banshee согласилась работать только с последней бета-версией 3.1-beta2. Процесс компилляции и установки библиотеки достаточно подробно описан в прилагаемой документации. В принципе какая-нибудь версия Mesa уже может быть
проинсталлирована в вашей системе, но я советую воспользоваться именно последней. Сказанное о Frame Buffer и svgalib для TNT относится и к Banshee с одним добавлением: глючит Banshee больше. Так, у меня карта не восстанавливала fb-консоль
после выхода (или переключения) из Х-сервера.
Рекомендации по установке игр
Все, что надо для работы разных quake под Linux. Естесственно, нужны *.pak от Win32-версии. Я просто делал симлинки на fat32 партицию, все работало.
Для Quake2 необходимо 2 патча:
3.13 и 3.20.
Сначала устанавливается 3.13, а потом - 3.20.
Чтобы запустить Quake2, для меня идеальным оказался следующий вариант:
export MESA_GLX_FX=fullscreen
./quake2 +set vid_ref glx +set _windowed_mouse 1
Без первой строки Quake2 запустится в окне, параметры второй строки необходимы для того, чтобы Q2 запустился в OpenGL и нормально использовал мышь. Также можно посоветовать попробовать посмотреть файл конфига quake2 на предмет
'gl_driver'. Для ТНТ эта переменная должна быть libGL.so. для Banshee - libMesaGL.so.
чтобы запустить Quake3 на Banshee, помогло только следующее:
./linuxquake3 +set r_glDriver libMesaVoodooGL.so.3.1 +set r_mode 6 +set
in_dgamouse 0
Без этих параметров Banshee не будет нормально выводить изображение в Quake3.
С запуском Quake3 на TNT все проще:
./linuxquake3 +set r_glDriver libGL.so
Если не работает
Х-сервер должен заработать сразу, какие-то проблемы возможны именно с Quake-ами.
Для Banshee в пакете Glide есть утилиты проверки, если они не работают - значит вы сделали что-то не так на этапе инсталляции Glide, проконсультируйтесь с документацией еще раз.
Попробуйте поэкспериментировать с export LD_LIBRARY_PATH, т.е. указать системе путь к библиотеке Mesa в явном виде.
Если ничего не помогло, ищите на www.deja.com ->search. Этот сервер осуществляет поиск по архивам news-групп. Мне в конце концов помогло только это :-)
Результаты тестирования
|
Linux |
Windows 98 |
|
TNT |
Banshee |
TNT |
Banshee |
Quake1, software, timedemo demo1 |
20,4 |
23,4 |
|
|
Quake2, demo1.dm2 |
21,7 |
37,4 |
67,3 |
65,8 |
Quake2, crusher.dm2 |
12,2 |
21,1 |
32,1 |
27,3 |
Quake2, massive1.dm2 |
16,9 |
30,9 |
54,2 |
52,7 |
Quake3Arena Test, q3testdemo1.dm3 |
23,8 |
47,4 |
54,2 |
53,5 |
Для тестов было выбрано достаточно низкое разрешение 640х480, поскольку поддержка 3D в Linux еще не достигла уровня Windows 98. Обескураживающе низкие результаты Riva TNT связаны на мой взгляд с двумя вещами. Во-первых, поддержка OpenGL
для TNT появилась чуть более месяца назад, в отличие от проекта Mesa3D, который успешно развивается с 1995 г. Во-вторых, Mesa/GLX модуль под Линуксом на данный момент (v1.0) не поддерживает никаких OpenGL-extensions. И соответствующий пункт в
настройках Q3test не оказывает никакого влияния на работу TNT карты. Если же его отключить, то показатели Banshee упадут от 47,4 до 42,9 fps (на вышеуказанных настройках). Впрочем, это все равно не может служить оправданием для программистов
NVidia.
Также необходимо дать некоторое пояснение по поводу теста Quake1. Демка прокручивалась естесственно в software-режиме, в окне 640х480, и следовательно может являться в первом приближении бенчмарком скорости в 2D-графике (скорости Х-сервера).
Тут NVidia тоже проигрывает, хотя и не так катастрофически, как в OpenGL.
Впрочем, у Banshee все тоже не безоблачно. Так, в Q3test напрочь отказался корректно работать режим 800х600. Что касается качества изображения, то здесь картина аналогична наблюдаемой в Windows: "сеточка" у Banshee и весьма высокое (по моему
впечатлению) качество TNT. Некоторые глюки с большими текстурами у TNT исчезают при установке бегунка texture detail в третье положение. Для характеристики работы Banshee может оказаться интересно, что при включении marks on wall, неба и
geometric detail : high скорость падала до 32,5 fps.
Замечание по данным для Windows 98: использовались reference-драйвера от NVidia (2.08) и 3dfx (4.11.01.1444) соответственно. Последний драйвер от Asus для v3400 TNT (2.08 beta 3) в принципе чуть быстрее, но для Banshee попросту давно не было
обновления, поэтому я остановился на reference-драйверах.
Выводы
До недавнего времени сравнивать 3dfx под Linux было вообще не с чем. И то, что сделала NVidia, является очень большим шагом вперед. А если учесть, что дальнейшее развитие поддержки TNT продолжит если не сама NVidia, то независимые программисты
(NVidia сделала доступными исходные тексты этих драйверовна своем ftp, а также массу документации по своим чипам, то можно надеяться, что Banshee скоро придется потесниться. Но
сейчас Banshee обгоняет TNT в OpenGL играх под Linux на 80-100%.
Благодарности
Reactor Critical благодарит компанию Доминион (Н.Новгород, 8312 33-15-20) за предоставленные для тестирования платы.
1 августа 1999
Статья взята с сайта Reactor Critical (http://www.reactor.ru)
|