Тесты производительности Ashes of the Singularity – DirectX 12 и Asynchronous Shaders

Опубликовано:

Ashes of the SingularityС игрой Ashes of the Singularity интерфейс DirectX 12 превратился из теоретического преимущества в практическое. Игра Ashes of the Singularity, первая игра на рынке с полной поддержкой DirectX 12, выйдет в релизе 22 марта. Hitman – второй кандидат на данную роль, но здесь следует дождаться дальнейших известий в середине марта на GDC. Сегодня мы рассмотрим последнюю бета-версию Ashes of Singularity и сравним уровень поддержки технологий на видеокартах AMD и NVIDIA. Мы оценим и такие специальные функции, как Asynchronous Shaders и поддержку multi-GPU на видеокартах разных производителей.

За последние два года мы опубликовали немало статей и тестов, касающихся DirectX 12. Поначалу Microsoft и другие вовлеченные компании были не слишком разговорчивы, первые подробности появились только в сентябре 2014, на мероприятии Microsoft и NVIDIA, посвященному представлению архитектуры Maxwell в виде видеокарт GeForce GTX 980 и 970. Затем информация стала обновляться, не стала неожиданностью и новость о том, что AMD отдает преимущество DirectX 12 перед собственным API Mantle. Но AMD к тому времени могла гордиться тем, что смогла привлечь внимание к проблемам API, от чего выиграли все.

Представление различных графических API за последние годы наглядно говорит о том, что потенциал оптимизации взаимодействия аппаратного и программного обеспечения по-прежнему существует. AMD начала такую оптимизацию с Mantle, вместе с Windows 10 был представлен DirectX 12, OpenGL недавно обновился на версию 1.0 API Vulkan, Apple уже давно развивает API Metal для мобильного сегмента. Впрочем, до сих пор оптимизации касались, по большей части, вызовов Draw Calls, чтобы уменьшить избыточную нагрузку на процессор. В Futuremark 3DMark появился новый тест API Overhead, позволяющий оценить потенциал оптимизации.

Asynchronous Shaders

Одно из преимуществ DirectX 12 заключается в том, что для получения большего уровня производительности не всегда необходимо обновлять «железо». Но AMD впервые заговорила о функции, которая имеется в современных GPU ещё с объявления архитектуры "Graphics Core Next". Она называется асинхронные шейдеры (Asynchronous Shader), функция улучшает взаимодействие между игровым движком, драйвером и аппаратным обеспечением, а также оптимизирует распределение задач. Во время представления первых видеокарт на GPU "Hawaii" AMD говорила об улучшениях GPU Computing из-за асинхронных вычислительных движков. Но подобные аппаратные блоки имеются у всех GPU на архитектуре GCN. И ранее рассматривавшая как чисто вычислительная функция получила вместе с DirectX 12 дальнейшее развитие, уже напрямую касающееся игр.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

При рассмотрении архитектуры GPU в обзорах мы всегда упоминаем отдельные функциональные блоки, их назначение и функции. Многие функциональные блоки могут работать независимо, но из-за специфики процесса рендеринга так не происходит, поскольку он опирается на так называемую линейную очередь. Конечно, как и во всех архитектурах, диспетчер пытается максимально оптимально распределить задачи, но здесь возможности не безграничны.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

С выходом DirectX 12 изменился способ работы программиста с API. Теперь обеспечивается больше контроля над работой графической подсистемы, что позволяет лучше организовать определенные рабочие процессы. Обеспечивается лучшая масштабируемость в зависимости от числа потоков, поддерживаются технологии состояний процесса (Pipeline States) и добавления работы (Work Submissions) – три ключевых инструмента для оптимизации процесса рендеринга. Мы уже упоминали их в новости, посвященной ранней презентации DirectX 12 от Microsoft.

Представленные иллюстрации показывают разные процессы рендеринга под DirectX 12, а выше показан рендеринг под DirectX 11. Конечно, уменьшение времени рендеринга приводит к более высокой частоте кадров в секунду и снижает задержки, что даёт положительный эффект в той же сфере очков виртуальной реальности.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

Сегодня разработчики не могут произвольно распределять задачи, им приходится придерживаться определенных требований API. Современные игровые движки поддерживают разделение на несколько предварительно оговоренных очередей, которые могут обрабатываться отдельно. На примере выше можно видеть очереди графики, вычислений и копирования. API DirectX 12 затем распределяет очереди по ресурсам, доступным на GPU.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

