Raspberry Piのセットアップで詰んだ
更新
以下多少古い内容
たけてぃ氏にねだって譲り受けた初代Raspberry Pi Model B+でGUIアプリケーションを作成して遊ぼうと画策していた. ここで, Webの表現力を活用するのが最善だと考え, Qt WebEngineを用いたQtアプリケーションを作成することにした. しかし, 現在, 正直なところ詰んでいる. 回避策もないことはないのだが, 意気消沈である.
Raspberry PiのGPUとOpenGL
Raspberry PiにはVideo Core IVというGPUが搭載されている. GPUを活用する方法は次の2つがある.
Raspberry Pi UserlandはOpenGL ES 2.0を提供してくれる専用のライブラリである.
VC4 DRM DriverはPCなどと同様にDRMというインターフェイスを用いてGPUの機能を提供する. DRMはある程度抽象化されたもので, 複数のアプリケーションによるGPUの使用を調停することもできる.
mesa3dはOpenGL ESを提供する. これらを合わせて使う.
Qt WebEngineとDRM
Qt WebEngineは内部にChromiumを持っており, これがDRMを使う. 通常のQtモジュールではプラットフォーム抽象化
(今回使うのはeglfs)
により生成されたOpenGLのコンテキストを共有するため, Raspberry Pi Userlandでも構わないのだが,
このChromiumのために, VC4 DRM Driverを導入する必要が生じた.
eglfsはDRMに対応した統合レイヤー, eglfs_kmsを用意しているので, eglfsとChromiumの両方をDRMに接続すればGPUの共用も可能になるはずである.
結果, 次のような構成になる.
+--------User Space--------+ +--Kernel--+
| | | |
| Chromium ---------------------+ |
| | | | |
| | | DRM--VC4 |
| | | | |
| eglfs--eglfs_kms--mesa3d------+ |
| | | |
+--------------------------+ +----------+
ドライバが動かない
ドライバは当然ながらカーネル内にある. CONFIG_DRM_VC4=y
にすればドライバが機能し,
デバイスファイルを/dev/dri
以下に生成するはずだ. しかし, 生成されない.
まず真っ先にdmesg
を見た. しかし, エラーもなければVC4が登録されたというメッセージもない.
仕方がないのでググったが, 初代Raspberry Piでは不可能などといった言説ばかりが引っかかる.
唯一初代Rasberry Piで可能としているfreedesktop.orgのWikiにあるカーネルを使ってみたが,
これはそもそも起動すらしない. シリアルコンソールに繋いでも, 起動前のUncompressing Linux... done, booting the kernel.
というメッセージしか残っていない.
かくして詰んだ.