Пропускная способность памяти для данных вершин может стать потенциальным узким местом для производительности графического процессора вашей игры. В профиле системы AGI есть несколько счетчиков, которые могут помочь диагностировать проблемы с пропускной способностью памяти вершин.
Счетчики Qualcomm Adreno
На устройствах с графическими процессорами Qualcomm Adreno некоторые заметные счетчики включают в себя:
Прилавок | Описание |
---|---|
Чтение памяти вершин | Пропускная способность данных вершин, считываемых из внешней памяти. |
Среднее число байт/вершина | Средний размер данных вершин в байтах. |
% остановки выборки вершин | Процент тактовых циклов, в которых графический процессор блокируется при обработке данных вершин. |
Счетчики ARM Мали (НЗП)
На устройствах с графическими процессорами ARM Mali к некоторым заметным счетчикам относятся:
Прилавок | Описание |
---|---|
Загрузка/сохранение битов чтения из внешней памяти | Биты данных, считываемые из внешней памяти модулем загрузки/сохранения, усредняются по шейдерным ядрам. |
Загрузка/сохранение тактов чтения из кэша L2 | Биты данных, считываемые из кэша L2 модулем загрузки/сохранения, усредняются по ядрам шейдеров. |
[Более] |
Чтобы вычислить общую пропускную способность на основе средних тактов чтения, значение счетчика умножается на ширину шины (обычно 16 байт) и на общее количество ядер шейдера. [Более]
Встречный анализ
Чтобы измерить поведение этих счетчиков, вы можете измерить среднюю и пиковую пропускную способность в течение одного кадра графического процессора, который можно определить с помощью непрерывного блока использования графического процессора .
![Пропускная способность чтения памяти Vertex для одного кадра: среднее значение 327 МБ/с и пиковое значение 1,16 ГБ/с.](https://developer.android.google.cn/static/images/agi/vertex-memory-bw-images/sample_vert_bw.png?authuser=3&hl=ru)
Мы рекомендуем пиковую пропускную способность чтения вершинной памяти не более 1,5 ГБ/с и среднюю пропускную способность не более 500 МБ/с. Более высокие значения указывают на одну из нескольких распространенных проблем:
- Размер вершины слишком велик : вершины могут иметь большие атрибуты вершин или большое количество атрибутов вершин, что в целом влияет на время затенения вершин.
- Потоки атрибутов вершин не разделяются : атрибуты вершин чередуются в одном буфере, что снижает эффективность кэша.
- Слишком много вершин отправлено на кадр . Сложные модели и/или большое количество моделей могут занимать большую полосу пропускания и дольше закрашиваться.
Проблемы с размером вершин также можно диагностировать с помощью дорожки «Средние байты/вершины» , размер которой мы рекомендуем не превышать 32 байтов или вершин.
![Средний размер вершины для одного кадра, среднее значение 31,3 байта.](https://developer.android.google.cn/static/images/agi/vertex-memory-bw-images/sample_bytes_per_vert.png?authuser=3&hl=ru)
Лучший способ диагностировать, с какой из этих проблем вы можете столкнуться, — это провести трассировку профиля кадра для анализа форматов вершин .