Подход кажется простым, но на практике он более сложен, поскольку данные отдельные очереди необходимо распределять по свободным ресурсам GPU. AMD описывает данный процесс рендеринга на примере автомобильного трафика, используя перекресток и светофор. Как раз светофор – это диспетчер, который должен распределить, когда передавать процессы на конвейер рендеринга. Здесь все участники движения имеют равный приоритет. Им приходится ждать, пока освободится ресурс, такая диспетчеризация не самая оптимальная.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

Один из способов улучшить процесс заключается в приоритезации. В таком случае можно задать приоритет некоторым задачам. Например, в случае автомобильного трафика можно остановить синюю очередь, чтобы обработать фиолетовую очередь с более высоким приоритетом – она будет отправлена на рендеринг. Но и здесь приходится переключаться между разными очередями, эффективность не всегда заметно повышается.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

И здесь AMD представляет асинхронные вычислительные движки (ACE, Asynchronous Compute Engines). Они позволяют одновременно обрабатывать несколько очередей команд, которые получается более эффективно встраивать в конвейер рендеринга. На примере с автомобильным трафиком использование ACE можно представить как управление каждым транспортным средством в определенном порядке и с нужным интервалом. Если все очереди команд будут поступать хаотично, то мы получим столкновения. Их и предотвращают ACE, помещая команды в очередь. Такой способ позволяет избавиться от пустых мест в очереди на конвейер, более оптимально используя потенциал производительности. Также можно выставлять приоритеты определенным процессам.

Асинхронные шейдеры уже входят в архитектуру GCN, так что AMD разрабатывала архитектуру с прицелом на будущее. Разработчикам CPU и GPU всегда приходится буквально предсказывать будущее, ориентируясь на программные решения, которые появятся только через несколько лет.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

Блоки ACE входят в состав архитектуры "Graphics Core Next". В случае GPU "Hawaii" используется восемь блоков ACE, которые могут обрабатывать восемь очередей команд. Все видеокарты AMD с архитектурой GCN должны оснащаться блоками ACE, но их число зависит от конкретной реализации архитектуры.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

В GPU "Hawaii" используется восемь блоков ACE (Asynchronous Compute Engines), все они работают независимо. Каждый блок ACE может, в свою очередь, обрабатывать восемь независимых очередей команд. Для быстрого доступа ко всем данным ACE напрямую работают с кэшем L2. А черед два движка DMA возможно обращение к памяти. Здесь используется полная пропускная способность PCI Express 3.0 16 Гбайт/с.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

Асинхронные шейдеры позволяют не только улучшить базовую производительность современных архитектур и работу движков рендеринга, но и обеспечивают выигрыш в некоторых специфических областях. Популяризация технологий виртуальной реальности поставила перед всеми производителями новые задачи, которые приходится решать, во многом, идентично – и AMD, и NVIDIA. Чтобы обеспечить полное погружение в виртуальную реальность, то есть чтобы виртуальный мир не отличался бы от реального, необходимо выполнить ряд условий.

Самые высокие разрешения дисплеев с самой высокой частотой кадров требуют высокой вычислительной производительности. Оптимальным пока считается разрешение UltraHD на каждый глаз и частота 90 кадров в секунду. Необходимую производительность как раз могут обеспечить асинхронные шейдеры. Кроме того, должна уменьшиться задержка между вводом пользователя и выводом на дисплей, что критично для полного погружения в виртуальную реальность.

Асинхронные шейдеры открывают путь и другим технологиям. Здесь можно отметить технологии преобразования изображения (Image Warping) и (Asynchronous) Timewarp, которые мы детально поясняли в других статьях. Здесь появляющиеся проблемы и их решения у AMD и NVIDIA довольно близки.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

Возникает вопрос: получат ли геймеры ощутимые преимущества от асинхронных шейдеров? Практических примеров очень мало, и пока что тесты DirectX 12 не дают общей картины, тестируя определенные части конвейера рендеринга. Например, вернёмся к тем же операциям Draw Calls, производительность вычисления которых у Mantle / DirectX 12 выросла очень значительно по сравнению с DirectX 11, но степень их влияния на весь конвейер рендеринга до сих пор не совсем понятна.

