OpenGL аппаратные процессоры ES
Весь в настоящее время поставляющий iPhone, iPad и устройства iPod Touch используют графические процессоры PowerVR SGX (535, 543, и 554). Эти процессоры поддерживают OpenGL ES 2.0 и также поддерживают OpenGL ES 1.1 путем эффективной реализации конвейера стандартных функций с помощью программ построения теней.
Таблица 1-1 описывает каждую комбинацию устройства процессора.
Совместимость устройства | Аппаратная платформа 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:
Руководство по архитектуре Серии 5 PowerVR для Разработчиков. Обеспечивает обзор архитектуры Серии 5 SGX с некоторыми рекомендациями производительности.
Рекомендации Производительности PowerVR. Обеспечивает рекомендации для оптимизации производительности при обработке графики на устройствах, использующих процессоры Серии 5 SGX.
Рекомендации PowerVR SGX OpenGL ES2.0 Разработки приложений. Представляет Серию SGX процессоров и описывает, как оптимизировать для них.
PowerVR 3D Рекомендации Разработки приложений. Представляет 3D графические приложения и обеспечивает некоторые «золотые правила» для разработки таких приложений.
Основанный на мозаике задержанный рендеринг
Аппаратные средства серии 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 уже в использовании средством рендеринга из-за ранее представленных команд рисования. Когда необходимо будет изменить OpenGL ресурсы ES, запланируйте те модификации вначале или конец кадра. Эти команды включают
glBufferSubData
,glBufferData
,glMapBuffer
,glTexSubImage
,glCopyTexImage
,glCopyTexSubImage
,glReadPixels
,glBindFramebuffer
,glFlush
, иglFinish
.Для использования в своих интересах демонтажа невидимой поверхности процессора следуйте, инструкции по получению, найденные в, Не Сортируют Представленные Объекты Кроме, Где Необходимо Для Корректного Рендеринга в OpenGL Руководство по программированию ES для iOS.
Буферные объекты вершины (VBOs) обеспечивают значительное повышение производительности на PowerVR SGX. Посмотрите Буферные Объекты Вершины Использования Управлять Копированием Данных Вершины в OpenGL Руководство по программированию ES для iOS.
Не используйте отдельные буферы шаблонов. Вместо этого используйте объединенную глубину/буфер шаблонов.
Используйте Базовые вращения Анимации renderbuffers для вращения содержания между режимом портрета и средой. Для лучшей производительности гарантируйте, что высота и ширина renderbuffer - каждый кратное число 32 пикселей.
OpenGL ES 2.0 на аппаратных средствах PowerVR SGX серии 5
Таблица 1-2 обеспечивает высокоуровневую сводку для платформ OpenGL ES 2.0.
Атрибуты 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.
Атрибуты 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: