OpenGL аппаратные процессоры ES

Весь в настоящее время поставляющий iPhone, iPad и устройства iPod Touch используют графические процессоры PowerVR SGX (535, 543, и 554). Эти процессоры поддерживают OpenGL ES 2.0 и также поддерживают OpenGL ES 1.1 путем эффективной реализации конвейера стандартных функций с помощью программ построения теней.

Таблица 1-1 описывает каждую комбинацию устройства процессора.

Таблица 1-1  совместимость аппаратного обеспечения машинной графики iOS

Совместимость устройства

Аппаратная платформа PowerVR

OpenGL версии ES поддерживается

iPod Touch (третьи и четвертые поколения)

SGX 535

1.1, 2.0

iPod Touch (пятое поколение)

SGX 543

1.1, 2.0

iPhone 3GS, iPhone 3GS (Китай) и iPhone 4

SGX 535

1.1, 2.0

iPhone 4S и iPhone 5

SGX 543

1.1, 2.0

Wi-Fi iPad и Wi-Fi iPad + 3G

SGX 535

1.1, 2.0

iPad 2 Wi-Fi, iPad 2 Wi-Fi + 3G, iPad 3 Wi-Fi и iPad 3 Wi-Fi + 3G

SGX 543

1.1, 2.0

iPad 4 Wi-Fi и iPad 4 Wi-Fi + 3G

SGX 554

1.1, 2.0

Wi-Fi iPad Mini и Wi-Fi iPad Mini + 3G

SGX 543

1.1, 2.0

Аппаратная платформа PowerVR SGX

Imagination Technologies имеет несколько полезных ссылок о технологиях PowerVR:

Основанный на мозаике задержанный рендеринг

Аппаратные средства серии PowerVR SGX используют метод, известный как основанный на мозаике задержанный рендеринг (TBDR). При вызове OpenGL функции ES для представления команд рендеринга аппаратным средствам, те команды буферизуются, пока большой список команд не накапливается. Аппаратные средства представляют эти команды как единственную работу путем деления кадрового буфера на мозаики и затем рисования команд один раз для каждой мозаики с каждой мозаикой, представляющей только примитивы, которые видимы в нем. Главное преимущество к задержанному средству рендеринга - то, что оно получает доступ к памяти очень эффективно. Разделение представляющий в мозаиках позволяет GPU, эффективнее кэшируют пиксельные значения от кадрового буфера, делая тестирование глубины и смешивание более эффективными.

Задержанный рендеринг также позволяет GPU выполнять удаление невидимой поверхности, прежде чем будут обработаны фрагменты. Пиксели, которые не видимы, отбрасываются, не выбирая текстуры или выполняя обработку фрагмента, значительно сокращая вычисления, которые GPU должен выполнить для рендеринга мозаики. Для получения большей части выгоды от этой функции нарисуйте как можно больше кадра с непрозрачным содержанием и минимизируйте использование смешивания, тестирования альфа-версии, и discard инструкция в программах построения теней GLSL. Поскольку аппаратные средства выполняют удаление невидимой поверхности, не необходимо для Вашего приложения сортировать примитивы по всей длине.

Некоторые операции под задержанным средством рендеринга являются более дорогими, чем они находились бы под традиционным потоковым средством рендеринга. Пропускная способность памяти и вычислительные сбережения, описанные выше, выполняют лучше всего при обработке больших сцен. Когда аппаратные средства получают команды OpenGL ES, требующие, чтобы он представил меньшие сцены, средство рендеринга теряет большую часть своей эффективности. Например, если Ваше приложение представляет пакеты треугольников с помощью текстуры и затем изменяет текстуру, OpenGL, реализация ES должна или сразу спугнуть те команды или копировать текстуру; никакая опция не использует аппаратные средства эффективно. Точно так же любая попытка считать пиксельные данные из кадрового буфера требует, чтобы предыдущие команды были обработаны, если они изменили бы тот кадровый буфер.

Методы наиболее успешной практики и для OpenGL ES 2.0 и для OpenGL ES 1.1

Эти методы применяются к OpenGL приложения ES на аппаратных средствах Серии 5 SGX:

OpenGL ES 2.0 на аппаратных средствах PowerVR SGX серии 5