Вероятно, нам предстоит дождаться появления первых игр с "родной" поддержкой DirectX 12, чтобы оценить эффект. Конечно, AMD постаралась провести внутренние тесты, чтобы показать влияние асинхронных шейдеров на производительность. Например, без асинхронных шейдеров включение эффектов пост-обработки приводит к падению производительности примера SDK LiquidVR с 245 до 158 fps. Включение асинхронных шейдеров позволяет вернуться к уровню производительности, который наблюдался без эффектов пост-обработки.

Поддержка Asynchronous Shader от AMD
Поддержка Asynchronous Shader от AMD

AMD объяснила в теории, почему мы можем ждать прироста производительности под DirectX 12 на существующих видеокартах. Но пока что мы не можем подтвердить теорию конкретными практическими примерами. Синтетические тесты – это одно, здесь мы получаем прирост на несколько сотен процентов. Но они тестируют какие-либо определенные характеристики платформы, а не её общую производительность в целом. Впрочем, сегодня таким путём идёт не только AMD, но и все предполагаемые поставщики видеокарт DirectX 12. С Windows 10 и соответствующими драйверами появилась базовая техническая платформа, теперь осталось дождаться игр и программного обеспечения.

Хотя по поводу аппаратной поддержки остаются вопросы. Мы вновь получим несколько уровней поддержки DirectX 12. В случае DirectX 11 нам уже приходилось бороться с разными уровнями реализации поддержки, и не хотелось бы вновь столкнуться с этой проблемой уже под DirectX 12. Но AMD и NVIDIA указывают, что, по крайней мере, два последних поколения GPU совместимы с DirectX 12. Но в какой степени обеспечивается совместимость – пока неизвестно.

Асинхронные шейдеры AMD обладают интересным потенциалом улучшения производительности под DirectX 12. Конечно, у нынешних видеокарт потенциал имеется, но его необходимо реализовать. Так что будем ждать обновления игр под DirectX 12 (и "родных" движков DirectX 12) в результате усилий AMD и NVIDIA.

В следующей таблице указано, какие GPU поддерживают асинхронные шейдеры и в каком виде.

Поддержка Asynchronous Shader
Архитектура Смешанный режим Вычисления на GPU
AMD GCN 1.2 (R9 285) 1x графика + 7x вычисления 8x вычисления
AMD GCN 1.1 (R9 290 Series) 1x графика + 7x вычисления 8x вычисления
AMD GCN 1.1 (R7 260 Series) 1x графика + 1x вычисления 2x вычисления
AMD GCN 1.0 (HD 7000 и остальная линейка 200 Series) 1x графика + 1x вычисления 2x вычисления
NVIDIA Maxwell 2. Generation (GTX 900 Series) 1x графика + 31x вычисления 32x вычисления
NVIDIA Maxwell 1. Generation (GTX 750 Series) 1x графика 32x вычисления
NVIDIA Kepler (GK110) 1x графика 32x вычисления
NVIDIA Kepler (GK10x) 1x графика 1x вычисления

Конечно, NVIDIA работает над схожей технологией, представив в 2012 году HyperQ для профессионального сегмента. По сравнению с "Fermi" в архитектуре "Kepler" была реализована не просто рабочая очередь. Технология позволяет создать до 32 виртуальных ядер GPU, которые будут обрабатывать данные. Реализация у AMD и NVIDIA отличается, поэтому мы бы не стали сравнивать числа напрямую.

AMD описывает работу асинхронных шейдеров и проводит демонстрацию на следующих двух видеороликах:


До сих пор информация о DirectX 12 больше касалась низкоуровневой природы API, снижения избыточной вычислительной нагрузки и освобождающегося по этой причине потенциала производительности. Конечно, мы провели несколько тестов – сначала известный тест Draw Call пакета 3DMark от Futuremark, затем мы добавили тест DirectX 12 в нашу методику оценки производительности видеокарт. Мы уже сообщали о возможности совместного использования видеокарт AMD и NVIDIA под новым API, но кроме теоретической возможности здесь пока можно добавить немного.

К этому придется привыкать: по одной видеокарте AMD и NVIDIA в тестовой станции
К этому придется привыкать: по одной видеокарте AMD и NVIDIA в тестовой станции

