Внутреннее устройство графики Android

Я не нашел четкого объяснения того, как работает графическая система Android, в частности, использует ли она сервер отображения, основана ли она на DirectFB или X11 и т. Д.

Из того, что мне удалось собрать воедино, Android зависит от фрейм-буфера Linux. Я не особо нашел, что за сервер отображения или оконный менеджер Android использует мультиплексный доступ к фреймбуферу, поэтому любые указатели будут очень благодарны!

Наконец, насколько я понимаю, набор инструкций ARM предоставляет инструкции для ускорения OpenGL, но как это интегрируется с сервером отображения, не ясно, т.е. согласовывают ли клиентские приложения буфер разделяемой памяти, в который клиент пишет напрямую?

Имеются ли библиотеки OpenGL для ускорителя платформы с открытым исходным кодом? Я нашел несколько ссылок, предполагающих, что это двоичные файлы с закрытым исходным кодом. Опять же, приветствуются любые указатели.


person naasking    schedule 02.01.2011    source источник
comment
+1. Очень полезно для людей вроде меня, у которых внезапно возникают проблемы, связанные с отображением ... :) Не могли бы вы изменить ссылку на буфер кадра linux. Он изменился и, похоже, больше не поддерживается. Заранее спасибо..   -  person mk..    schedule 22.05.2013


Ответы (4)


Графика Android состоит из двух основных частей: SurfaceFlinger и Skia. SurfaceFlinger - это композитор Android, используемый оконным менеджером для создания и отображения окон (на самом деле называемых поверхностями). В настоящее время SurfaceFlinger реализован поверх OpenGL ES 1.x и может также использовать другие методы аппаратного ускорения, если они доступны (MDP, двухмерный блиттер на T-Mobile G1 или аппаратные накладки на Xoom.)

Каждое приложение выполняет рендеринг в свои окна (или поверхности), используя в основном Skia. Skia - это библиотека 2D-графики Android. Вы также можете использовать OpenGL ES 1.x и 2.0 для визуализации на поверхности.

Android не использует DirectFB, X11 или какое-либо другое существующее решение для Linux.

person Romain Guy    schedule 15.02.2011
comment
И оконный менеджер - это особый процесс, который используется всеми программами, похожий на традиционный сервер отображения? Ему принадлежит эксклюзивный доступ к устройству отображения и т. Д. - person naasking; 15.02.2011
comment
Диспетчер окон находится в system_process, но устройство отображения принадлежит SurfaceFlinger, а не диспетчеру окон. - person Romain Guy; 15.02.2011
comment
Мне любопытно узнать ваш комментарий к DirectFB. Если вы посмотрите презентацию на презентацию Джима Хуанга вы заметите ссылку на фреймбуфер на слайдах 30 и 31. Чем они отличаются от DirectFB? - person CyberFonic; 20.07.2012
comment
@Romain Guy, не могли бы вы ответить на мой комментарий, опубликованный выше под вопросом? Также, если возможно, взгляните на это: stackoverflow.com/questions/16331775/ - person mk..; 22.05.2013
comment
Подробное описание архитектуры теперь доступно здесь: source.android.com/devices/graphics /architecture.html - person fadden; 06.05.2014
comment
@RomainGuy, почему для Android не использовался x11? Есть идеи? - person Sudip Bhandari; 16.05.2017
comment
@SudipBhandari X11 - ужасная архаика, когда дело доходит до оконных систем и современного рабочего стола, просто имеет смысл полностью избавиться от него, когда вы заново изобретаете стек графического интерфейса с нуля поверх ядра Linux. Я рад узнать, что X11 не является частью Android. - person matanster; 05.04.2021

Существует краткая вводная презентация о графике Android: http://www.slideshare.net/jserv/design-and-concepts-of-android-graphics.

person jserv    schedule 05.01.2012
comment
Только предостережение: последние версии существенно изменены. Информация, содержащаяся на слайдах, может быть устаревшей. - person mk..; 22.05.2013

Ромен Гай определенно был прав. Но все изменилось с момента выхода Android 3.0. Skia больше не так важна, большая часть 2D-рисования ускоряется с помощью openGL, также известного как компонент HWUI.

person pierrotlefou    schedule 08.03.2013
comment
Что может быть хорошей отправной точкой для изучения стека графики Android? - person control; 08.02.2014
comment
@ppu бессовестная реклама моего блога pierrchen.blogspot.com, в котором много говорилось о внутренней графике Android. - person pierrotlefou; 14.07.2014
comment
Я хочу отладить HWUI, но не знаю, как это сделать. Ни один бревно не выложить. (PS: Вы китаец и я тоже. Пожалуйста, помогите.) - person kangear; 10.08.2014
comment
@pierrotlefou, это очень полезно, спасибо за то, что поделились своими знаниями. - person wukong; 28.04.2020

Всю информацию о графике Android можно найти здесь:

https://source.android.com/devices/graphics/

person juanmorschrott    schedule 27.07.2016
comment
Интересно, сколько еще актуально для текущих версий, но похоже, что это все еще официальная страница - person matanster; 05.04.2021