Аппаратные средства информация о GPU

Начиная с введения исходного iPhone Apple продолжал улучшать возможности GPU в новых устройствах на iOS. Когда Вы пишете Металлу или OpenGL приложение ES, необходимо понять определенные пределы каждого устройства Вы выполнение приложения на. В настоящее время две отличных категории GPU распространены:

Таблица 2-1 перечисляет устройства, которые совместимы с Металлом и OpenGL ES 3.0.

Таблица 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.

Табличные 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.

Табличные 2-3  значения атрибута OpenGL ES 3.0, реализованные для Apple A7 и A8 GPUs

Атрибуты 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.

Табличные 2-4  значения атрибута OpenGL ES 2.0, реализованные для Apple A7 и A8 GPUs

Атрибуты 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:

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

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

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

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

Табличные 2-5  значения атрибута OpenGL ES 2.0, реализованные для SGX 543 и 554

Атрибуты 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 процессоров только: