2011-04-23 182 views
2

我是新来的android,并希望玩弄模拟器。为Android模拟器创建虚拟硬件,内核,qemu以生成OpenGL图形

我想要做的是创建我自己的一块虚拟硬件,可以收集OpenGL命令并生成OpenGL图形。 我被告知,为了做到这一点,我需要编写一个linux核心驱动程序来启用与硬件的通信。另外,我需要编写一个Android用户空间库来调用内核驱动程序。我打算制作一个非常简单的硬件,例如1或2个命令。

有没有人在这里做过这样的事情?如果是这样,你有任何提示或可能的链接到额外的信息? 任何反馈将不胜感激。

回答

1

编写硬件仿真是一项棘手的任务,绝非易事。所以如果你真的想这样做,我不会从头开始。在你的情况下,我首先从一些简单的开始(因为许多库已经在客户端和主机端):通过qemu实现普通Linux的OpenGL直通。需要做什么:

首先,您将一些虚拟GPU添加到qemu中,这也涉及添加使用OpenGL的新图形输出模块(到目前为止qemu使用SDL)。接下来,您将在Linux内核中创建DRI/DRM驱动程序,这些驱动程序将在客户端上运行(Android使用自己的图形系统,但用于学习DRI/DRM都可以)以及Mesa中。在主机方面,您必须翻译来自OpenGL调用中的qemu。由于主机端GPU正在做所有的努力工作,您的DRI/DRM部分将会非常小,只需构建一个brigde。

+1

你忘了警告QEMU内部很少有文档。 OP可能需要阅读并完全理解那里的图形子系统代码才能开始新的设计。 – 2011-04-27 01:09:48

0

自带的Android SDK 23已经是运行OpenGL仿真器,你可以与官方MoreTeapots例子试试这个:https://github.com/googlesamples/android-ndk/tree/a5fdebebdb27ea29cb8a96e08e1ed8c796fa52db/MoreTeapots

我敢肯定,这是硬件加速,因为所有这些多边形以60渲染FPS。

从Studio中的AVD创建GUI拥有硬件加速选项,它应该像控制选项:在~/.android/avd/Nexus_One_API_24.a/

==> 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