DirectX 12 Multi-GPU Explicit Multi-Adapter или Multi Display Adapter – такими терминами сегодня описывается взаимодействие разных GPU. Технология стала возможной благодаря доступу через API на более глубоком уровне. Теперь разработчики получают более эффективные средства управления памятью и многими другими компонентами «железа». Работа систем multi-GPU под DirectX 11 была полностью в руках разработчиков драйверов. Под DirectX 12 «власть» перешла к разработчикам игр.

Технология Multi-GPU

Но сначала позвольте сказать пару слов о технологии multi-GPU: появление интерфейса PCI Express для взаимодействия видеокарты и остальной системы привел к тому, что AMD и NVIDIA смогли использовать технологию AFR (Alternate Frame Rendering) для сравнительно простой поддержки multi-GPU. AFR подразумевает поочередное вычисление кадров на каждом GPU. Вносить какие-либо изменения в игру или игровой движок при этом не требуется. Разработчикам AMD и NVIDIA достаточно внести в драйверы соответствующую поддержку, чтобы отличия по времени вывода отдельных кадров не приводили к появлению артефактов. AMD представила технологию сглаживания частоты кадров Frame Pacing, NVIDIA тоже ответила собственной аппаратно-программной технологией. Кроме того, синхронизация частоты кадров между GPU и панелью дисплея в виде FreeSync и G-Sync позволяет минимизировать появление артефактов.

Но выбор аппаратной платформы оставался ограниченным. NVIDIA позволяла взаимодействие только идентичных моделей видеокарт, AMD предоставила большую гибкость, по крайней мере, использование видеокарт на одном GPU (например, Radeon R9 290 и Radeon R9 290X). Конечно, тому есть причина – видеокарты разного уровня производительности не могут в AFR рассчитывать кадры за сравнимое время. Решение может заключаться в технологии SFR (Spit Frame Rendering), но она так и не стала популярной. О SFR мы поговорим чуть позже.

Впрочем, уже совершались попытки объединить видеокарты разных производителей без использования официальных режимов SLI и Crossfire. В 2010 году LucidLogix представила технологию Hydra. С помощью дополнительного чипа и программного обеспечения технология распределяла вызовы DirectX и OpenGL между совместимыми видеокартами. Но при этом имелись весьма серьезные ограничения по аппаратной базе и по программной поддержке. Все это привело к тому, что технология Hydra так и не смогла набрать популярность, уйдя в небытие.

DirectX 12 и Multi-Adapter

С появлением DirectX 12 Microsoft представила три режима multi-adapter. В самом простом случае используется упомянутая выше технология AFR с видеокартами одного производителя AMD или NVIDIA. Данный режим ограничивает возможности игровых разработчиков, но вместе с тем уменьшает вероятность потенциального возникновения ошибки из-за глубокого доступа к «железу». Большая часть работы для поддержки выполняется в драйвере, а не под DirectX 12.

Презентация EMAПрезентация EMA

Презентация EMA под DirectX 12

DirectX 12 обеспечивает более глубокий доступ к «железу» даже в системах multi-GPU. Для этого Microsoft представила режим Explicit Multi-Adapter (EMA). В нем игровые разработчики явно задают параметры поддержки multi-GPU. Для каждого одиночного GPU определяется доступ к памяти, описывается взаимодействие GPU между собой – все это должно быть запрограммировано предварительно. Ответственность за работу связки видеокарт теперь полностью лежит в руках разработчиков, что привносит определенные риски. Дополнительные усилия разработчиков не стоит недооценивать, а ошибки должен будет исправлять разработчик, а не Microsoft, AMD или NVIDIA.

Презентация EMA под DirectX 12
Презентация EMA под DirectX 12

В режиме EMA возможны два разных режима: Linked Mode и Unlinked Mode. В режиме Unlinked Mode обеспечивается базовая функциональность EMA, в режиме Linked Mode функциональность расширяется, но ограничения по используемому в комбинации «железу» становятся более строгими. Например, можно использовать только системы SLI и CrossFire под DirectX 12. В режиме Unlinked Mode вы можете комбинировать разные видеокарты, в том числе и от разных производителей. Возможна комбинация дискретного и интегрированного GPU.

Презентация EMA под DirectX 12
Презентация EMA под DirectX 12

