前提
- GBS環境が構築できている
- build環境の動作確認済みである
- 移植対象のボードがある(ex:Beagle Board, Panda Board)
- うまく行かなくてもメゲナイ
(※)動いた実績で書いてますが、当方は上記の環境へ移植できるという事を保証できません
Tizenリポジトリでの現状
現状は、下記のオプションでビルドされます。
./configure --disable-static \ --disable-image-loader-svg \ --enable-simple-x11 \ --with-x \ --enable-fb \ --enable-xrender-x11 \ --enable-line-dither-mask \ --disable-image-loader-edb \ --disable-rpath \ --enable-gl-x11 \ --enable-gl-flavor-gles \ --enable-gles-variety-sgx \ --enable-pthreads \ --enable-cpu-neon \ --enable-winkcodec=yes
理由は良く判らないのですが下記の現在は無効、または名称が変更されたオプションが残り続けています。
configure: WARNING: unrecognized options: --enable-xrender-x11, --disable-rpath, --enable-gl-x11, --enable-winkcodec
とりあえず、---enable-gl-x11の代わりに--enable-gl-xlibを有効化しておきます。*1このconfigureで自動的にMakefileが生成され、そのファイルを元にmakeします。普通にこのままビルドすれば、一応はビルドが通ります。個人的に問題だったのは、そのままだとハードウェアアクセラレーションがdisableになることでした。
./configureの出力結果を見ればわかるのですが、明らかに無効になっています。
Engines: Software Memory Buffer.....: yes Software X11...............: no (Xlib: no) (XCB: no) OpenGL X11.................: no (Xlib: no) (XCB: no) Software GDI...............: no Software DirectDraw........: no Direct3d...................: no OpenGL SDL.................: no
download.tizen.orgにあるsnapshotのrpmもこの状態でビルドされたものがアップロードされています。ソフトウェアでのレンダリングはこの状態でも可能でしたが、折角のハードが宝の持ち腐れになってしまいます。そこで、ハードウェアレンダリングをどうにか有効にできないか試しました。結論から言うと、手元のPowerVR SGXなボードでは一部問題があるものの、一応有効に出来ました。*2
問題点、解決方法
SBSでもGBSのchroot環境もそうなのですが、GLES2/gl2.hがありません。configureの出力ログを確認すれば明らかです。
checking for GLES2/gl2.h... no
このため、OpenGL XLibが無効にされています。
checking whether OpenGL XLib rendering backend will be built... no
問題がそれだけならkhronosのページからダウンロードしてきて、ビルド環境のファイルシステムにコピーすれば問題ないと思いつきます。ファイルをダウンロードしてきて下記にコピーします。
~/GBS-ROOT/local/scratch.armv7l.0/usr/include/GLES2
"gl2.h"、"gl2ext.h"、"gl2platform.h"がおそらく必要です。*3この状態で再度ビルドを行うと
checking for GLES2/gl2.h... yes checking for glTexImage2D in -lGLESv2... no
libGLESv2.soにglTexImage2Dが無いと怒られます。普通そんなことは無いと思うのですが・・・。おそらくGBSのchrootするrootfsにはGLES2のシミュレータが入っているので、シミュレータが持っていないのかもしれません。ひとまず、libGLESv2.soを正式なものに差し替えます。今回は提供元から正式なライブラリを貰ってコピーしていますが、BeagleやPandaの場合はLinaroのUbuntu向けが流用できるかもしれません。。
これで、evasのハードウェアレンダリングが有効に・・・
有効に・・・
・・・ならない(;・∀・)?
続く。。