Создание виртуального оборудования, ядра, qemu для эмулятора Android для создания графики OpenGL - PullRequest
2 голосов
/ 23 апреля 2011

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

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

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

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

Ответы [ 2 ]

1 голос
/ 23 апреля 2011

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

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

0 голосов

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

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

Графический интерфейс для создания 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/.

...