В режиме Unlinked Mode каждый графический процессор считается самостоятельной аппаратной единицей, со своей памятью, командным процессором и т.д. EMA под DirectX 12 позволяет обмениваться данными между аппаратными единицами, причем на глубоком уровне, а не просто готовыми кадрами. Можно обмениваться частично просчитанными кадрами или данными в буферах, что позволяет выйти на новые уровни совместного рендеринга на нескольких GPU.

На первый взгляд все звучит просто, стал возможен обмен данными, что открывает доступ к алгоритмам, ранее недоступным. Но на практике все сложнее. Данные придется передавать по интерфейсу PCI Express, что намного медленнее связи между GPU и локальной видеопамятью, да и задержки довольно большие. Так что разработчикам следует определить, какие данные имеет смысл передавать между GPU, чтобы интерфейс PCI Express не стал «узким местом». Также следует определиться, в каком виде передавать данные. У разных производителей и даже разных поколений GPU зачастую используются разные форматы данных, которые не всегда просто перевести из одного в другой. Придется прилагать дополнительные усилия, необходимые для реализации EMA в Unlinked Mode. Впрочем, фокусом Unlinked Mode в EMA является все же совместная работа дискретных и интегрированных GPU, но и здесь могут использоваться GPU разных производителей.

Презентация EMA под DirectX 12
Презентация EMA под DirectX 12

Режим Linked Mode можно рассматривать как форму SLI или Crossfire под DirectX 12, аппаратные ресурсы в Linked Mode комбинируются в своего рода «видеокарту». Пользователь и игровой движок «видят» только один GPU и память. Аппаратные ресурсы здесь будут использоваться более тесно и глубоко, что открывает больше возможностей, но при этом накладываются дополнительные ограничения на «железо». Самый большой потенциал производительности можно будет раскрыть через Linked Mode, а самый большой уровень гибкости – через Unlinked Mode. Если разработчики хотят приложить минимальные усилия, и им достаточно базовой функциональности системы multi-GPU, то достаточно поддержать простой вариант EMA, доверившись квалификации разработчиков драйверов AMD и NVIDIA. Но поскольку только разработчики игры в полной мере владеют всеми нюансами своего продукта, то поддержка Linked и Unlinked Mode тоже весьма желательна.

EMA в Ashes of the Singularity

Oxides Games и Ashes of the Singularity в октябре 2015 открыли ранний доступ Steam к своей игре. Стратегия реального времени должна выйти совсем скоро, 22 марта 2016 года. Она станет первой игрой данного жанра с поддержкой DirectX 12, разработчики Oxides Games первыми постарались полностью задействовать возможности DirectX 12. AMD и Microsoft в сотрудничестве со студией разработчиков смогли построить на основе игры технологическую демонстрацию. Для демонстрации EMA разработчики Oxides Games использовали технологию AFR. Они управляли распределением кадров по отдельным GPU – ранее эту работу выполнял драйвер. Также разработчикам пришлось самостоятельно решать вопрос передачи кадров от дополнительных GPU на основной, а также реализовывать сглаживание частоты кадров (Frame Pacing).

Технология AFR лучше всего работает при использовании идентичных видеокарт, поскольку они справляются с расчетом кадров за близкое время. В любом случае, данная реализация идет дальше, чем привычные варианты AMD и NVIDIA. Вы можете комбинировать разные GPU от разных производителей, что позволяет одновременно работать, например, GeForce GTX Titan X с GeForce GTX 980 Ti. Но для работы все видеокарты должны поддерживать DirectX 12. Кроме того, комбинация высокопроизводительны видеокарт со слабыми не имеет особого смысла. Лучшие результаты будут достигаться при работе двух GPU со сравнимой производительностью.

Игра Ashes of Singularity по-прежнему находится в альфа-состоянии. И поддержка Unlinked Mode EMA является экспериментальной. Можно использовать только определенную комбинацию драйверов AMD и NVIDIA, но результаты оказались намного лучше, чем можно было ожидать. Oxides Games сначала будет улучшать Unlinked Mode, после чего перейдет к поддержке Linked Mode. Здесь ожидается прирост производительности в диапазоне 5-10%.


Для всех тестов мы использовали нашу тестовую конфигурацию для видеокарт. Radeon R9 Fury X тестировалась с последним драйвером Radeon Software Crimson Edition 16.2, для GeForce GTX 980 Ti мы взяли GeForce 361.91. Для разных разрешений мы приводили частоту кадров на протяжении всего тестового сценария с усредненными значениями, а также тестировали разные профили.

Нагрузка профилей с интенсивным (Heavy), средним (Medium) и нормальным (Normal) использованием Draw Calls существенно различается. В сценах с большим количеством Draw Calls (Heavy) вызываются порядка 22.000-25.000 Draw Calls в мс. В сценах со средним количеством – 6.500-7.000 Draw Calls в мс, а в нормальных сценах – 4.900-5.200 Draw Calls в мс.

Меню настройки графики Ashes of the SingularitGrafik-Menü von Ashes of Singularity

Меню настройки графики Ashes of the Singularity

На скриншотах выше приведено меню настройки графики Ashes of the Singularity.

Ashes of Singularity

1.920 x 1.080 Extreme-Preset - среднее

Кадры в секунду
Больше - лучше

Ashes of Singularity

1.920 x 1.080 Extreme-Preset - Heavy Draw Calls

Кадры в секунду
Больше - лучше

Ashes of Singularity

1.920 x 1.080 Extreme-Preset - Medium Draw Calls

Кадры в секунду
Больше - лучше

Ashes of Singularity

1.920 x 1.080 Extreme-Preset - Normal Draw Calls

Кадры в секунду
Больше - лучше

В первом тестовом прогоне мы тестировали две видеокарты в сравнительно низком разрешении 1.920 x 1.080 pixels. Под DirectX 11 видеокарта GeForce GTX 980 Ti получила явное преимущество, под DirectX 12 уже Radeon R9 Fury X обошла конкурента. Интересно, что чем больше используется Draw Calls, тем сильнее преимущество Radeon R9 Fury X. От активации Asynchronous Shaders значительно выиграла видеокарта AMD, у NVIDIA напротив, мы наблюдаем небольшое падение производительности.

Ashes of Singularity

2.560 x 1.440 High-Preset - среднее

Кадры в секунду
Больше - лучше

Ashes of Singularity

2.560 x 1.440 High-Preset - Heavy Draw Calls

Кадры в секунду
Больше - лучше

Ashes of Singularity

2.560 x 1.440 High-Preset - Medium Draw Calls

Кадры в секунду
Больше - лучше

Ashes of Singularity

2.560 x 1.440 High-Preset - Normal Draw Calls

Кадры в секунду
Больше - лучше

Схожую ситуацию мы наблюдаем и в разрешении 2.560 x 1.440 пикселей. Видеокарта Radeon R9 Fury X выигрывает от активации режима DirectX 12, показывая типичную слабость драйверов AMD под DirectX 11, поскольку из-за многочисленных оптимизаций NVIDIA избыточная вычислительная нагрузка под DirectX 11 сведена к минимуму. Производительность NVIDIA под DirectX 11 намного лучше, то же самое мы наблюдаем и во многих других играх DirectX 11.

Ashes of Singularity

3.840 x 2.160 High-Preset - среднее

Кадры в секунду
Больше - лучше

Ashes of Singularity

3.840 x 2.160 High-Preset - Heavy Draw Calls

Кадры в секунду
Больше - лучше

Ashes of Singularity

3.840 x 2.160 High-Preset - Medium Draw Calls

Кадры в секунду
Больше - лучше

Ashes of Singularity

3.840 x 2.160 High-Preset - Normal Draw Calls

Кадры в секунду
Больше - лучше

Даже в разрешении 3.840 x 2.160 пикселей мы наблюдаем схожую картину, поэтому можно сделать выводы. AMD решила разрабатывать альтернативный графический API несколько лет назад. Так и появился Mantle, он был открытым стандартом, но его так и не восприняли всерьез ни NVIDIA, ни другие разработчики GPU. Новый интерфейс DirectX 12 опирается на схожий подход для улучшения производительности. Похоже, что AMD серьезно выигрывает от полученного опыта.

Несколько иначе выглядит NVIDIA. Долгое время компания фокусировалась на улучшении производительности под текущими графическими API. Конечно, NVIDIA участвовала в разработке DirectX 12 и нового Vulkan, но особо заделом на будущее не занималась, что привело к нынешнему отставанию по производительности. Впрочем, с появлением все большего числа игр DX12, «зеленая» компания должна нагнать конкурента. NVIDIA просто не может себе позволить отставать от конкурента на десятки процентов.


