Linux の OpenGL 実装で有名な Mesa3D ですが、レンダラーの切り替えができることがわかったのでメモしておきます。
ちなみに The Mesa 3D Graphics Library って現時点においては 17.0 となってました。しかしながら動作実験環境は Ubuntu 16.04 で apt でインストールできるものを使用しているため、これよりも古いです。
切り替え方法
以下の環境変数で指定が可能です。
- LIBGL_ALWAYS_SOFTWARE
- GALLIUM_DRIVER
この環境変数で LIBGL_ALWAYS_SOFTWARE=1 とするとソフトウェア(エミュレーション)でのレンダラーが選択されるようです。
そして GALLIUM_DRIVER=softpipe を指定することで llvmpipe との切り替えができるようです。
実験
llvmpipe や softpipe に切り替えて使う方法も判ったので、それらでどのように GL コンテキストが変わるかをチェックしてみました。
ここでは glxgears サンプルを使用して計測を行いました。
普段は VMware Player の中で Linux を動かしているので、ここで計測しました。実機ではない点にご注意ください。
FPS | GL_VERSION | GL_RENDERER | 設定 |
---|---|---|---|
2550 | 2.1 Mesa 11.0.2 | Gallium 0.4 on SVGA3D | 環境変数セットなし |
760 | 3.0 Mesa 11.0.2 | Gallium 0.4 on llvmpipe | LIBGL_ALWAYS_SOFTWARE=1 |
160 | 3.0 Mesa 11.0.2 | Gallium 0.4 on softpipe | LIBGL_ALWAYS_SOFTWARE=1 GALLIUM_DRIVER=softpipe |
まとめ
あまり需要がないかもしれませんが、簡単にレンダラー実装の切り替えを行う方法がわかりました。デフォルトで使用されるアクセラレートが有効になるドライバと llvmpipe の切り替えを行いつつデバッグ&開発を行っていくというスタイルができそうです。
意外にも llvmpipe は高速で十分実用と思っていましたが、このように比較するとアクセラレートが効くのは圧倒的ですね。