Вперед Назад Содержание

8. Разное

8.1 Почему у меня не работает 3D ускорение? Почему Quake3 работает так медленно?

Если вы получаете около 1 fps, то ваша система не использует аппаратное

ускорение 3D графики. Происходит одно из двух:

  1. Ваша 3D система не настроена (более вероятно)
  2. Игра X не настроена (менее вероятно)

Первый шаг -- выяснение того, что же конкретно происходит.

Если у вас X 4.0 (пользователи X 3.* переходят прямо к пункту 8.1.2 2)

посмотрите на вывод "X -probeonly". Вы увидите:

(II) XXXXXX: direct rendering enabled

либо

(II) XXXXXX: direct rendering disabled

где XXXXXXX -- некоторая строка, которая зависит от вашей видеокарты. Если

это direct rendering disabled, ваша настройка X явно неправильна. Игра тут

ни при чем. Вам нужно разобраться почему DRI не включается.

Заметьте, что если вы прошли этот тест, ваша система СПОСОБНА производить

direct rendering. Однако, ваши библиотеки все еще могут быть не в порядке.

Поэтому, перейдем к пункту 2.

2. Другие средства.

Есть программа под названием gears, которая входит в пакет "mesademos". Вы

можете получить mesademos при помощи debian (apt-get install mesademos),

либо поискать rpm на rpmfind.net. Вы также можете скачать исходники с сайта

mesa и откомпилировать их самостоятельно.

Запустив gear, вы увидите вращающиеся шестерни. В xterm, в котором вы

запустили gears, будет выводиться "X frames in Y seconds = X/Y FPS". Вы

можете сравнить ваши показания с таблицей, приведенной ниже. Лучший вариант

-- убить перед этим все некритичные процессы. Не имея миллион запущенных

демонов, вы не будете волноваться, что ваш FPS не так хорош, как на похожей

машине в таблице. Нет нужды запускать gears под root.



Процессор
Материнская плата
Видеокарта
Версия X сервер
Замечание
FPS

























Самостоятельная компиляция модулей Mesa и DRI может увеличить FPS на целых

20 кадров в секунду; реальное увеличение производительности! Так вот, если

ваш FPS где-то на 30 меньше, чем на сравнимой с вашей машине, то скорее

всего gears работает в software режиме. Другими словами, ваша видеокарта не

ускоряет аппаратно 3D графику.

Так же важно различие в FPS при разных размерах окна. Измените размер окна

gears. Сделайте его большим, маленьким и на весь экран. Если аппаратное 3D

ускорение работает, то FPS должен оставаться постоянным. В противном случае,

3D рендеринг, вероятно, производится программно, а не аппаратно.

8.2 Проблемы, характерные для Voodoo

В X 3.3 Voodoo производит аппаратное ускорение только при глубине цвета 16bpp

и молча отказывается от него, если вы попробуете запустить X при цвете 32bpp.

В X 4.0 ускорение работает при 16bpp и 24bpp, но X не сможет стартовать, если

вы используете глубину цвета, которая не поддерживается Voodoo.

8.3 Почему не работает моя звуковая карта?

Прежде всего, дело может быть не в игре, а в вашей настройке. На сколько я

знаю, есть 3 способа получить звук в Linux: свободные OSS драйверы,

поставляемые с ядром Linux, драйверы Alsa и коммерческие драйверы OSS. Лично я

предпочитаю свободные драйверы OSS, но многие люди верны Alsa. Коммерческие

драйверы OSS хороши в том случае, если вы не можете заставить работать свою

карту бесплатными способами. Не пренебрегайте ими; они очень недорогие (10-20

долларов), поддерживают самые новые карты и избавляют вас от многих вопросов в

процессе настройки.

Есть 4 вещи, с которыми могут возникнуть проблемы:

1. Разделение IRQ

2. Неправильно настроенный драйвер

3. Кто-то уже обращается к вашей звуковой карте

4. Вы используете не тот драйвер

Разделение IRQ

Первое, что нужно сделать -- это выяснить нет-ли у вас конфликта IRQ. Карты ISA

не могут разделять IRQ. Карты PCI -- могут, но определенные типы карт с широким

диапазоном просто не любят делиться. Сюда входят сетевые и звуковые карты.

Чтобы выяснить есть-ли у вас конфликт, введите "cat /proc/interrupts". На моей

