Работа графических процессоров на платформе Android* с процессорами Intel® Atom™

1. Введение

В этой главе описываются мобильные графические процессоры (GPU) и способы оптимизации программ для GPU, которыми оснащаются устройства на базе процессоров Intel® Atom™.

2. Развитие графических процессоров

 

Важно понимать, как складывался ход развития GPU. Изначально мобильные устройства применяли программную растеризацию для получения изображения на экране. Но программная растеризация приводила к чрезмерной нагрузке на CPU, который также выполнял все остальные задачи современных ОС. В системе Android CPU выполняет многочисленные фоновые задачи, обрабатывает ввод-вывод данных и запуск приложений. Если принять во внимание множество графических анимационных элементов и эффектов, применяющихся для поддержания интуитивного реагирования пользовательского интерфейса, становится очевидной необходимость применения GPU.

Процессор Intel Atom разработан для обеспечения наибольшей производительности и длительности работы мобильного устройства от аккумулятора. CPU Intel Atom разработан специально для мобильных устройств; аналогичным образом для мобильных устройств разработаны и GPU. В основе первоначальной архитектуры GPU лежит OpenGL* ES. В следующей главе описывается интерфейс API OpenGL ES, позволяющий разработчикам создавать графические приложения для Android.  

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

 OpenGL ES 1.1 поддерживает только фиксированные конвейеры функций. Разработчики GPU, предназначенных для OpenGL ES 1.1, могут создавать очень простые специализированные GPU. Но мобильные устройства развивались, а это ограничение сдерживало возможность применения современных графических технологий. В OpenGL ES была расширена поддержка программируемого конвейера (т.е. шейдеров) в версии OpenGL ES 2.0. Такое решение позволило создавать более совершенные решения, в том числе и в с составе современных трехмерных игр. Но и GPU при этом стали существенно сложнее.

OpenGL ES 2.0 — это самый распространенный графический API. Но на этом история не заканчивается. Скоро появится версия OpenGL ES 3.0 с возможностью применения еще более совершенных графических технологий.

 

3. Два основных типа мобильных графических процессоров

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

GPU Тип обработки
Intel® HD Graphics Немедленный 
AMD Radeon* Немедленный 
NVIDIA GeForce* Немедленный 
NVIDIA Tegra* Немедленный 
Qualcomm Adreno* Немедленный/отложенный
Imagination Technologies PowerVR* Отложенный
ARM Mali* Отложенный

Таблица 1. Основные поставщики GPU и типы выпускаемх ими GPU. Примечание. Графический процессор Intel HD Graphics входит в состав процессоров Intel® Core™. Современные процессоры Intel® Atom™ используют GPU на базе PowerVR.

Источник: Intel Corporation, 2012 г.

3.1. Преимущества GPU с отложенной обработкой

 

GPU с отложенным режимом обладают несколькими крупными преимуществами. Во-первых, можно лучше упорядочить данные, отправляdемые в GPU. Это позволит существенно сократить требуемый объем памяти. Оперативная память потребляет немало электроэнергии, поэтому ограничение использования памяти поможет также экономнее расходовать электричество.

Поскольку все данные, необходимые для отрисовки кадра, уже известны, работу можно без труда разделить на небольшие фрагменты. PowerVR часто называют отложенной фрагментарной отрисовкой. Это обусловлено тем, что GPU собирает все команды и данные, необходимые для отрисовки кадра, а затем разделяет работу на небольшие фрагменты. Фрагмент (или плитка) — это просто квадратный участок пикселей. При этом размер фрагмента подбирается таким образом, чтобы он умещался в высокоскоростной кэш. Дополнительные сведения о преимуществах PowerVR см. в документации по адресу: http://www.imgtec.com/powervr/insider/docs/POWERVR%20Series5%20Graphics.SGX%20architecture%20guide%20for%20developers.1.0.8.External.pdf.

