今日の作業

旧bvddの問題

  1. VRAMの確保をデバイス(/dev/bvdd)のopen後に行なっていた
  2. 物理メモリが断片化していて、連続したメモリ領域を確保できなかった
  3. DMAディスクリプタをチェインさせて断片化に対応していた
  4. その関係上、ダブルバッファリングが難しかった

新bvdd

  1. VRAMの確保はモジュールの追加時に行なうようにした
  2. モジュールはブートプロセスの最中で追加されるので、連続したメモリ領域が確保できる
  3. DMAディスクリプタの設定がすごくシンプルになった
  4. ダブルバッファリングもシンプルな方法で安定して動くようになった

最初からこの方法にしとけば良かった……。

現状640x480の動画のダブルバッファリングのために2MBのメモリを予約してます。これは1MBに減らすことが出来る予定。また、ダブルバッファリングが必要なければ、予約メモリは必要無しです。まぁ高速起動オプションを一つ追加するぐらいのコストですから、大目に見てください。

9:12

Errata 25 の作業に入る。ぴろさんが試されたようだけど、一応自分でもやってみようと思って。3時間ぐらい試行錯誤してるけど、まだできない。work around手順の最初らへんにある「overlay2をRGBモードで有効にする」の段階で動かなくて困ってたんだけど、

The test is unable to gracefully shutdown the
LCD controller after this failure.

何気無いこの一文が目に付いたので、再起動直後にテストしたら上手くいった。いちいち再起動掛けながらテストするのは面倒やなぁ。……あ、サスペンド/レジュームでも大丈夫だ。

9:41

実装完了。あー、なんか非常に上手くいってるように思えるんですが?

  • CCCRの値に関係無くオーバレイが初期化出来る
  • 50回ぐらいmplayerを実行して、オーバレイの初期化失敗は一度も無し

bvddが不安定なのはCPUのバグが原因だったということで。なんか一安心。

id:atty:20050410 みたいなことを書いておきながら、あっさり戻ってきてしまった。