Дискретные графические адаптеры для настольных компьютеров являются во многих отношениях стандартизированными и абсолютно взаимозаменяемыми устройствами. Вы не можете просто так заменить процессор Intel процессором AMD без сопутствующей замены материнской платы (да и в рамках продукции одного производителя регулярно происходит апгрейд платформы — системной логики, разъема, типа оперативной памяти), а графические карты, напротив, можно менять сколько вздумается. Системная шина PCI-E, воцарившаяся на долгие годы, не накладывает на это никаких ограничений. Программная среда для GPU также давно устоялась. Любой видеоадаптер поддерживает API DirectX, а вне ОС Windows эти функции выполняет OpenGL.
С одной стороны, такая ситуация благотворна для производителей. Она сделала возможным непрерывный цикл обновления GPU на более производительные новинки и перемещение линии фронта в конкурентной борьбе AMD и NVIDIA. С другой стороны, любой GPU чрезвычайно трудно дифференцировать от аналогов по какому-либо признаку, помимо производительности, которую он предоставляет в данном ценовом сегменте. Конечно, среди квалифицированных покупателей есть люди с устойчивыми предпочтениями в пользу AMD либо NVIDIA — те самые, которые каждый раз яростно бьются в комментариях к обзорам видеокарт. Это явление сродни азарту футбольного болельщика. Есть и сугубо практические причины любить или отвергать устройства NVIDIA либо AMD, но давайте признаем, что конъюнктура на рынке меняется с каждым новым витком прогресса GPU, подчас совершенно непредсказуемо, а фанаты остаются фанатами.
Менее квалифицированные покупатели, не столь погруженные в технические тонкости, также имеют свои предпочтения. Здесь большое значение имеет имидж производителя и его продукции. NVIDIA и AMD совершенно не похожи в том, какое послание несут потенциальному покупателю. Маркетинг NVIDIA традиционно более силен и настойчив в коммуникации с конечным пользователем. Пользуясь преимуществом в производительности, которое сопутствует марке GeForce на протяжении всей ее истории, за исключением нескольких отдельных периодов неудач, NVIDIA позволяет себе держать относительно высокие цены. Пусть GPU NVIDIA дороже, «но ведь дороже — значит лучше» — таково их скрытое сообщение. AMD сформировала для марки Radeon противоположный имидж. Ценовая политика «красных», как правило, агрессивна во всех сегментах производительности. Массы привыкли думать, что в среднем ценовом диапазоне Radeon — это более экономный аналог GeForce, обладающий сопоставимой производительностью, а наверху Radeon пусть и не столь быстр, как лучшие представители линейки GeForce, зато по-прежнему стоит дешевле.
Между тем с чисто технической точки зрения эпоха 28 нм была триумфальной для AMD. Давненько не было такого, чтобы видеокарты Radeon занимали паритетные позиции с конкурентами от NVIDIA в сегменте High-End. Теперь AMD переходит в масштабное наступление уже на идейном фронте. Недостаточно, чтобы Radeon считали быстрым и доступным. Нужно предложить покупателю нечто уникальное, чего не может дать конкурент.
NVIDIA давно работает в этом направлении. Именно она первой презентовала GPU как ускоритель вычислений: API CUDA. Много усилий и денег было вложено в продвижение технологии PhysX. Во времена бума стереоскопического 3D NVIDIA успешно оседлала волну, выпустив набор 3D VISION. Из последних инициатив — консоль SHIELD с поддержкой трансляции игровой картинки настольного ПК, модуль G-SYNC для дисплеев. Это не считая чисто софтверных технологий, выпущенных NVIDIA в свободный полет: метода сглаживания TXAA и собственной разновидности Ambient Occlusion — HBAO. В общем, NVIDIA пытается выстроить вокруг марки GeForce собственную экосистему.
AMD до поры не занималась чем-либо подобным. Если продукты Radeon и выделялись уникальными характеристиками, то была ранняя поддержка общепринятых стандартов — свежих версий DirectX и портов вывода. Сейчас все резко меняется. AMD выступила с рядом дерзких инициатив — внедрение HSA в APU семейства Kaveri, аппаратный DSP TrueAudio в последних GPU на базе архитектуры GCN и, собственно, Mantle. Что общее у всех трех нововведений — это сугубо технический, фундаментальный характер. AMD в меньшей степени стремится создать экосистему и в большей — дать своим продуктам зримые преимущества, поддерживающие их основную функцию — 3D-рендеринг в играх.
⇡#Низкоуровневый API: от 3dfx до next-gen-консолей
Mantle — чрезвычайно амбициозный шаг. Будучи до сих пор последовательным сторонником стандартных решений, AMD вдруг решила дернуть одеяло на себя, выступив с проприетарным низкоуровневым интерфейсом для GPU на базе архитектуры Graphics Core Next. Такого никто не делал со времен 3dfx и ее API Glide. Но 3dfx был первопроходцем, и создание собственного API для нового класса устройств — 3D-ускорителей — было неизбежным. Сегодня стандарты определены. Вы пишете игры либо под DirectX, либо — под OpenGL. А по факту — DirectX давно одержал победу в Windows. Нужны серьезные основания для того, чтобы поддержать третьего, совершенно незнакомого кандидата.
И такие основания есть. Во-первых, ситуация, в которой Mantle противостоит DirectX, совершенно не похожа на то, как с DirectX когда-то соревновался Glide. Glide уходил в небытие вместе с ускорителями 3dfx. DirectX шел на подъем вместе с продуктами NVIDIA. Позиции AMD, напротив, сильны как никогда. Благодаря архитектуре GCN компания упрочила положение на рынке десктопной графики и, более того, заполучила монополию на поставки GPU для всех консолей нового поколения.
Собственно, консоли нового поколения — это добрая часть всей истории про API Mantle. Если вкратце, Mantle вполне может оказаться портом низкоуровневого API с Xbox One на PC, хотя официально Microsoft не подтверждает эту гипотезу. Напомним, что мы писали по этому поводу в общем обзоре линейки Radeon R7/R9.
Консоли, будучи платформой изначально ограниченной в производительности и рассчитанной на долгий жизненный срок, побуждают разработчиков по максимуму задействовать вычислительные ресурсы. Происходит это не только за счет оптимизации игрового кода, но и благодаря тому, что для одной и той же консоли, как правило, доступны два API: высокоуровневый (вроде DirectX или OpenGL) и низкоуровневый, который дает прямой доступ к аппаратным ресурсам, минуя уровень абстракции с присущими ему ограничениями и снижением производительности. Возьмем Xbox One. Известно, что в качестве высокоуровневого API там используется не что иное, как DirectX 11.2, а сама ОС является разновидностью Windows. Но неизбежно должен присутствовать и низкоуровневый API графического процессора. Написанный под разновидность Windows… Можно ли считать совпадением, что незадолго до релиза новой консоли от Microsoft AMD представила низкоуровневый API к архитектуре Graphics Core Next для самой популярной десктопной ОС?
Надо признаться, что пока нет прямых подтверждений тому, что Mantle является низкоуровневым API, портированным на Windows прямиком с операционки Xbox One. Вот только предположение выглядит уж очень убедительно. Ведь Mantle даже поддерживает родной для Xbox One Direct3D HLSL (High Level Shader Language). Да и сама AMD как на слайдах презентаций, так и устами своих представителей, не вдаваясь в подробности, говорит о том, что Mantle помогает перенести на ПК оптимизации консольных разработок.
Если верить AMD, низкоуровневый интерфейс программирования GPU — это то, чего разработчики игр под Windows вожделели долгие годы. А коли действительно так, то понятно почему. В целом любой дополнительный уровень абстракции забирает на себя определенную долю производительности, подчас существенную. Прямой доступ к GPU, минуя вызовы DirectX, по определению способен высвободить определенный процент скрытого быстродействия. К тому же AMD лучше, чем кто бы то ни было, осведомлена об особенностях архитектуры GCN и знает, где можно срезать углы.
Широкой публике известно не очень много технических подробностей о свойствах и конкретных преимуществах Mantle. Да и сам материал по большей части непонятен для публики, далекой от программирования (в особенности программирования 3D-рендеринга). В фокус внимания попал один предмет, которым Mantle наиболее выгодно отличается от DirectX, — draw calls. Количество draw calls — это то, что отличает кадр со множеством отдельных объектов от кадра с немногими сложными объектами, пусть совокупная сложность видимой геометрии у них одинакова. Когда мы видим 3D-модель автомобиля, мы имеем дело с небольшим количеством «крупных» draw calls. Игровая сцена из шутера с массой разлетающихся обломков от взрыва, армия в RTS, толпа игроков в MMORPS — во всех этих случаях используется много «мелких» draw calls. И здесь вполне вероятно, что CPU станет бутылочным горлышком для производительности, в то время как GPU будет пропускать такты.
Эта проблема всплыла во время перехода от DirectX 9 к DirectX 10, где «непродуктивные» затраты производительности на отработку draw calls существенно сократились. И все-таки даже при условии широкого внедрения DirectX 11, унаследовавшего оптимизации десятой версии, трудности никуда не делись. Компромиссное решение — использовать как можно меньше draw calls — допустимо не всегда. И вот появляется Mantle, призванный свести overhead на отработку draw calls до минимума: теоретически можно получить девятикратную скорость генерации draw calls по сравнению с DirectX 11.
Оптимизация draw calls — особенно выгодный предмет для AMD. Любой разработчик и геймер скажет спасибо за дополнительные FPS в тормозящих сценах, наполненных разрозненной геометрией. Но особенно остро вопрос встает в условиях дефицита мощности CPU. А это как раз случай AMD. Даже Mantle не может спасти процессоры AMD FX, а вот для APU при умелом использовании он сослужит хорошую службу. Другая польза от быстрых draw calls — оптимизация физики разрушений, взрывов и подобных процессов, причем не просто для того, чтобы сделать эффекты более пышными, а с целью обеспечить интерактивное взаимодействие с динамически формируемой средой.
Позволим себе более подробный экскурс в эту тему. Унифицированные шейдерные архитектуры дали возможность симулировать на GPU разлет осколков, текучие вещества и подобные предметы, требующие масштабных параллельных вычислений, которые слишком медленно решаются силами CPU. Проблема в том, что в большинстве игр дополнительная геометрия, порожденная GPU, остается не более чем визуальным эффектом, наложенным на сцену. Красивый дым, туман, осколки, но взаимодействие с ними ограничено. Почему?
Механизм можно описать так. CPU просто отдает задание на генерацию объектов графическому профессору посредством API PhysX или OpenCL. Но более глубокое участие игрового движка в судьбе того, что получилось в результате, потребовало бы передавать большие объемы данных по шине PCI-E, с соответствующим ущербом производительности. Проблема решается внедрением архитектуры HSA, в рамках которой CPU и GPU имеют доступ к общему адресному пространству и обмениваются не данными, а указателями. Но учитывая, что AMD уже позаботилась о внедрении HSA, осталось только добавить быстрые draw calls, чтобы приблизиться к по-настоящему реалистичной и интерактивной игровой физике.
С технической точки зрения замысел, лежащий в основе Mantle, безупречен. Но успех в конечном счете зависит от того, поддержат ли разработчики начинание AMD. Компания особо подчеркивает, что запрос на Mantle исходил именно от разработчиков. Разумеется, мы никак не можем подтвердить либо опровергнуть это утверждение. Остается только наблюдать за рынком. Впрочем, нельзя не признать, что Mantle стартовал весьма бодро. Первой игрой, поддерживающей API, стала Battlefield 4. Вскоре к ней присоединится Thief, в более отдаленном времени — Sniper Elite 3 и не столь именитый проект — космосим Star Sitizen. В Oxide Games разработали универсальный графический движок Nitrous с поддержкой Mantle и опубликовали в Steam бенчмарк, демонстрирующий его возможности. Собственно, Battlefield 4 и Star Swarm (а также бета-версия драйвера Catalyst 14.1) дали нам долгожданную возможность протестировать производительность Mantle на практике.
Конфигурация тестового стенда | |
---|---|
CPU | Intel Core i7-3960X @ 4,6 ГГц (100x46) |
Материнская плата | ASUS P9X79 Pro |
Оперативная память | DDR3 Kingston HyperX 4x2 Гбайт @ 1600 МГц, 9-9-9 |
ПЗУ | Intel SSD 520 240 Гбайт |
Блок питания | Corsair AX1200i, 1200 Вт |
Охлаждение CPU | Thermalright Archon |
Корпус | CoolerMaster Test Bench V1.0 |
Операционная система | Windows 7 Ultimate X64 Service Pack 1 |
ПО для карт AMD | AMD Catalyst 14.1 Beta |
Энергосберегающие технологии CPU во всех тестах отключены. Шина PCI-Express работает в режиме 3.0.
В настройках AMD Catalyst Control Center настройка Tesselation переводится из состояния AMD Optimized в Use application settings.
Мы сделали упор на производительности графики в зависимости от того, какой мощностью CPU располагает система. Хочется удостовериться в том, что Mantle сам по себе не только увеличивает фреймрейт, но и позволяет удержать его на приемлемом уровне в условиях дефицита производительности CPU. Для этого процессор на тестовом стенде — Intel Core i7-3960X — был последовательно ограничен по числу активных ядер с шести до двух. Попутно менялась частота CPU. В результате получены четыре конфигурации: процессор на своих штатных спецификациях и две настройки, эмулирующие топовые модели десктопных процессоров семейства с Ivy Bridge с четырьмя и двумя ядрами (с поправкой на четырехканальную систему памяти платформы LGA2011).
Подопытный видеоадаптер — Radeon R9 290X. Флагман гарантирует нам, что при низкой производительности CPU производительности GPU будет вполне достаточно и частота смены кадров действительно войдет в зависимость от скорости обработки draw calls.
Бенчмарк Star Swarm, похоже, специально сконструирован таким образом, чтобы на первый план вышла скорость обработки draw calls. Наиболее выпукло это проявляется в тесте RTS, когда экран кишит десятками крошечных корабликов. Мы пользовались максимальным настройками качества и разрешением 1080p. При всех конфигурациях CPU налицо тройная разница в частоте смены кадров между API DirectX 11 и Mantle.
Battlefield 4 потенциально может извлечь большую пользу из поддержки Mantle, главным образом — в многопользовательской игре. Множество моделей, разрушаемая среда — все это требует немалого количества draw calls. Жаль, что в игре нет встроенного бенчмарка, который бы позволил создать по-настоящему жесткие условия для CPU. Пришлось довольствоваться тестированием в ручном режиме в ходе однопользовательской миссии South China Sea. Этот эпизод лучше прочих подходит для нашей цели благодаря большому количеству постоянно летающих в воздухе и плавающих в воде обломков.
Тест в Battlefield 4 не так прост, как Star Swarm. Чтобы выявить преимущества Mantle, пришлось, помимо разной конфигурации CPU, поиграть с настройками качества графики.
С предустановкой Ultra производительность Battlefield 4 должна упираться в графический процессор. Преимущество от перехода на Mantle не превышает 10%. И что более интересно, эффект наиболее выражен при самой мощной конфигурации CPU.
Battlefield 4, продолжение
Результаты первых тестов в Battlefield 4 далеки от того, что нам пообещала AMD (а обещано было вплоть до 40% прироста производительности). Но вряд ли компания преувеличивает эффективность Mantle, правда? Нам все-таки удалось найти подходящую сцену в однопользовательской компании, которая насыщена еще большим количеством отдельных объектов, за счет чего сближается с наиболее горячими сетевыми баталиями. Это еще один этап миссии South China Sea – когда вы попадаете на палубу USS Titan, истребитель съезжает в море, а вокруг лежат горящие осколки. Одновременно происходит перестрелка группы морпехов с противником.
В этом эпизоде переключение на Mantle произвело колоссальный эффект. При уровне качества Ultra даже при шести- или четырехъядерном процессоре разница между Mantle и DirectX 11 выражена сильнее, чем в предшествующем более спокойном эпизоде миссии. На двух ядрах преимущество Mantle достигает 16%.
При качестве High Mantle прирост производительности при двухъядерном CPU составил уже 34%.
При настройках Low GPU получает минимальную нагрузку, и центральный процессор становится главным ограничителем производительности в режиме DirectX 11. С поддержкой Mantle частота смены кадров даже при шестиядерном CPU увеличивается на 33%. При четырех и двух ядрах бонус достигает 32% и 34% соответственно.
Battlefield 4, Radeon R7 260X
Когда Mantle, наконец, показал все, на что способен в Battlefield 4, появился смысл сделать еще один тест – с более слабой графический картой. Сможет ли API удержать высокие позиции, когда нет столь явной диспропорции основных компонентов системы в пользу GPU? Увы, в данном случае разница между результатами Mantle и DirectX 11 проявляется только при использовании двухъядерного CPU: от 11 до 15%. Но в конце концов, это наиболее гармоничная комбинация из всех представленных.
Выводы
Что можно сказать по итогам тестирования? Пусть выход Mantle изрядно запоздал (продукт анонсировали еще в сентябре прошлого года), но теперь у нас, наконец, есть и драйвер, и первые реальные тесты производительности. В целом мы готовы подтвердить, что преимущество от использования Mantle по сравнению с DirectX 11 действительно есть, и подчас весьма существенное.
Бенчмарк Star Swarm демонстрирует в своем роде экстремальную ситуацию, когда производительность графики явно упирается в скорость обработки draw calls. Вряд ли можно считать этот тест репрезентативным по отношению к реальным играм. Но по крайней мере Star Swarm дает понять, что Mantle действительно успешно решает эту конкретную проблему.
Разница не столь выражена в случае с Battlefield 4. В наших тестах бонус от перехода с DirectX на Mantle во многих случаях достигает 10%, причем даже в системе с мощным CPU. Если верить данным, которые обнародовала сама AMD, от Mantle в Battlefield 4 можно получить и больше — вплоть до 40%. Но для этого, по всей видимости, необходимо сочетание определенных факторов: сложная геометрия сцены с большим количеством draw calls и существенный зазор между производительностью CPU и GPU. Между тем и 10% — хороший результат для графического движка, который изначально был заточен под DirectX. Тем более что для геймера он дается совершенно бесплатно.
Покупатели графических адаптеров AMD теперь могут смело приписывать эту долю к ожидаемой частоте смены кадров в играх, совместимых с Mantle. AMD уже дала своей инициативе мощный старт, заручившись поддержкой нескольких интересных проектов. А вот как сложится судьба API в дальнейшем, пока совершенно неизвестно. Но по меньшей мере AMD сделала неожиданный и сильный ход, за последствиями которого будет крайне интересно наблюдать.
Добавлено после дополнительного тестирования в Battlefield 4:
И все-таки, невозможно отрицать, что первоначальные результаты тестов в Battlefield 4 разочаровывают. Уж слишком сильную заявку сделала AMD, чтобы реальный эффект Mantle ограничился 10% в самом лучшем случае. После выхода статьи мы попытались выжать из Battlefield 4 больше – найти в однопользовательской компании такой эпизод, чтобы в кадр попадало по-настоящему много моделей персонажей, обломков и взрывов, и одновременно сцену можно было воспроизводить с высокой повторяемостью результатов. Как жаль, что в Battlefield 4 нет ни встроенного бенчмарка, ни записи сражений.
Подходящий эпизод был найден, и новые результаты уничтожили скепсис в отношении Mantle. Владельцы четырех- и шестиядерных процессоров в сочетании с топовыми GPU, позволяющими установить бескомпромиссные настройки графики, в среднем, по-прежнему получат свои 10% производительности от перехода на Mantle. Для машины с двухъядерным CPU тип API стал решающим фактором вне зависимости от качества графики: Mantle обеспечивает преимущество от 16 до 34% по сравнению с DirectX 11.
Графический адаптер небольшой (по игровым стандартам) вычислительной мощности также может извлечь пользу из Mantle. Если не жадничать и выставить настройки качетва графики, дающие GPU дышать свободно, то дефицит производительности CPU (если это двухъядерник, приличествующий недорогой видеокарте) снова вступает в силу. Тогда Mantle позволит высвободить вплоть до 15% потенциальной частоты смены кадров.