2011-04-23 185 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