DirectX 12: презентация AMD и Nvidia на Game Developers Conference
Стартовала очередная конференция Game Developers Conference - в ближайшие 4 дня нас ждет множество технических подробностей того, как разрабатываются современные игры. Но начнем мы с DirectX 12, главной технологической новинки последних лет.
В первый день GDC представители AMD и Nvidia провели совместную презентацию, в очередной рассказав о том, чего стоит ждать от новой версии API.
Кстати, на сайте читать удобнее
Основная мысль выступления очень проста: DirectX 12 позволяет разработчикам делать очень многое, но в то же время дает отличную возможность многократно выстрелить себе в ногу. Слайд "Сомневаетесь? Оставайтесь на DirectX 11" появился в презентации совсем не случайно.
Благодаря Стивену Сантане, обозревателю DualShockers, у нас есть слайды и ключевые моменты презентации:
- DirectX 12 предназначен для разработчиков, стремящихся выжать максимум из CPU и GPU, но нужно быть готовыми к тому, что придется самостоятельно реализовывать многие низкоуровневые вещи, о которых в DirectX 11 заботился драйвер
- Кроме того, из-за близости к аппаратному уровню придется отдельно реализовывать поддержку видеокарт AMD и Nvidia: они по-разному поддерживают DirectX 12, обратите внимание на слайды 39 и 41
- В DirectX 12 списки команд должны выполняться настолько быстро, насколько это возможно; за один кадр стоит ориентироваться на 15-30 списков, упакованных в 5-10 вызовов ExecuteCommandList, причем выполнение каждого из вызовов должно занимать по меньшей мере 200 (а лучше 500) микросекунд
- Задержка операционной системы при выполнении запроса составляет порядка 60 микросекунд, рекомендуется отправлять на обработку запросы, исполнение которых займет хотя бы столько же времени
- С помощью пакетной обработки, одной из основных новых функций DirectX 12, можно добиться очень низкой латентности (отлично подойдет для VR). Нужно понимать, что пакетная обработка поможет разгрузить CPU, но не GPU, особенно это относится к видеокартам AMD
- Очереди запросов позволяют повысить производительности почти на 10% (в случае корректной реализации), однако после дополнительных исследований производительность скорее всего вырастет
- Если разработчикам недостает видеопамяти, то DirectX 12 позволяет перенести часть ресурсов из видеопамяти в оперативную память, однако стоит помнить о латентности оперативной памяти
- В стандарт DirectX 12 включена поддержка нескольких GPU
- Разработчикам крайне важно осознавать ограничения пропускной способности интерфейсов PCI - большая часть пользователей все еще использует PCI 2.0, а не 3.0 (их пропускная способность отличается в два раза)
- DirectX 11 живее всех живых, он еще долго будет использоваться наравне с DirectX 12
- Разработчики не могут использовать микс из DirectX 11 и DirectX 12; вы либо используете только DirectX 12, либо не используете его вообще