2011/07/09

q5 : EGLのLoader

EGLの部分はいったいどこが呼ばれているんだろう?というところをやっている。

コンストラクタで/system/lib/egl/egl.cfgをオープンしている。
これがなければ、デフォルトのconfigを使う。
ログにはなかったので、これは読み込まれている。
ファイルの中身は、こうなっていた。

0 1 fimg

意味としては"dpy, impl, tag"となっている。
dpyはディスプレイ番号

さて、このegl.cfgだが、SmartQ5用に提供されている。
他にも、
  • lib/hw/copybit
  • lib/egl/egl.cfg
  • lib/egl/libEGL_fimg.so
  • lib/egl/libGLESv1_CM_fimg.so
  • lib/libGLESv1_CM_fimg.so
  • lib/libChunkAlloc.so
が提供されている。
ファイルとしてはlibGLESv2_fimg.soもあるのだが、これはコピーされていない。


Loader::open()では、いよいよライブラリをオープンしている。
ログでは、こうなっている。

D/libEGL  ( 1890): loaded /system/lib/egl/libEGL_fimg.so
D/libEGL  ( 1890): loaded /system/lib/egl/libGLESv1_CM_fimg.so

つまり、さっきのegl.cfgにあったfimgが使われているのだ。
tagってのは、そういう意味を持つようである。


さて、cnxってのは、このライブラリから持ってきているようだ。
getProcAddress()とかでエントリポイントを取得するのかな?
libEGL.soをnmで見ると。。。symbolがないのでわからない。
代わりに、自前でビルドした方を見てみる。

00003201 T eglGetConfigAttrib

これが呼ばれているんだろうな。
うーん、思ったよりも大事になってきたなあ。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。