2017-07-21 9 views
3

私は、組み込みプラットフォームでAndroid-7.0を移植する必要があるプロジェクトに取り組んでいます。私は移植の鍵を知っています:特定のHWドライバと対応するHALを実装します。 Mali-400 GPUを扱う際は、GPUドライバ、OpenGL ESライブラリ、UMP(Unified memory provider)を移植する必要がありますが、単純化のために実際のGPUを必要としないソフトウェアレンダリングを使用したいだけです。ソフトウェアレンダリングを使用して埋め込みプラットフォームでAndroidを移植する

に、SetProp ro.kernel.qemu 1

に、SetProp ro.kernel.qemu.gles 0

私はlibGLES_android.soをロードするには、Androidを強制init.rcでいくつかのpropertiseを設定しました

これは機能します。システムが適切なEGLconfigを選択するのに失敗し、サーフェス・フリンジャーを再起動しました。ログは次のとおりです。

I/SurfaceFlinger(1056): SurfaceFlinger is starting 
I/SurfaceFlinger(1056): SurfaceFlinger's main thread ready to run. Initializing graphics H/W... 
D/libEGL (1056): Emulator without GPU support detected. Fallback to software renderer. 
D/libEGL (1056): loaded /system/lib64/egl/libGLES_android.so 
W/gralloc (1056): page flipping not supported (yres_virtual=1080, requested=2160) 
I/gralloc (1056): using (fd=11) 
I/gralloc (1056): id   = simple 
I/gralloc (1056): xres   = 1920 px 
I/gralloc (1056): yres   = 1080 px 
I/gralloc (1056): xres_virtual = 1920 px 
I/gralloc (1056): yres_virtual = 1080 px 
I/gralloc (1056): bpp   = 32 
I/gralloc (1056): r   = 16:8 
I/gralloc (1056): g   = 8:8 
I/gralloc (1056): b   = 0:8 
I/gralloc (1056): width  = 305 mm (159.568100 dpi) 
I/gralloc (1056): height  = 171 mm (159.895081 dpi) 
I/gralloc (1056): refresh rate = 60.00 Hz 
W/hwcomposer(1056): hwcomposer module not found 
W/SurfaceFlinger(1056): no suitable EGLConfig found, trying a simpler query 
E/SurfaceFlinger(1056): no suitable EGLConfig found,giving up 

Hwcomposerモジュールは必須ではないようです。私の質問は以下のとおりです。

  1. ソフトウェアレンダリングを使用する方法が正しいですか?
  2. 適切なEGLConfigが見つからないのはなぜですか?それは私が1つを選択する手順を制御することはできないようです。
  3. 実際のGPUに基づいてハードウェアレンダリングを有効にするにはどうすればよいですか?

答えて

0

Androidはソフトウェアのみのレンダリングをサポートしていません。実際のGPUとOpenGL ESの実装は難しい要件です。

+0

なぜですか?私はGoogleで検索し、これについては何も見つかりません。あなたがいくつかの詳細を知っているなら、これについてもっと話してください。 –

+1

AndroidのUIレンダリングでは、OpenGL ES 1.1のサブセットを使用していました。これは、Googleがソフトウェアエミュレートレイヤを持っているため、アプリケーションが動作しなくてもUIが正しくレンダリングされます。 OpenGL ES 1.1は基本的には廃止されているので、OpenGL ES 2.xに移行して以来ずっとUIのレンダリングが行われています(プログラマブルなシェーダでは効率的にエミュレートするには複雑すぎます)。 – solidpixel

+0

Thx! OpenGL ES 2.0ソフトウェアレンダリングをサポートするメサライブラリが存在することは知っています。 –

関連する問題