системе вывод такой:

# cat /proc/interrupts
CPU0 CPU1
0: 24185341 0 XT-PIC timer
1: 224714 0 XT-PIC keyboard
2: 0 0 XT-PIC cascade
5: 2478476 0 XT-PIC soundblaster
5: 325924 0 XT-PIC eth0
11: 131326 0 XT-PIC aic7xxx
12: 2457456 0 XT-PIC PS/2 Mouse
14: 556955 0 XT-PIC ide0
NMI: 0 0
LOC: 24186046 24186026
ERR: 1353

В нем присутствует вторая колонка, потому что на моей машине установлено 2 CPU

(это называется SMP). Если у вас один процессор (называется UP, uniprocessor),

то будет только одна колонка CPU. Числа слева -- назначенные IRQ, а строки

справа показывают какое устройство испольует этот IRQ. Вы можете видеть, что у

меня есть конфликт между звуковой картой (soundblaster) и сетевой картой

(eth0). Они обе делят IRQ5. На самом деле, я специально подстроил этот пример,

потому что хотел показать вам как выглядит конфликт IRQ. Но если бы у меня

действительно был такой конфликт, то либо сетевая, либо звуковая карта

отказалась бы работать.

Если моя звуковая карта PCI, предпочтительный способ исправить это -- просто

переставить одну из карт в другой слот и надеяться, что BIOS разберется с этим.

Более сложный способ -- пойти в BIOS и назначить IRQ на соответствующие слоты.

Современные BIOS'ы позволяют это сделать.

Если карта ISA и при этом имеется IRQ конфликт, то я вынужден признать, что не

знаю что с этим делать. Может быть, кто-нибудь согласится предоставить для

этого HOWTO подробное описание того, как использовать isapnp и pnpdump.

Неправильно настроенный драйвер

Иногда карта привязана к определенному IRQ. Это встречается только среди карт

ISA. Некоторые карты ISA могут быть настроены на нужный IRQ при помощи

джамперов на самой карте. С такими типами карт вам необходимо передать драйверу

правильный IRQ и доступ к памяти, I/O порт.

Эта проблема относится к звуковой карте и лежит за рамками темы этого HOWTO.

(Я должен написать о том, как передать информацию в драйвер).

Кто-то уже обращается к вашей звуковой карте

Возможно, какое-то приложение уже обращается к ваше звуковой карте. К примеру,

у вас может быть запущен проигрыватель MP3 и поставлен на паузу. Если кто-то

уже обращается к карте, другие приложения не смогут этого сделать. Сделайте

"ps ax" и ищите виновного. Несмотря на то, что esd (звуковой демон

enlightenment) написан с расчетом на разделение звуковой карты между разными

приложениями, я обнаружил, что иногда он не работает корректно. Убейте esd

(killall -9 esd) и проверьте звук еще раз.

Вы используете не тот драйвер (или вообще его не используете)

Есть только 2 пути настроить вашу звуковую карту:

  1. Ядро должно быть откомпилировано с поддержкой звука
  2. В память должен быть загружен необходимый драйвер

Вы можете выяснить какой драйвер использует ваша карта, введя в консоли "lsmod"

или посмотрев на вывод "dmesg". Поскольку звук важен для меня, я всегда компилирую

ядро с поддержкой звука. Если драйвер у вас не загружен, то надо

узнать что было вкомпилировано в ваше ядро. Это не так очевидно. Ваш лучший

выбор -- откомпилировать ядро самостоятельно. Кстати, позвольте мне заметить,

что компилирование вашего собственного ядра -- первый шаг в направлении

получения опыта с Linux. В первый раз это болезненно, но как только вы это

сделаете правильно, дальше все будет очень просто, особенно, если вы сохраняете

старые .config-файлы и используете такие вещи, как "make oldconfig".

Подробности -- в Kernel-HOWTO

Если вы не компилировали ядро самостоятельно, велики шансы того, что ваша

система настроена на загрузку звуковых драйверов в качестве модулей. Так делают

в дистрибутивах. Абсолютно все откомпилировали в качестве модулей и пытаемся

загрузить это все. Поэтому, если вы не увидели драйвер звуковой карты при

помощи lsmod, то ваша карта, вероятно, еще не настроена.


Вперед Назад Содержание
Используются технологии uCoz