Отложенная отрисовка также имеет ряд ограничений. Объем внутренней памяти видеоадаптера и кэша GPU не безграничен. Если кадр содержит слишком много данных, которые требуется обработать, то работу придется разделить на несколько проходов. Из-за такого повторения одинаковых действий существенно возрастают издержки, а вычислительные ресурсы расходуются впустую. Для отложенного режима работы GPU существует множество приемов оптимизации, позволяющих избегать таких ситуаций.

3.2. Примечание о значении термина «отложенный»

 

Термин «отложенный» используется в области компьютерной графики слишком часто. Существует множество производных терминов: GPU с отложенной обработкой, отложенная отрисовка, отложенное затенение, отложенное освещение и отложенная растеризация. Проблема осложняется тем, что в разных случаях этот термин имеет разное значение, поэтому его всегда следует использовать в контексте. Не следует путать GPU с отложенной обработкой и методики отложенной отрисовки. Методики отложенной отрисовки обычно предполагают сбор данных сцены в g-буфере и применение освещения и затенения в пространстве экрана.

3.3. Преимущества GPU с немедленной обработкой

 

GPU с немедленной обработкой уже в течение нескольких десятилетий применяются на большинстве настольных ПК. Для отрисовки в немедленном режиме создано множество методик, приемов и способов оптимизации. Сами по себе GPU с немедленной обработкой стали весьма мощными и совершенными.

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

В течение многих лет GPU с немедленной обработкой проектировались для настольных ПК с мощными блоками питания. В архитектуре таких GPU большая вычислительная мощность достигалась за счет пренебрежения экономией электроэнергии. Именно по этой причине на рынке мобильных устройств преобладают GPU с отложенной обработкой. Впрочем, исследования и доработки GPU с немедленной обработкой позволили резко снизить уровень потребления электроэнергии; примером экономичных GPU с немедленной обработкой является GPU Intel HD Graphics, входящий в состав процессоров Intel Core.

4. Оптимизация для GPU Intel

 

Как показано в таблице 2, процессоры Intel Atom, предназначенные для платформы Android, используют GPU PowerVR.

Серия процессоров Intel Atom Ядро GPU
Z24XX PowerVR SGX 540
Z2580 PowerVR SGX 544MP2

Таблица 2. Процессоры Intel Atom, предназначенные для платформы Android, и их GPU. (Дополнительные сведения о процессорах см. по адресу ark.intel.com.)

Источник: Intel Corporation, 2012 г.

Ознакомьтесь с документацией компании Imagination Technologies по PowerVR. Компания Imagination Technologies предоставляет советы и рекомендации по оптимизации, которые в равной степени актуальны и для платформы Intel, и для других платформ, на которые устанавливаются GPU PowerVR.

Для подробного изучения оборудования PowerVR ознакомьтесь с руководством по архитектуре Imaginations Technologies: http://www.imgtec.com/powervr/insider/docs/POWERVR%20Series5%20Graphics.SGX%20architecture%20guide%20for%20developers.1.0.8.External.pdf.

Сведения об оптимизации для оборудования PowerVR см. в рекомендациях для разработчиков: http://www.imgtec.com/powervr/insider/docs/POWERVR%20SGX.OpenGL%20ES%202.0%20Application%20Development%20Recommendations.1.8f.External.pdf.При этом обращайте внимание на «золотые правила».

На мобильных устройствах важно использовать эффективные методики сжатия текстур. При правильном сжатии текстур уменьшается объем загружаемых данных, повышается качество изображения и производительность, снижается используемый объем памяти. Но на платформе Android это одна из основных проблем. Android поддерживает широкий набор оборудования, поэтому не существует какого-либо одного формата текстур, хорошо работающего на всех устройствах. Для OpenGL ES требуется только, чтобы оборудование поддерживало сжатие текстур ETC. Этот формат, к сожалению, не поддерживает альфа-канал. Поэтому разработчикам приходится поддерживать множество форматов текстур. В случае с PowerVR разработчикам следует применять PVRTC для сжатия всех текстур.

5.    Заключение

 

В этой статье кратко описаны мобильные графические процессоры (GPU) и способы оптимизации программ для GPU, которыми оборудуются устройства на базе процессоров Intel® Atom. В следующей главе подробнее рассматривается API OpenGL ES, на основе которого работают GPU.