В теории DX12 поддерживает конфигурации multi-GPU на разных видеокартах, настало время провести тесты.

Ashes of Singularity

3.840 x 2.160 High-Preset

Кадры в секунду
Больше - лучше

В первом эксперименте мы выбрали разрешение 3.840 x 2.160 пикселей и настройку High. Видеокарта Radeon R9 Fury X выиграла от дополнительной GeForce GTX 980 Ti, показав прирост 27,8%. Видеокарта GeForce GTX 980 Ti от добавления Radeon R9 Fury X выиграла больше – 45,1%.

Также мы заметили, что Ashes of the Singularity даже в разрешении 3.840 x 2.160 пикселей очень сильно упирается в процессор. В самом тесте производится соответствующая оценка, поэтому анализ выполнить легко. Мы выбрали настройку Extreme, которая увеличила нагрузку на GPU.

Ashes of Singularity

3.840 x 2.160 Extreme-Preset

Кадры в секунду
Больше - лучше

С новыми настройками Radeon R9 Fury X выиграла от добавления GeForce GTX 980 Ti на 30,2%, а Radeon R9 Fury X ускорила видеокарту GeForce GTX 980 Ti на 50,9%. Мы наблюдаем небольшой прирост производительности по сравнению с предыдущей настройкой.

Встроенный тест Ashes of the Singularity
Встроенный тест Ashes of the Singularity

Здесь вновь хотелось бы напомнить ранее состояние разработки Ashes of the Singularity. Разные режимы multi-GPU без явного использования SLI и CrossFire требуют больших усилий от разработчиков, и здесь кроется существенный потенциал для дальнейшей оптимизации. Конечно, играет свою роль и то, что подобные оптимизации разработчик обычно вносит впервые – у него попросту нет опыта.


Студия разработчиков Oxide Games сегодня трудится, не покладая рук. И ей еще предстоит немало сделать, если она намеревается выпустить игру 22 марта, в запасе остались всего три недели. Следует оптимизировать версию DirectX 12, реализовать дополнительную поддержку систем multi-GPU, а также достичь оптимальной производительности.

Самым большим шагом вперед можно назвать поддержку multi-GPU. Здесь мы сфокусировались на смешанном режиме из двух видеокарт, по одной от NVIDIA и AMD. Под DirectX 12 могут работать и классические Crossfire или SLI, но здесь поддержка зависит от драйверов AMD и NVIDIA. Что же касается систем multi-GPU с видеокартами из разных «лагерей», то здесь всю работу предстоит выполнить именно игровым разработчикам. Поэтому для каждой игры мы получим свои результаты. Впрочем, мы не считаем, что пользователи будут часто комбинировать две примерно одинаковые по производительности видеокарты с GPU разных разработчиков. В любом случае, как показывают результаты, подобная конфигурация вполне хорошо работает.

Тестовая сцена Ashes of the Singularity

Но не стоит забывать о производительности на одиночных GPU. По тестам игры Ashes of the Singularity можно сделать следующие выводы: NVIDIA явно находится впереди при использовании DirectX 11, но AMD выигрывает от хорошей реализации поддержки DirectX 12. Под DirectX 12 NVIDIA пока отстает. Конечно, Ashes of the Singularity – это отдельный случай, и в грядущих играх мы вряд ли получим схожую ситуацию. NVIDIA наверняка будет прикладывать все усилия, чтобы, по крайней мере, идти на равных по производительности.

Что касается Asynchronous Shaders, то AMD выигрывает от активации функции на 8-15%, NVIDIA преимущества не получает – производительность снижается. NVIDIA ранее объясняла подобную ситуацию тем, что Asynchronous Shaders не активированы в драйвере. Поэтому будет интересно провести тесты с активированной функцией Asynchronous Shaders. Но, по всей видимости, NVIDIA пока не имела достаточного времени (или желания), чтобы подготовить такой драйвер.

В целом, новый бенчмарк и новая бета-версия Ashes of the Singularity позволяют сделать первые сравнительные тесты. Однако одиночный тест мало о чем говорит, необходимо набрать статистику по другим играм и тестам. И для честного сравнения набор функций должен быть практически идентичным.