読者です 読者をやめる 読者になる 読者になる

Tizen 移植(porting) 入門 〜EFL -evas- 編〜 part 1

前提

  • GBS環境が構築できている
    • build環境の動作確認済みである
  • 移植対象のボードがある(ex:Beagle Board, Panda Board)
  • うまく行かなくてもメゲナイ

(※)動いた実績で書いてますが、当方は上記の環境へ移植できるという事を保証できません

evasとは?

f:id:moguriso:20121103125056p:plain

Tizen Porting Guideより


EFLのグラフィック制御部分担当。Canvas and scenegraph rendering library。

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のハードウェアレンダリングが有効に・・・


有効に・・・


・・・ならない(;・∀・)?


続く。。

*1:rpathも微妙ですが...

*2:ただ、この手順でどのボードでもGPUでのレンダリングを有効化できるかはなんとも・・・。

*3:ものによっては、詳細をプラットフォームの提供元に確認する必要があるかもしれません、、、