OpenGL ES 2.0: можно предположить, что на мобильных устройствах смешивание относительно дешево?

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

Итак, удивительно контролируемый Uber мир Apple немного отличается от Android, но я провел несколько тестов и похоже, что мое смешивание только вдвое хуже по производительности, чем переключение с RGB555 на RGBA8888 (на двух устройствах, которые я пробовал).

Вопросы:

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

  • Применимо ли такое правило к смешиванию?

  • Есть ли где-нибудь список краеугольных тестовых устройств, что является результатом систематического анализа рынка? В форме: если он работает на этих устройствах, он будет работать в значительной степени на любом разумном устройстве?

  • Используете ли вы смешивание, и какой опыт он дает вашим клиентам?

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

2 ответа

Решение

Я сомневаюсь, что есть какое-то эмпирическое правило, в том числе и в мире Apple, завтра они могут решить перейти на другую архитектуру, и все ваши предположения обречены. Для Android слишком много поставщиков и архитектур, чтобы решить, какой порог смешивания должен быть хорошим для каждого. Единственное эмпирическое правило - использовать смешивание, когда это действительно необходимо. Таким образом, ответ на ваш вопрос таков: НЕЛЬЗЯ предполагать, что на мобильных устройствах смешивание относительно дешево. Смешивание требует чтения из памяти, а память на мобильных устройствах медленная.

Я провел дополнительное исследование, которым, я думал, поделюсь. Если вы цените мое расследование, дайте мне знать (upvote?), И я, вероятно, поделюсь с вами больше, когда узнаю больше.

Только с 1,8% устройств Android работает версия до API 8/2.2/Froyo, 98,2% устройств Android поддерживают OpenGL ES 2.0 (хотя API 2.2 имеет некоторые недостатки).

Я нашел следующую информацию о пике / максимуме /... для самых слабых чипов вышеуказанных брендов, которые поддерживают GLES20 (с учетом максимальной тактовой частоты):

  • Adreno 200 (22 миллиона треугольников в секунду, 133 миллиона пикселей в секунду)
  • Мали-200 (16 млн, 275 млн)
  • PowerVR SGX520 (7 Мбит / с, 100 Мбит / с)
  • Tegra APX 2500 (40 Мбит / с, 400 или 600 Мбит / с в зависимости от источника)

Самое дешевое Android-устройство, которое я смог найти сегодня, использует

  • MARVELL PXA910 800 МГц (10 или 20 Мбит / с, 200 Мбит / с)

где 20 миллионов треугольников в секунду кажутся теоретическим максимумом, если не нужно рисовать половину треугольников (посредством отбраковки).

Я нахожу факт, что Марвелл различает два пиковых значения, немного подозрительно; возможно, следует немного скептически относиться к цифрам Tegra, которые я нашел на рекламном слайде и на форуме. Кроме того, у меня есть устройство с PowerVR SGX530 (14 Мбит / с, 200 Мбит / с), которое отображает мое тестовое приложение для экрана 800x480 как минимум с той же скоростью, что и мои устройства Tegra 2 T20 (71 Мбит / с, 1200 Мбит / с), которое я пробовал с разрешением 1024x600.,

У меня есть два идентичных устройства с Tegra 2 T20, и одно из них работает под управлением Android 3, поэтому мое тестовое приложение работает быстрее, чем одно под управлением Android 2. Однако оба работают на неофициальных выпусках Android. Я думал, что это может привести к неоптимальному использованию графического процессора, но загрузка процессора показана как смехотворно низкая. Возможно, существуют накладные расходы SurfaceView, которые начинают значительно превышать определенную частоту кадров, но устройство PowerVR также работает под управлением Android 2.

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

Другие вопросы по тегам