Как вы помните, в старших моделях X-Fi, Fata1ity и Elite Pro, имеется набортная память X-RAM, объемом 64 Мб. Она используется не для MIDI-семплов, а для хранения или кэширования звуков во время работы игровых приложений. Не известно, в какой момент в Creative было решено поставить на звуковую карту память, но сделано это было довольно странно: X-RAM есть только на двух старших моделях. На младших установлено лишь 2 Мб кэш под нужды DSP.
У пользователей возникают закономерные вопросы: Дает ли X-RAM реальное преимущество в играх? Что предпочесть при выборе из двух аналогичных карт с небольшой разницей в цене Platinum или Fatal1ty?
Предпосылки появления набортной памяти на звуковых картах таковы. Долгое время существовала проблема с дефицитом оперативной памяти под звук, так что разработчики либо снижали разрядность семплов, что ухудшало качество, либо сжимали в форматы с потерями, MP3 или OGG, что вело к загрузке процессора при распаковке на этапе проигрывания сэмпла. Позже, с веяниями прогресса, ситуация с системной памятью стала не так критична, но по некоторой инерции разработчики шли по проторенному пути.
Так, новейший DOOM3 содержал альтернативный программный звуковой движок с грандиозными замыслами победить все существующие движки, реализованными едва ли на десятую часть, с семплами не самого высокого качества, сжатыми в формат OGG, и распаковываемыми на лету в PCM для микширования и воспроизведения. Creative не устраивала ситуация, когда мировой бестселлер не использовал не то что новейшие расширения EAX, но и даже аппаратный DirectSound, что позволило бы применить качественные алгоритмы 3D звука. Более того, никакой разницы между интегрированным звуком и новейшими картами Creative не было ни в качестве, ни в производительности.
На борьбу с этим упущением были брошены лучшие силы. В том числе Карло Вогельсанг, человек, разрабатывавший звуковой движок в UT2003/UT2004. Интересно было послушать лекцию Карло на КРИ2005 c душераздирающими интимными подробностями о модернизации звукового движка DOOM3. Так, внутри софтовый движок оперировал 256 каналами, с десятком процессов realtime-декодирования OGG в памяти, и с алгоритмом случайного смещения каналов по времени, чтобы не допустить переполнения разрядной сетки буфера. С большим трудом, путём полного переписывания звукового кода, удалось внедрить поддержку DirectSound + всех существующих фич EAX4. При этом Creative пришлось перелопатить весь OpenAL, выпустив специальную новую версию, и переписать драйвера всех своих звуковых карт, также только под одну игру DOOM3. После таких страшных подробностей рассылка EAX4/5 SDK и призывы Creative к разработчикам игр внедрять OpenAL в свои игры, кажется, содержат изрядную долю иронии и могут быть трактованы не иначе как "а вам так слабо?"
КРИ2005: для избранных спеки X-Fi известны задолго до анонса
Но цель оправдала средства. Игра с патчем 1.3 увеличила производительность в FPS до +25%, а трехмерный звук кардинально улучшился, получив, в том числе реально работающую главную фичу EAX4 — Multi-Environment.
OpenAL SDK и X-RAM SDK для разработчиков появились сравнительно недавно, под NDA. При наличии X-RAM по умолчанию драйвера всегда используют набортную память, если только в программе принудительно не сказано обратное. Запрет использования X-RAM может пригодиться для буферов с часто меняющейся информацией или слишком большого размера. Таким образом, по умолчанию семплы кэшируются в X-RAM. Для полного управления всеми предусмотренными режимами и функциями программисту необходимо использовать OpenAL API. Для извлечения максимальной пользы нужно распаковать семплы из форматов OGG, MP3 в набортную память X-RAM на этапе предварительной загрузки уровня игры. Но даже старые приложения могут получить выгоду от X-RAM, так как семплы будут кэшироваться.
Из новых игр, на 100% поддерживающих X-Fi c EAX5/X-RAM, следует обратить внимание на Quake4. Игра не требует никаких патчей, так как базируется на DOOM3 1.3.
Мы также попросили Creative предоставить нам копию UT2004 пресловутого X-Fi Edition. Патч должен выйти для широких масс по официальным каналам, но почему-то никак не выходит.
Так как внешне игра ничем не отличалась от обычной пропатченной, пришлось долго выяснять, как узнать, что за версию нам прислали и какие параметры включают/отключают спец.поддержку. Спустя месяц из Штатов пришел ответ, что изменять можно количество голосов в .ini файле: параметр зовется Channels=XX, другой параметр MaxAudioVoices=XX относится к ISACT. Можно также воспользоваться командой 'STAT AUDIO' в консоли UT2K4, чтобы увидеть текущий режим.
UT2004 X-Fi Edition
По традиции iXBT с честью несет знамя с надписью "заноза в заднице Creative". Поэтому сразу после разоблачения технологии 24-bit Crystalizer мы продолжили заниматься любимым делом. Дождавшись выхода X-RAM SDK, мы оперативно выпустили новую версию нашего теста RightMark 3DSound. Отдел поддержки разработчиков Creative любезно помог нам понять некоторые неясные моменты, и тест, спустя несколько бета-версий, был, наконец, выпущен.
Обновления коснулись теста загрузки CPU. Добавлено:
- определение наличия и подсчет количества набортной памяти X-RAM;
- определение наличия поддержки EAX 5.0 (DirectSound, OpenAL);
- режим принудительного отключения X-RAM;
- контроль количества использования X-RAM в log-файле;
- режим X-RAM ON фиксируется в XML-файле результата и просматривается затем в модуле DataAnalyzer.
При тестировании мы столкнулись с серьезными затруднениями в тщетных попытках выявления преимущества от применения X-RAM в синтетике. Даже при самом тщательном тестировании и вычищении всех узких мест кода по производительности, выигрыш составил десятые доли процента. Казалось бы — в реальных играх выигрыш есть, а в синтетике — нет. Мы обратились за разъяснениями в Creative и даже готовы были выслать код для инспекции. В Creative восприняли эту новость спокойно и даже не стали оспаривать, что в синтетике X-RAM даст выигрыш. Из разъяснений Creative получалось, что сравнивать мы должны преимущества от X-RAM при предварительной распаковке OGG по сравнению с раскодированием в реальном времени. Такую версию мы, конечно, выпустим в ближайшее время, но уже сейчас кажется бессмысленным такое доказательство — в играх действительно уже есть большой прирост от такого использования X-RAM. Интересно другое: почему тогда нельзя использовать системную память под хранение семплов? И какой смысл в покупке более дорогих звуковых карт с набортной памятью для геймеров? Смысл сейчас есть, но есть ощущение, что поддерживается он несколько искусственно: в случае наличия X-RAM распаковка идет заранее, а в случае отсутствия X-RAM семплы почему-то раскодируются в реальном времени под эгидой экономии системной памяти, без всякой проверки её количества в рабочей машине. Можно предположить почему — в разработке звуковых движков таких игр принимали участия сотрудники Creative, а компании выгодно создать искусственный гандикап для своих карт.
Тем временем, мы продолжили свои исследования — вдруг от X-RAM будет выигрыш и в синтетике? Мы пробовали разные варианты и режимы тестирования, улучшали достоверность звукового движка. Последнее, что было сделано — это эмуляция загрузки системной памяти во время теста задачей, слабо загружающей процессор — пересылка больших объемов целочисленных данных в разные участки заранее зарезервированной памяти.
В обновленной 1 февраля 2006 года версии 2.2 пакета RightMark 3DSound были добавлены две новых функции: "Load system memory" с регулировкой количества памяти и размера куска данных в процентах и опция "Sample size" изменения размера семпла для контроля общего размера памяти под семплы.
Тестирование показало, что изменение количества буферов, размера и включение загрузки памяти для эмуляции нагрузки на шину процессор-память не выявляют заметных преимуществ применения X-RAM. На процессоре P4 3.4 ГГц уменьшение загрузки CPU от включения X-RAM составляет 0,1%. Тогда как изменение количества буферов адекватно в разы изменяет загрузку процессора.
Обладатели X-Fi c X-RAM при желании могут повторить наш эксперимент. Напомню, необходимо перевести X-Fi в Game Mode и выбрать в тесте устройство X-Fi в списке OpenAL устройств системы.
По итогам исследования мы можем попытаться ответить на поставленные в начале статьи вопросы:
Дает ли X-RAM реальное преимущество в играх? Даёт, но достоверно об этом известно только про новые игры с участием программистов Creative в процессе разработки. Таких игр пока мало, но они весьма хитовые: DOOM3 1.3, DOOM3:ROE, Quake4, BattleField 2, BattleField 2:SF. Учитывая то, что EAX5/X-RAM SDK вышли недавно, есть повод для оптимизма – возможно, игр скоро станет больше. Но так как OpenAL слишком медленно приживается среди разработчиков из-за сильных различий с DirectSound, можно сделать вывод, что ситуация здесь резко не изменится.
Что предпочесть при выборе из двух аналогичных карт с небольшой разницей в цене Platinum или Fatal1ty? Fatal1ty выберут те, кому важен небольшой прирост производительности в перечисленных выше играх и осознание того, что карта полностью раскрывает свой потенциал. Для прагматиков лучше подойдет Platinum.