Что означает статистика использования Tiler в инструменте iPhone OpenGL ES?
Я пытался выполнить некоторые оптимизации производительности OpenGL ES, пытаясь увеличить количество треугольников в секунду, которое я могу визуализировать в своем приложении для iPhone, но я попал в кирпичную стену. Я пытался преобразовать мои типы данных OpenGL ES из фиксированной в плавающую точку ( по рекомендации Apple), чередуя объекты буфера вершин и сводя к минимуму изменения в состоянии рисования, но ни одно из этих изменений не повлияло на скорость рендеринга. Несмотря ни на что, я не могу выдвинуть свое приложение выше 320000 треугольников / с на iPhone 3G с ОС 3.0. В соответствии с этим тестом, я должен быть в состоянии достичь 687 000 треугольников / с на этом оборудовании с плавным затенением, которое я использую.
В моем тестировании, когда я запускаю инструмент производительности OpenGL ES в Инструментах против работающего устройства, я вижу, что статистика "Использование Tiler" достигает почти 100% при рендеринге моего теста, но "Использование Renderer" только достигает около 30%. Это может дать представление о том, что является узким местом в процессе отображения, но я не знаю, что означают эти значения, и я не нашел никакой документации по ним. У кого-нибудь есть хорошее описание того, что означает эта и другая статистика в инструменте iPhone OpenGL ES? Я знаю, что PowerVR MBX Lite в iPhone 3G - это рендерер с отложенным отображением на основе тайлов, но я не уверен, какая разница будет между рендерером и Tiler в этой архитектуре.
Если это поможет каким-либо образом, исходный код (BSD-лицензированный) этого приложения доступен, если вы хотите загрузить и протестировать его самостоятельно. В текущей конфигурации он запускает небольшой тест каждый раз, когда вы загружаете новую молекулярную структуру, и выводит треугольники / с на консоль.
2 ответа
Процент использования Tiler Utilization и Renderer Utilization измеряет рабочий цикл оборудования обработки вершин и фрагментов, соответственно. На MBX использование Tiler обычно масштабируется с количеством данных вершин, отправляемых в GPU (с точки зрения как количества вершин, так и размера атрибутов, отправляемых на каждую вершину), а использование фрагментов обычно увеличивается с перерисовкой и выборкой текстур.,
В вашем случае лучше всего было бы уменьшить размер каждой отправляемой вершины. Для начала, я бы попробовал связать ваши атомы и связи по цвету и отправить каждую из этих корзин, используя постоянный цвет вместо массива. Я бы также предложил исследовать, подходят ли шорты для ваших позиций и нормалей, учитывая соответствующее масштабирование. В этом случае вам также может понадобиться делать выборку по положению, если шорты, масштабированные для обеспечения достаточной точности, не охватывают необходимый вам диапазон. Методы такого рода могут потребовать дополнительных вызовов отрисовки, но я подозреваю, что повышение пропускной способности вершин перевесит дополнительную нагрузку на ЦП при вызове отрисовки.
Обратите внимание, что, как правило, полезно (в MBX и других местах), чтобы каждый атрибут вершины начинался с 32-битной границы, что подразумевает, что вы должны дополнить свои позиции и нормализовать до 4 компонентов, если вы переключите их на шорты. Особенности платформы MBX также делают ее такой, что вы действительно хотите включить компонент W позиции в вызове glVertexPointer в этом случае.
Вы можете также рассмотреть возможность использования альтернативных методов освещения, таких как DOT3, для данных полигона, в частности, для сфер, но это требует особой осторожности, чтобы убедиться, что вы не делаете привязку к фрагменту рендеринга или не отправляете больше данных вершин, чем раньше.
Отличный ответ, @Pivot! Для справки, этот документ Apple определяет эти термины:
- Использование рендерера%. Процент времени, затраченного графическим процессором на выполнение обработки фрагмента.
- Утилизация плитки%. Процент времени, затраченного графическим процессором на обработку вершин и мозаику.
- Использование устройства%. Процент времени, затраченного графическим процессором на выполнение какой-либо мозаики или рендеринга