Поделиться через


Анализ кадров графики

С помощью анализа кадров графики в модуле диагностики графики Visual Studio можно анализировать и оптимизировать производительность отрисовки в приложениях или играх, использующих Direct3D.

Примечание

Начиная с Visual Studio 2013 с обновлением 3 окна средств диагностики графики размещаются в отдельной копии среды Visual Studio.В этой специальной среде, которая называется "Анализ графики", нет ненужных меню и параметров, но в остальном анализ кадров и рабочий процесс остаются такими же, как и раньше.Подробнее об этом изменении см. в разделе Общие сведения о диагностике графики.

Анализ кадров

Функция анализа кадров использует для диагностики данные из файла журнала графики, применяя ее для получения сводной информации о производительности отрисовки. Информация о производительности не записывается в журнал во время захвата. Она создается позднее во время анализа кадров с помощью событий синхронизации и сбора статистики при воспроизведении кадра. Такой подход имеет ряд преимуществ в сравнении с записью информации о производительности во время захвата.

  • Анализ кадров позволяет получать усредненные результаты для нескольких воспроизведений одного кадра, что обеспечивает статистически достоверные данные производительности.

  • Анализ кадров позволяет получать информацию о производительности для конфигураций оборудования и устройств, отличных от тех, где были захвачены данные.

  • Анализ кадров позволяет получать новые сводки производительности на основе ранее захваченных данных, например, если драйверы GPU были оптимизированы или предоставляют дополнительные возможности отладки.

Помимо этих преимуществ, с помощью анализа кадров также можно изменять способ отрисовки кадра во время воспроизведения. Таким образом можно получать информацию о том, как эти изменения могут повлиять на производительность отрисовки приложения. С помощью этой информации можно выбрать наиболее подходящую из возможных стратегий оптимизации, не применяя их все, чтобы захватить данные и сравнить результаты самостоятельно.

Хотя анализ кадров в первую очередь предназначен для повышения производительности отрисовки, он может быть не менее полезен для повышения качества изображения при заданном уровне производительности или для снижения энергопотребления GPU.

Просмотреть демонстрацию возможностей анализа кадров в приложении можно в видеоролике Анализ кадров графики Visual Studio на канале 9.

Использование анализа кадров

Прежде чем использовать анализ кадров, необходимо захватить графические данные из работающего приложения, так же как при использовании диагностики графики. Затем в окне документа журнала графики (.vsglog) выберите вкладку Анализ кадра.

Перейдите на вкладку "Анализ кадра".

По завершении анализа выводятся результаты. В верхней части вкладки анализа кадров находятся временная шкала и сводная таблица. В нижней части находятся таблицы с подробными данными. Если во время воспроизведения произошли ошибки или были получены предупреждения, сводная информация о них выводится над временной шкалой. Переходя по ссылкам в этой области, можно узнать больше об ошибках и предупреждениях.

Интерпретация результатов

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

Некоторые результаты непосредственно указывают на то, как вариант влияет на производительность отрисовки.

  • Если вариант "Билинейная фильтрация текстур" показал прирост производительности, то использование билинейной фильтрации текстур в приложении приведет к такому же приросту производительности.

  • Если вариант "Окно просмотра 1 x 1" показал прирост производительности, то уменьшение размеров целевых объектов отрисовки в приложении повысит производительность отрисовки.

  • Если вариант "Сжатие текстур BC" показал прирост производительности, то использование сжатия текстур BC в приложении приведет к такому же приросту производительности.

  • Если вариант 2 x MSAA имеет почти такую же производительность, что и вариант 0 x MSAA, можно включить вариант 2 x MSAA в приложении, чтобы повысить качество отрисовки без снижения производительности.

Другие результаты могут содержать менее явные указания на производительность приложения.

  • Если вариант "Окно просмотра 1 x 1" показывает очень значительный прирост производительности, возможно, скорость заполнения в приложении выше возможной. Если этот вариант не показывает прироста производительности, возможно, приложение обрабатывает слишком много вершин.

  • Если вариант "Формат целевого объекта отрисовки с глубиной цвета 16 бит" показывает значительный прирост производительности, возможно, приложение потребляет слишком много пропускной способности памяти.

  • Если вариант "Половинные/четвертные размеры текстур" показывает значительный прирост производительности, возможно, текстуры занимают слишком много памяти, используют слишком много пропускной способности или используют кэш текстур неэффективно. Если этот вариант не сказывается на производительности, возможно, использование более крупных, подробных текстур не снизит производительность.

Если доступны аппаратные счетчики, вы можете использовать их для сбора очень подробной информации о том, почему производительность отрисовки приложения ухудшается. Все устройства функционального уровня 9.2 и более высокого поддерживают запросы перекрытия глубины (счетчик пикселей перекрыто) и метки времени. Могут быть доступны и другие аппаратные счетчики, если изготовитель GPU реализовал их и предоставил доступ к ним посредством драйвера. Их можно использовать для уточнения причины результатов, отображаемых в сводной таблице. Например, установив процент пикселей, которые были перекрыты при выполнении тесты глубины, можно определить, является ли превышение негативным фактором.

Временная шкала и сводная таблица

По умолчанию временная шкала и сводная таблица отображаются, а другие разделы свернуты.

Временная шкала

На временной шкале показано время выполнения вызовов Draw относительно друг друга. Так как более длинные полоски соответствуют более длительному выполнению вызовов Draw, с их помощью можно определить наиболее затратные по времени вызовы в кадре. Если захваченный кадр содержит очень большое число вызовов Draw, несколько вызовов Draw объединяются в одну полоску, длина которой соответствует суммарному времени выполнения вызовов.

Временная шкала с отображением затрат на вызов рисования.

Чтобы увидеть, какому событию вызова Draw соответствует полоска, наведите на нее указатель. При выборе полоски список событий синхронизируется с этим событием.

Таблица

В таблице с числами под временной шкалой показана производительность каждого варианта отрисовки для каждого вызова Draw относительно способа отрисовки по умолчанию в приложении. Каждый столбец соответствует отдельному варианту отрисовки, а каждая строка представляет отдельный вызов Draw, указанный в самом левом столбце. Отсюда можно перейти по ссылке к событию в окне "Список событий графики".

Сводная таблица с отображением различных вариантов.

Во втором слева столбце сводной таблицы показано базовое время отрисовки приложения, то есть время выполнения вызова Draw с помощью варианта отрисовки, используемого в приложении по умолчанию. В остальных столбцах показана относительная производительность каждого варианта отрисовки в процентах от базового показателя, что позволяет легко видеть, улучшилась ли производительность. Если значение превышает 100 процентов, вызов выполнялся дольше, чем при базовом варианте, то есть производительность снизилась. Если значение меньше 100 процентов, вызов выполнялся быстрее, то есть производительность возросла.

Значения абсолютного базового времени и относительного времени для вариантов отрисовки на самом деле являются средними значениями, полученными в результате нескольких вызовов (по умолчанию 5). Усреднение позволяет обеспечить достоверность и согласованность данных. Наведя указатель на ячейку в таблице, можно узнать минимальное, максимальное, среднее и центральное значения времени, полученные при выполнении данного вызова Draw с помощью данного варианта отрисовки. Также отображается базовое время.

"Горячие" вызовы Draw

Для привлечения внимания к вызовам Draw, которые занимают большую часть общего времени отрисовки или могут выполняться необычно медленно по причинам, которых можно избежать, строка, содержащая такие "горячие" вызовы Draw, выделяется красным цветом, если ее собственное базовое время более чем на одно стандартное отклонение превышает среднее базовое время всех вызовов Draw в кадре.

Этот вызов DrawIndexed имеет активные и пассивные варианты.

Статистическая значимость

Для привлечения внимания к вариантам отрисовки, имеющим наибольшую важность, при анализе кадров определяется статистическая значимость каждого из вариантов отрисовки. Значимые варианты выделяются полужирным шрифтом. Варианты, повышающие производительность, выделяются зеленым цветом, а снижающие производительность — красным. Результаты, не имеющие статистической значимости, имеют обычный шрифт.

Статистическая релевантность варианта вызова рисования

Для определения статистической значимости анализ кадров использует t-критерий Стьюдента.

Таблица подробных сведений

Под сводной таблицей находится таблица подробных сведений, которая по умолчанию свернута. Ее содержимое зависит от аппаратной платформы компьютера воспроизведения. Информацию о поддерживаемых аппаратных платформах см. в разделе Hardware Support.

Платформы, не поддерживающие аппаратные счетчики

Большинство платформ не полностью поддерживают аппаратные счетчики GPU. К ним относятся все GPU, предлагаемые в настоящее время компаниями Intel, AMD и nVidia. Если аппаратные счетчики для сбора данных отсутствуют, отображается только одна таблица подробных сведений, которая содержит среднее абсолютное время для всех вариантов.

Таблица сведений и некоторые варианты воспроизведения.

Платформы, поддерживающие аппаратные счетчики

Для платформ, поддерживающих аппаратные счетчики GPU, например на основе микросхемы SOC nVidia T40 и всех микросхем SOC Qualcomm, отображаются несколько таблиц подробных сведений (по одной для каждого варианта). Данные каждого доступного счетчика собираются для каждого варианта отрисовки и отображаются в собственной таблице подробных сведений.

Если счетчики оборудования поддерживаются, они отображаются.

Данные аппаратных счетчиков позволяют получить очень подробное представление о поведении конкретных аппаратных платформ для каждого вызова Draw, что может помочь вам точно установить причины узких мест производительности.

Примечание

Разные аппаратные платформы поддерживают разные счетчики — никаких стандартов нет.Доступные счетчики и предоставляемые ими данные определяются исключительно изготовителем GPU.

Области маркеров и события

Анализ кадров поддерживает пользовательские маркеры и группы событий. Они отображаются в сводной таблице и в таблице подробных сведений.

Для создания маркеров и групп можно использовать API ID3DUserDefinedAnnotation или устаревшие API семейства D3DPERF_. При использовании семейства API D3DPERF_ каждому маркеру и группе можно назначить цвет. Полоса этого цвета будет отображаться в окне анализа кадров в строке, содержащей соответствующий маркер события или группу событий. Это позволяет быстро определять важные события или группы событий отрисовки.

Предупреждения и ошибки

Иногда анализ кадров завершается с предупреждениями или ошибками, сводка по которым приводится над временной шкалой, а подробная информация — в нижней части вкладки анализа кадров.

Как правило, предупреждения и ошибки служат только для информации и не требуют вмешательства.

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

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

Повторные попытки

Если во время анализа кадров в GPU происходит смена состояний питания, затронутый проход анализа необходимо выполнить повторно, так как тактовая частота GPU изменилась и относительные результаты измерения времени стали недействительны.

Число повторных попыток анализа кадров ограничено 10 попытками. Если в вашей платформе используется агрессивная модель управления питанием или технология Clock gating, это может привести к сбою анализа кадров и получению ошибки из-за превышения числа повторных попыток. Эту проблему можно устранить, уменьшив тактовую частоту и изменив модель управления электропитанием на менее агрессивную, если платформа допускает это.

Поддержка оборудования

Метки времени и запросы перекрытия

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

Примечание

Хотя метки времени поддерживаются на всех платформах, которые поддерживают анализ кадров, их точность и согласованность меняется от платформы к платформе.

Счетчики GPU

Поддержка аппаратных счетчиков GPU зависит от оборудования.

Так как ни одно из устройств GPU, в настоящее время предлагаемых компаниями Intel, AMD или nVidia для компьютеров, не обеспечивает надежной поддержки аппаратных счетчиков GPU, при анализе кадров данные этих счетчиков не собираются. Однако при анализе кадров собираются данные аппаратных счетчиков для GPU, которые обеспечивают их надежную поддержку:

  • системы на кристаллах Qualcomm (любые, поддерживающие Windows Phone);

  • nVidia T40 (Tegra4).

На всех остальных платформах, поддерживающих анализ кадров, сбор данных аппаратных счетчиков GPU не производится.

Примечание

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

Windows Phone

Метки времени, запросы перекрытия и аппаратные счетчики GPU поддерживаются только на телефонах Windows Phone, которые изначально поставляются с Windows Phone 8.1. Эти элементы нужны при анализе кадров для воспроизведения файла журнала графики. Телефоны Windows Phone, которые изначально поставлялись с ОС Windows Phone 8, не поддерживают анализ кадров, даже если на них было выполнено обновление до Windows Phone 8.1.

Неподдерживаемые сценарии

Некоторые способы использования анализа кадров не поддерживаются или просто не рекомендуются.

WARP

Анализ кадров предназначен для сбора данных и оптимизации производительности отрисовки на реальном оборудовании. Запуск анализа кадров на устройствах WARP возможен — эмулятор Windows Phone работает на основе WARP. Но обычно это нецелесообразно, так как производительность WARP на быстром ЦП ниже, чем производительность даже самого простого из современных графических процессоров. Кроме того, производительность WARP может существенно различаться в зависимости от базового ЦП.

Воспроизведение захватов высокого функционального уровня на устройствах более низкого уровня

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

Примечание

Хотя необходимо учитывать проблемы, связанные с функциональным уровнем, захватывать и воспроизводить файлы журнала графики можно на разных устройствах и в разных конфигурациях оборудования.Например, можно захватить графические данные на устройстве Windows Phone и воспроизвести их на настольном компьютере или наоборот.В обоих случаях журнал графики можно воспроизвести, если файл журнала не содержит API и не использует функциональные уровни, которые не поддерживаются на компьютере воспроизведения.

Direct3D 10 и более ранних версий

Анализ кадров поддерживается только для API Direct3D 11. Если приложение вызывает API Direct3D 10, средству анализа кадров не удастся распознать его и собрать данные несмотря на то, что оно распознается модулем диагностики графики. Если в приложении используются API Direct3D11 и Direct3D 10, собираются данные только по вызовам Direct3D 11.

Примечание

Это относится только к вызовам API Direct3D, но не к функциональным уровням.При использовании API Direct3D 11, Direct3D 11.1 или Direct3D 11.2 можно применять любой функциональный уровень. Анализ кадров будет выполняться в любом случае.

Варианты

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

Вариант

Описание

Размер окна просмотра 1 x 1

Размеры окна просмотра для всех целевых объектов отрисовки уменьшаются до 1 x 1 пикселей.

Дополнительные сведения см. в разделе Вариант размера окна просмотра (1x1).

0 x MSAA

Многовыборочное сглаживание (MSAA) отключается для всех целевых объектов отрисовки.

Дополнительные сведения см. в разделе Варианты 0x/2x/4x MSAA.

2 x MSAA

Двукратное многовыборочное сглаживание (MSAA) включается для всех целевых объектов отрисовки.

Дополнительные сведения см. в разделе Варианты 0x/2x/4x MSAA.

4 x MSAA

Четырехкратное многовыборочное сглаживание (MSAA) включается для всех целевых объектов отрисовки.

Дополнительные сведения см. в разделе Варианты 0x/2x/4x MSAA.

Точечная фильтрация текстур

Для всех соответствующих образцов текстур устанавливается режим фильтрации DXD11_FILTER_MIN_MAG_MIP_POINT (точечная фильтрация текстур).

Для получения дополнительной информации см. Варианты точечной, билинейной, трилинейной и анизотропной фильтрации текстур.

Билинейная фильтрация текстур

Для всех соответствующих образцов текстур устанавливается режим фильтрации DXD11_FILTER_MIN_MAG_LINEAR_MIP_POINT (билинейная фильтрация текстур).

Для получения дополнительной информации см. Варианты точечной, билинейной, трилинейной и анизотропной фильтрации текстур.

Трилинейная фильтрация текстур

Для всех соответствующих образцов текстур устанавливается режим фильтрации DXD11_FILTER_MIN_MAG_MIP_LINEAR (трилинейная фильтрация текстур).

Для получения дополнительной информации см. Варианты точечной, билинейной, трилинейной и анизотропной фильтрации текстур.

Анизотропная фильтрация текстур

Для всех соответствующих образцов текстур устанавливается режим фильтрации DXD11_FILTER_ANISOTROPIC, а свойству MaxAnisotropy присваивается значение 16 (16-кратная анизотропная фильтрация текстур).

Для получения дополнительной информации см. Варианты точечной, билинейной, трилинейной и анизотропной фильтрации текстур.

Формат целевого объекта отрисовки с глубиной цвета 16 бит

Для всех целевых объектов отрисовки и буферов фона задается формат пикселей DXGI_FORMAT_B5G6R5_UNORM (глубина цвета 16 бит, формат 565).

Дополнительные сведения см. в разделе Вариант формата однобуферной прорисовки 16 бит/пкс.

Создание MIP-карт

MIP-карты включаются для всех текстур, не являющихся целевыми объектами отрисовки.

Для получения дополнительной информации см. Вариант создания MIP-карты.

Половинные размеры текстур

Размеры всех текстур, не являющихся целевыми объектами отрисовки, уменьшаются вдвое по сравнению с исходными. Например, текстура размером 256 x 128 уменьшается до 128 x 64 текселя.

Для получения дополнительной информации см. Вариант размера текстур: половина/четверть.

Четвертные размеры текстур

Размеры всех текстур, не являющихся целевыми объектами отрисовки, уменьшаются в четыре раза по сравнению с исходными. Например, текстура размером 256 x 128 уменьшается до 64 x 32 текселя.

Для получения дополнительной информации см. Вариант размера текстур: половина/четверть.

Сжатие текстур BC

Включает блочное сжатие всех текстур, которые имеют вариант формата пикселей B8G8R8X8, B8G8R8A8 или R8G8B8A8. Варианты формата B8G8R8X8 сжимаются с помощью BC1; варианты форматов B8G8R8A8 и R8G8B8A8 сжимаются с помощью BC3.

Для получения дополнительной информации см. Вариант сжатия текстур BC.

Результаты для большинства вариантов представляют собой четкие указания: "Уменьшение размера текстур вдвое повысит производительность на 25 процентов" или "Включение варианта 2 x MSAA приведет к снижению производительности всего на 2 процента". Другие варианты могут потребовать дополнительной интерпретации. Например, если вариант, изменяющий размеры окна просмотра на 1 x 1, приводит к значительному приросту производительности, это может указывать на то, что отрисовка замедляется из-за низкой скорости заполнения. Если же производительность изменяется незначительно, это может указывать на то, что отрисовка замедляется из-за обработки вершин.