GPA дает наглядное представление о системной производительности в режиме реального времени, позволяет отслеживать ошибки, обнаруживать локальные проблемы графических систем и многое другое. Мы побеседовали с Андреем Мироненко, ведущим программистом Gaijin Entertainment, и расспросили его о том, как он использует Graphics Performance Analyzers в своей работе.
В каких играх вы задействовали Intel GPA?
Первый раз мы воспользовались Intel GPA в нашей военной MMO War Thunder.
Почему возникла потребность в этом инструменте и какие задачи с его помощью вы решали?
Intel GPA мы использовали для поиска ошибок, профилирования GPU, а также анализа рендеринга. Другие инструменты для решения этих задач, например, тот же PIX, чуть менее удобны. Тем не менее, в работе мы не ограничиваемся использованием только Intel GPA. Есть множество других инструментов, включая сервисы собственной разработки, каждый из которых лучше подходит под определенные задачи. Поэтому для нас Intel GPA является полезным, но скорее прикладным инструментом.
Насколько проста работа с ним?
Инструмент показался нам достаточно удобным. Например, легко исправили ошибку с темной картинкой с определенными настройками. GPA не нужно запускать каждый раз - если монитор запущен, то он подключается к игре сам. Когда ошибка повторилась, нужно было только найти DIP, когда картинка становится темной, и оказалось, что использовалась не та текстура.
Какие результаты вы получили?
В целом, мы остались довольны результатами. Например, GPA помог нам исправить ошибку с отображением следов танков на поверхности.
Можете поделиться какими-либо интересными открытиями, связанными с GPA?
Весь стек кадра, включая ресурсы, сгруппирован по рендер таргетам, что сильно упрощает его анализ. Также он позволяет просматривать несколько дипов одновременно, что облегчает работу. К прочим удобствам стоит отнести то, что GPA умеет подгружать и отображать имена меток с опорными событиями в буфере команд. Отдельно стоит отметить удобство подключения к графическому приложению. Ну, и по сравнению с другими похожими инструментами, он достаточно стабильно работает, что немаловажно.
Какие проблемы не смог решить Intel GPA?
К сожалению, у Intel GPA отсутствует интеграция с кодом проекта. Также нет отладки шейдеров, и он всегда показывает вершинные буферы в одном 4-х компонентном формате. Плохо работает с рендер-таргетами с форматом отличным от RGBA8 (например, в режиме подсветки выделенной геометрии в предпросмотре кадра). Не работает с OpenGL (по крайней мере, в нашем проекте). Отсутствует возможность глубокого анализа GPU (хотя бы Intel), шейдерных инструкций и работы драйвера.
Шейдеры - специализированные программы, которые выполняются на видеокарте (GPU). Шейдеры бывают вершинные (англ. vertex shader), геометрические (англ. geometry shader) и пиксельные или фрагментные (англ. pixel shader). То есть, например, для каждого пикселя или вершины вызывается небольшая программа, которая что-то считает. Для работы с шейдерами используется свой специализированный язык (C).
Спасибо, хороших вам игр!