Аппаратные средства информация о GPU
Начиная с введения исходного iPhone Apple продолжал улучшать возможности GPU в новых устройствах на iOS. Когда Вы пишете Металлу или OpenGL приложение ES, необходимо понять определенные пределы каждого устройства Вы выполнение приложения на. В настоящее время две отличных категории GPU распространены:
Apple A7 и A8 GPUs
PowerVR SGX 543 и 554 GPUs
Таблица 2-1 перечисляет устройства, которые совместимы с Металлом и OpenGL ES 3.0.
Имя устройства | GPU |
---|---|
Воздух iPad 2 Wi-Fi Воздух iPad 2 Wi-Fi + Сотовая связь | Apple A8 GPU |
Wi-Fi iPad Mini 3 Wi-Fi iPad Mini 3 + Сотовая связь | Apple A7 GPU |
iPhone 6 и iPhone 6 Плюс | Apple A8 GPU |
iPhone 5 s | Apple A7 GPU |
Воздушный Wi-Fi iPad Воздушный Wi-Fi iPad + Сотовая связь | Apple A7 GPU |
iPad Mini с Сетчаткой выводит на экран Wi-Fi iPad Mini с Сетчаткой выводит на экран Wi-Fi + Сотовая связь | Apple A7 GPU |
Таблица 2-2 перечисляет устройства, которые совместимы с OpenGL ES 2.0.
Имя устройства | GPU |
---|---|
Воздух iPad 2 Wi-Fi Воздух iPad 2 Wi-Fi + Сотовая связь | Apple A8 GPU |
Wi-Fi iPad Mini 3 Wi-Fi iPad Mini 3 + Сотовая связь | Apple A7 GPU |
iPhone 6 и iPhone 6 Плюс | Apple A8 GPU |
iPhone 5 s | Apple A7 GPU |
iPhone 4 s, iPhone 5, iPhone 5c | SGX 543 |
iPhone 3GS, iPhone 3GS (Китай) и iPhone 4 | SGX 535 |
Воздушный Wi-Fi iPad и Воздушный Wi-Fi iPad + Сотовая связь | Apple A7 GPU |
Wi-Fi iPad (четвертое поколение) и Wi-Fi iPad + Сотовая связь (четвертое поколение) | SGX 554 |
iPad 2 Wi-Fi, iPad 2 Wi-Fi + 3G, Wi-Fi iPad (третье поколение) и Wi-Fi iPad + Сотовая связь (третье поколение) | SGX 543 |
iPad Mini с Сетчаткой выводит на экран Wi-Fi и iPad Mini с Wi-Fi дисплея Сетчатки + Сотовая связь | Apple A7 GPU |
Wi-Fi iPad Mini и Wi-Fi iPad Mini + Сотовая связь | SGX 543 |
Wi-Fi iPad и Wi-Fi iPad + 3G | SGX 535 |
iPod Touch (пятое поколение) | SGX 543 |
iPod Touch (третьи и четвертые поколения) | SGX 535 |
Apple A7 и аппаратные средства A8 GPU
Вместе, Apple A7 и A8 GPUs создают новое поколение аппаратного обеспечения машинной графики, которые поддерживают и Металл и OpenGL ES 3.0. Чтобы получить все возможное от 3D, доминируемого над графикой приложения, работающего на A7 и A8 GPUs, используйте Металл. Металл обеспечивает чрезвычайно низкий доступ к заголовку к A7 и A8 GPUs, включая невероятно высокую производительность для Вашего сложного рендеринга графики и вычислительных задач. Металл устраняет много узких мест производительности — таких как дорогостоящая проверка состояния — которые найдены в традиционном графическом APIs. Если Вы не хотите использовать Металл, используйте OpenGL ES 3.0 при создании приложения. И Металл и OpenGL ES 3.0 включают много новых функций, таких как многократные цели рендеринга и преобразовывают обратную связь, которые не были доступны на мобильных процессорах прежде. Это означает, что усовершенствовал методы рендеринга, которые ранее были доступны только на настольных машинах, такой, как задержано рендеринг, может теперь использоваться в приложениях для iOS. См. Металлическое Руководство по программированию для получения дополнительной информации о том, какие функции видимы к Металлическим приложениям.
Для использования в своих интересах питания A7 и A8 GPUs приложение должно поддерживать Металл или OpenGL ES 3.0. Используя Металл или OpenGL ES 3.0 предоставляет Вам доступ к новым функциям и также к большему пулу рендеринга ресурсов. Например, на A7 и A8 GPUs, приложение, использующее Металл или OpenGL ES 3.0, может получить доступ к вдвое большему количеству текстур в программе построения теней, чем приложение, использующее OpenGL ES 2.0.
Методы наиболее успешной практики для OpenGL ES 3.0
Эти методы применяются к OpenGL приложения ES на Apple A7 и аппаратных средствах A8 GPU:
Избегите операций, изменяющих OpenGL объекты ES уже в использовании средством рендеринга из-за ранее представленных команд рисования. Когда необходимо будет изменить OpenGL ресурсы ES, запланируйте те модификации вначале или конец кадра. Эти команды включают
glBufferSubData
,glBufferData
,glMapBuffer
,glTexSubImage
,glCopyTexImage
,glCopyTexSubImage
,glReadPixels
,glBindFramebuffer
,glFlush
, иglFinish
.Следуйте инструкции по получению, найденные в, Не Сортируют Представленные Объекты, Если Не необходимо в OpenGL Руководство по программированию ES для iOS.
Когда возможно, высота и ширина Вашего renderbuffer должны быть кратным числом 32 пикселей.
OpenGL ES 3.0 на Apple A7 и A8 GPUs
Таблица 2-3 обеспечивает высокоуровневую сводку для OpenGL ES 3.0.
Атрибуты OpenGL ES 3.0 | Значения для A7 и A8 GPUs |
---|---|
MAX_TEXTURE_SIZE, MAX_RENDERBUFFER_SIZE, MAX_CUBE_MAP_TEXTURE_SIZE | 4096 x 4096 |
MAX_ARRAY_TEXTURE_LAYERS | 2048 |
MAX_COLOR_ATTACHMENTS | 4 |
MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS | 50048 |
MAX_COMBINED_TEXTURE_IMAGE_UNITS | 32 |
MAX_COMBINED_UNIFORM_BLOCKS | 24 |
MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS | 51200 |
MAX_DRAW_BUFFERS | 4 |
MAX_FRAGMENT_INPUT_COMPONENTS | 64 |
MAX_FRAGMENT_UNIFORM_BLOCKS | 12 |
MAX_FRAGMENT_UNIFORM_COMPONENTS | 896 |
MIN_PROGRAM_TEXEL_OFFSET | - 8 |
MAX_PROGRAM_TEXEL_OFFSET | 7 |
MAX_SAMPLES | 8 |
MAX_TEXTURE_IMAGE_UNITS | 16 |
MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS | 64 |
MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS | 4 |
MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS | 4 |
MAX_VARYING_VECTORS | 15 |
MAX_VERTEX_ATTRIBS | 16 |
MAX_VERTEX_OUTPUT_COMPONENTS | 64 |
MAX_VERTEX_TEXTURE_IMAGE_UNITS | 16 |
MAX_VERTEX_UNIFORM_BLOCKS | 12 |
MAX_VERTEX_UNIFORM_COMPONENTS | 2048 |
MAX_UNIFORM_BLOCK_SIZE | 16384 |
Соображения
A7 и A8 GPUs обрабатывают все вычисления с плавающей точкой с помощью скалярного процессора, даже когда те значения объявляются в векторе. Надлежащее использование масок записи и тщательные определения Ваших вычислений могут улучшить производительность Ваших программ построения теней. Для получения дополнительной информации посмотрите, Выполняют Векторные Вычисления Лениво в OpenGL Руководство по программированию ES для iOS.
Носитель - и низкая точность значения программы построения теней с плавающей точкой вычислен тождественно как 16-разрядные значения с плавающей точкой. Это - изменение от аппаратных средств PowerVR SGX, использовавших 10-разрядный формат фиксированной точки для значений низкой точности. Если Ваши программы построения теней используют переменные плавающей точки низкой точности, и Вы также поддерживаете аппаратные средства PowerVR SGX, необходимо протестировать программы построения теней на обоих GPUs.
Apple A7 и A8 GPUs не штрафуют выборки зависимой текстуры.
Всегда используйте операции отбрасывания кадрового буфера, когда больше не будет необходимо Ваше содержание кадрового буфера. Штраф за то, что не сделали так выше, чем он шел ранее GPUs. Для лучших результатов используйте GLKView
класс; это автоматически реализует операции отбрасывания кадрового буфера.
При рендеринге к многократным целям ограничьте приложение четырьмя целями изображения (и не больше, чем 128 битов общих данных по A7 и 256 битов общих данных по A8, записанному в цели). Сингл sRGB
предназначайтесь для количеств как для 64 битов.
Поддерживаемые расширения OpenGL ES 3.0
OpenGL ES 3 включает функциональность, предоставленную расширениями в реализации Apple OpenGL ES 2.0. При обновлении существующего приложения OpenGL ES 2.0 для использования OpenGL ES 3.0, обратите внимание на то, что многие из этих расширений не предоставлены в OpenGL ES 3.0. Поэтому Ваш код должен быть обновлен для использования новой базовой функциональности вместо этого.
Следующие расширения поддерживаются для A7 и A8 GPUs в OpenGL ES 3 приложения:
A8 GPU поддерживает следующее дополнительное расширение: GL_KHR_texture_compression_astc_ldr.
Следующие расширения поддерживаются, но OpenGL ES 3 обеспечивает базовую функциональность, соответствующую эти расширения. Если Вы портируете приложение OpenGL ES 2, использующее эти расширения, необходимо переместить программы построения теней на базовую функциональность OpenGL ES 3.
OpenGL ES 2.0 на Apple A7 и A8 GPUs
Таблица 2-4 обеспечивает высокоуровневую сводку для OpenGL ES 2.0.
Атрибуты OpenGL ES 2.0 | Значения для A7 и A8 GPUs |
---|---|
MAX_TEXTURE_SIZE, MAX_RENDERBUFFER_SIZE, MAX_CUBE_MAP_TEXTURE_SIZE | 4096 x 4096 |
MAX_TEXTURE_IMAGE_UNITS | 8 |
MAX_COMBINED_TEXTURE_IMAGE_UNITS | 8 |
MAX_VERTEX_TEXTURE_IMAGE_UNITS | 8 |
MAX_VERTEX_ATTRIBS | 16 |
MAX_VERTEX_UNIFORM_VECTORS | 128 |
MAX_FRAGMENT_UNIFORM_VECTORS | 64 |
MAX_VARYING_VECTORS | 8 |
Соображения
A7 и A8 GPUs обрабатывают все вычисления с плавающей точкой с помощью скалярного процессора, даже когда те значения объявляются в векторе. Надлежащее использование масок записи и тщательные определения Ваших вычислений могут улучшить производительность Ваших программ построения теней. Для получения дополнительной информации посмотрите, Выполняют Векторные Вычисления Лениво в OpenGL Руководство по программированию ES для iOS.
Носитель - и низкая точность значения программы построения теней с плавающей точкой вычислен тождественно как 16-разрядные значения с плавающей точкой. Это - изменение от аппаратных средств PowerVR SGX, использовавших 10-разрядный формат фиксированной точки для значений низкой точности. Если Ваши программы построения теней используют переменные плавающей точки низкой точности, и Вы также поддерживаете аппаратные средства PowerVR SGX, необходимо протестировать программы построения теней на обоих GPUs.
Apple A7 и A8 GPUs не штрафуют выборки зависимой текстуры.
Всегда используйте операции отбрасывания кадрового буфера, когда больше не будет необходимо Ваше содержание кадрового буфера. Штраф за то, что не были отброшены кадровые буферы выше, чем он шел ранее GPUs. Для лучших результатов используйте GLKView
класс; это автоматически реализует операции отбрасывания кадрового буфера.
Поддерживаемые расширения OpenGL ES 2.0
Следующие расширения поддерживаются для Apple A7 и A8 GPUs:
Аппаратные средства PowerVR SGX
Imagination Technologies имеет несколько полезных ссылок о технологиях PowerVR:
Рекомендации PowerVR SGX OpenGL ES2.0 Разработки приложений. Представляет Серию SGX процессоров и описывает, как оптимизировать для них.
PowerVR 3D Рекомендации Разработки приложений. Представляет 3D графические приложения и обеспечивает некоторые «золотые правила» для разработки таких приложений.
Домашняя страница Imagination Technologies.
Методы наиболее успешной практики для OpenGL ES 2.0
Эти методы применяются к 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
Таблица 2-5 обеспечивает высокоуровневую сводку для платформ OpenGL ES 2.0.
Атрибуты OpenGL ES 2.0 | Значения для SGX 543 и 554 |
---|---|
MAX_TEXTURE_SIZE, MAX_RENDERBUFFER_SIZE, MAX_CUBE_MAP_TEXTURE_SIZE | 4096 x 4096 |
MAX_TEXTURE_IMAGE_UNITS | 8 |
MAX_COMBINED_TEXTURE_IMAGE_UNITS | 8 |
MAX_VERTEX_TEXTURE_IMAGE_UNITS | 8 |
MAX_VERTEX_ATTRIBS | 16 |
MAX_VERTEX_UNIFORM_VECTORS | 128 |
MAX_FRAGMENT_UNIFORM_VECTORS | 64 |
MAX_VARYING_VECTORS | 8 |
Соображения
PowerVR SGX обрабатывает высокую точность вычисления с плавающей точкой с помощью скалярного процессора, даже когда те значения объявляются в векторе. Надлежащее использование масок записи и тщательные определения Ваших вычислений могут улучшить производительность Ваших программ построения теней. Для получения дополнительной информации посмотрите, Выполняют Векторные Вычисления Лениво в OpenGL Руководство по программированию ES для iOS.
Несмотря на то, что носитель - и низкая точность, значения с плавающей точкой оба обрабатываются параллельно, переменные низкой точности, имеет несколько ограничений реального исполнения:
Компоненты Swizzling векторов, объявленных с низкой точностью, являются дорогими и должны избежаться.
Много встроенных функций используют вводы и выводы средней точности. Если Ваше приложение обеспечивает низкую точность значения с плавающей точкой как параметры или присваивает результаты низкой точности переменная с плавающей точкой, программе построения теней, вероятно, придется включать дополнительные инструкции для преобразования значений. Эти дополнительные инструкции также добавляются когда swizzling векторные результаты вычисления.
Для лучших результатов ограничьте свое использование переменных низкой точности к значениям цвета.
Поддерживаемые расширения OpenGL ES 2.0
Следующие расширения поддерживаются для всех процессоров Серии 5 SGX: 543 и 554:
Следующие расширения поддерживаются для SGX 543 и 554 процессоров только: