2015-04-28 10 views
-1

Как я знаю до сих пор, поставщики поверхностных изображений обращаются к APP, чтобы отобразить, а затем соединить все поверхности с последним экраном. (Если есть какая-либо ошибка, укажите Thx).Контекст OpenGL между APP и поверхностным файловым устройством в Android

Первый вопрос: доступна ли поверхность, созданная поверхностным устройством, глобально доступной, которая может использоваться всеми процессами. (память памяти находится в памяти GPU?)

Хотя, поскольку я googled, невозможно разделить контекст openGL между процессами (здесь я имею в виду процесс APP и процесс поверхностного рисования). Я не уверен, что если бы память GPU использовалась поверхностью?

Если ответ на мой первый вопрос - да, то есть есть ли доступ к ресурсу openGL для поверхностного изображения, когда APP визуализируется на поверхность? И как работали эти вещи, включая память поверхности?

ответ

0

Существует различие между Android Surface и EGL Surface. Они тесно связаны, но не одно и то же.

EGL-поверхности, созданные методами, такими как eglCreateWindowSurface(), могут быть связаны с контекстом EGL и использоваться в качестве целей для рендеринга. Они не могут быть разделены между процессами.

Android Surfaces - это просто обертки для объектов BufferQueue, которые обеспечивают способ перемещения графических буферов вокруг системы. Буфер, в который выполняется рендеринг приложения, может быть передан между приложением и SurfaceFlinger, но ни одно из состояния EGL не передается. Весь SurfaceFlinger получает готовый продукт.

Система описана более подробно в graphics architecture document.

+0

Похоже, что этой системе необходимо скопировать полученный результат из памяти графического процессора в системную память (BufferQueue), чтобы полученный результат можно было использовать совместно с SurfaceFlinger. Или аппаратное обеспечение может поддерживать рендеринг в системной памяти напрямую? – CurtisGuo

+0

BufferQueues передает буферы вокруг ссылки, а не путем копирования содержимого. Большинство (все?) Android-устройств имеют UMA, поэтому вы можете смешивать и сопоставлять аппаратное и программное обеспечение без необходимости копировать содержимое буфера. – fadden