Анализ использования пропускной способности памяти текстур

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

Счетчики Qualcomm Adreno

На устройствах с графическими процессорами Qualcomm Adreno некоторые заметные счетчики включают в себя:

Прилавок Описание
Полоса чтения памяти текстур (байт/секунда) Пропускная способность чтения текстурных данных из внешней памяти.
% промахов по текстуре L1 Промах кэша L1 при загрузке текстур.
% текстур небазового уровня Процент выборок текстур, являющихся MIP-картами.
% анизотропной фильтрации Процент текселей, прошедших анизотропную фильтрацию.

Счетчики ARM Мали

На устройствах с графическими процессорами ARM Mali к некоторым заметным счетчикам относятся:

Прилавок Описание
Текстуры читают биты из внешней памяти Биты данных, считываемые из внешней памяти текстурным блоком, усредняются по шейдерным ядрам.
Биты чтения текстур из кэша L2 Биты данных, считываемые из кэша L2 текстурным блоком, усредняются по шейдерным ядрам.
[Более]

Чтобы вычислить общую пропускную способность на основе средних тактов чтения, значение счетчика умножается на ширину шины (обычно 16 байт) и общее количество ядер шейдера.

Встречный анализ

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

Пропускная способность чтения памяти текстур для одного кадра со средним значением 565 МБ/с и пиковым значением 2,30 ГБ/с.
Рис. 1. Пропускная способность чтения памяти текстур для одного кадра со средним значением 565 МБ/с и пиковым значением 2,30 ГБ/с.

Мы рекомендуем среднюю пропускную способность чтения памяти текстур не выше 1 ГБ/с и пиковую пропускную способность не выше 3 ГБ/с. Промах кэша текстур L1 также не должен превышать 10%. Более высокие значения пропускной способности или кэша L1 могут указывать на более глубокие проблемы с текстурами, в том числе:

  • Текстуры слишком велики . Большие текстуры увеличивают размер пакета, стоят дороже и могут снизить эффективность кэша.
  • Текстуры несжаты . Все телефоны Android поддерживают некоторые типы сжатия текстур, будь то ETC1 или ASTC. Текстуры следует сжимать, чтобы уменьшить размер пакета и уменьшить пропускную способность текстур.
  • Прочее : следует учитывать множество других проблем с текстурами, включая текстуры степени 2, MIP-маппинг, анизотропную фильтрацию и многое другое. Некоторые из них можно наблюдать из профиля системы, как описано ниже, тогда как другие могут потребовать более глубокого изучения.

Для трехмерных игр со свободной камерой текстурные ресурсы должны использовать mipmapping , чтобы объекты, находящиеся на расстоянии от камеры, имели меньшую пропускную способность памяти, лучшую эффективность кэша текстур и лучшее качество изображения. Для устройств, использующих графические процессоры Qualcomm Adreno, значение % текстур небазового уровня в среднем ниже 10 % может указывать на неадекватное MIP-отображение.

Текстуры небазового уровня для одного кадра, среднее значение 9,2%.
Рисунок 2. Текстуры небазового уровня для одного кадра, среднее значение 9,2%.

Еще одним соображением является использование анизотропной фильтрации, которая описывается счетчиком % анизотропной фильтрации для графических процессоров Qualcomm Adreno для доли текселей, подвергающихся анизотропной фильтрации. Хотя это может улучшить качество изображения в некоторых играх, оно также может быть очень дорогим, и его использование следует сопоставлять с затратами на производительность графического процессора.

Процент анизотропной фильтрации для одного кадра, среднее значение 10,8%.
Рисунок 3. Процент анизотропной фильтрации для одного кадра, среднее значение 10,8 %.

Лучший способ диагностировать более конкретные проблемы — использовать трассировку профиля кадра для анализа текстурных ресурсов.