Создание виртуального оборудования, ядра, qemu для эмулятора Android для создания графики OpenGL.

Я новичок в Android и хочу поиграть с эмулятором.

Что я хочу сделать, так это создать свою собственную часть виртуального оборудования, которая может собирать команды OpenGL и создавать графику OpenGL. Мне сказали, что для этого мне нужно будет написать драйвер ядра Linux, чтобы обеспечить связь с оборудованием. Кроме того, мне нужно будет написать библиотеку пользовательского пространства Android для вызова драйвера ядра.

Для начала я планирую сделать очень простую аппаратную часть, которая выполняет, скажем, 1 или 2 команды.

Кто-нибудь здесь делал что-то подобное? Если да, есть ли у вас какие-либо советы или возможные ссылки на дополнительную информацию? Любая обратная связь будет оценена.


person Rough Chop    schedule 23.04.2011    source источник


Ответы (2)


Написание аппаратной эмуляции — сложная и отнюдь не простая задача. Так что, если вы действительно хотите это сделать, я бы не стал начинать с нуля. В вашем случае я бы сначала начал с чего-то более простого (поскольку многие библиотеки уже установлены на стороне гостя и на стороне хоста): реализация сквозной передачи OpenGL для обычного Linux через qemu. Что для этого потребуется:

Сначала вы добавляете в qemu виртуальный графический процессор, что также включает добавление нового модуля вывода графики, использующего OpenGL (пока qemu использует SDL). Затем вы создаете драйверы DRI/DRM в ядре Linux, которые будут работать в гостевой системе (Android использует собственную графическую систему, но для обучения DRI/DRM подойдет), а также в Mesa. На стороне хоста вы должны переводить то, что исходит от qemu в вызовах OpenGL. Поскольку GPU на стороне хоста выполняет всю тяжелую работу, ваша часть DRI/DRM будет довольно минимальной и просто создаст мост.

person datenwolf    schedule 23.04.2011
comment
Вы забыли предупредить, что документации по внутренностям QEMU очень мало. ОП, вероятно, потребуется прочитать и полностью понять код графической подсистемы, чтобы начать новый дизайн. - person Shannon Nelson; 27.04.2011

Эмулятор, поставляемый с Android SDK 23, уже запускает OpenGL, вы можете попробовать это на официальном MoreTeapots примере: https://github.com/googlesamples/android-ndk/tree/a5fdebebdb27ea29cb8a96e08e1ed8c796fa52db/MoreTeapots

Я почти уверен, что это аппаратное ускорение, поскольку все эти полигоны рендерятся со скоростью 60 кадров в секунду.

Графический интерфейс создания AVD от Studio имеет параметр аппаратного ускорения, который должен управлять такими параметрами, как:

==> config.ini <==
hw.gpu.enabled=yes
hw.gpu.mode=auto

==> hardware-qemu.ini <==
hw.gpu.enabled = true
hw.gpu.mode = host
hw.gpu.blacklisted = no

in ~/.android/avd/Nexus_One_API_24.a/.

person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 26.06.2016