Таблица 1-2 обеспечивает высокоуровневую сводку для платформ OpenGL ES 2.0.

Табличная 1-2  Сводка значений атрибута ключа OpenGL ES 2.0, реализованных для SGX 535, 543, и 554

Атрибуты OpenGL ES 2.0

Значения для SGX 535

Значения для SGX 543 и 554

MAX_TEXTURE_SIZE, MAX_RENDERBUFFER_SIZE, MAX_CUBE_MAP_TEXTURE_SIZE

2048 x 2048

4096 x 4096

MAX_TEXTURE_IMAGE_UNITS

8

8

MAX_COMBINED_TEXTURE_IMAGE_UNITS

8

8

MAX_VERTEX_TEXTURE_IMAGE_UNITS

0

0

MAX_VERTEX_ATTRIBS

16

16

MAX_VERTEX_UNIFORM_VECTORS

128

128

MAX_FRAGMENT_UNIFORM_VECTORS

64

64

MAX_VARYING_VECTORS

8

8

Соображения

PowerVR SGX обрабатывает высокую точность вычисления с плавающей точкой с помощью скалярного процессора, даже когда те значения объявляются в векторе. Надлежащее использование масок записи и тщательные определения Ваших вычислений могут улучшить производительность Ваших программ построения теней. Для получения дополнительной информации посмотрите, Выполняют Векторные Вычисления Лениво в OpenGL Руководство по программированию ES для iOS.

Носитель - и низкая точность значения с плавающей точкой обрабатывается параллельно. Однако переменные низкой точности имеют несколько ограничений реального исполнения:

  • Компоненты Swizzling векторов, объявленных с низкой точностью, являются дорогими и должны избежаться.

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

Вершинный шейдер и объединенная обработка фрагмента не могут использовать больше чем 8 модулей изображения текстуры. Посмотрите Раздел 2.10.5 в OpenGL Khronos спецификация Версии 2.0.25 ES для подробных данных. Кроме того, выборки текстуры в вершинных шейдерах не поддерживаются.

Для лучших результатов ограничьте свое использование переменных низкой точности к значениям цвета.

Поддерживаемые расширения OpenGL ES 2.0

Следующие расширения поддерживаются для всех процессоров Серии 5 SGX: 535, 543, и 554:

Следующие расширения поддерживаются для SGX 543 и 554 процессоров только:

OpenGL ES 1.1 на аппаратных средствах PowerVR SGX серии 5

OpenGL ES 1.1 реализован на аппаратных средствах PowerVR SGX Серии 5 с помощью настроенных программ построения теней. Каждый раз, когда Ваши изменения приложений OpenGL переменные состояния ES, новая программа построения теней неявно сгенерирована по мере необходимости. Из-за этого изменяя OpenGL состояние ES может быть более дорогим, чем это было бы на чистой аппаратной реализации. Можно улучшить производительность приложения путем сокращения количества изменений состояния, которые это выполняет. Для получения дополнительной информации посмотрите Помнить OpenGL Переменные состояния ES в OpenGL Руководство по программированию ES для iOS.

Таблица 1-3 обеспечивает высокоуровневую сводку для платформ OpenGL ES 1.1.

Табличная 1-3  Сводка значений атрибута ключа OpenGL ES 1.1, реализованных для SGX 535, 543, и 554

Атрибуты OpenGL ES 1.1

Значения для SGX 535

Значения для SGX 543 и 554

MAX_TEXTURE_SIZE, MAX_RENDERBUFFER_SIZE, MAX_CUBE_MAP_TEXTURE_SIZE

2048 x 2048

4096 x 4096

MAX_TEXTURE_UNITS

8

8

LINE_WIDTH_RANGE

1.0 - 16,0 пикселей

1.0 - 16,0 пикселей

POINT_SIZE_RANGES

1.0 - 511,0 пикселей

1.0 - 511,0 пикселей

MAX_PALETTE_MATRICES_OES

11

11

MAX_VERTEX_UNITS_OES

4

4

MAX_CLIP_PLANES

6

6

MAX_TEXTURE_LOD_BIAS_EXT

4

4

Поддерживаемые расширения OpenGL ES 1.1:

Следующие расширения поддерживаются для всех процессоров Серии 5 SGX: 535, 543, и 554: