&ref(7770dfb2.jpg);~
&ref(directFB_1115.JPG);~
-上がNOP方式での最終的なベンチの結果 ・・・ &ref(DFB7770.xls,center,入力用Excel File);~

*** アクセラレーションの置き換えについて [#p354f450]
-テキスト系はアクセラレーションに置き換えられないのでこれからもソフトのまま。
--Fill RectanglesはPOLYGON4Cコマンドに置き換えている。
--Fill Rectangles(blend)も同じ。
--Fill TrianglesはPOLYGON4Cコマンドの3点指定に置き換えている。
--Fill Triangles(blend)は横方向へのDraw Lineに置き換えている。
--Draw RectanglesはLINECコマンドに置き換えている。
--Draw Rectangles(blend)はDraw Lineに置き換えている。
--Draw LineはLINECコマンドに置き換えている。
--Draw Line(blend)はPOLYGON4Cコマンドの2点指定に置き換えている。
--BlitはBITBLTAコマンドに置き換えている。
--Blit colorkeyedはBITBLTAコマンドに置き換えている。
--Blit with format conversionとBlit from 32bit(alphachannel blend)は
--ソース32ビットからディスト16ビットへのカラーコンバージョンが
入るため置き換えられない。
--Blit from 8bit paletteとBlit from 8bit palette(alphachannel blend)は
ソース8ビットからディスト16ビットへのカラーコンバージョンが
入るため置き換えられない。
--Stretch BlitとStretch Blit colorkeyedはNOP方式だと途中で
止まってしまう為置き換えられない。
*** 属性の置き換え [#m0f09ab1]
--colorkeyedは透過レジスタに透過色を設定してコマンドのDrawModeの
STRANSビットを立てている。
--blendはアルファレジスタに透過率を設定してコマンドのDrawModeの
αEビットを立てている。

*** 2Dアクセラレーターの癖など [#lb455063]
--αブレンド出来るコマンドがPOLYGONとBLIT系だけ。
--ブレンド時はLINEをPOLYGONに置き換えなければならない。
--BLITにはカラーコンバージョン機能がない。
--ソースとディストのカラーフォーマットが違うとアクセラレーションが使えない。
--ブレンド+POLYGONで三角形を描くと奇妙な模様が出る。
--ブレンドでトライアングルを描画するときはSM501のように横方向へのラインに
置き換える(最終的にはPOLYGON)
--ストレッチBLITは本来POLYGON4Aコマンドに置き換えるはずだったがNOP方式では途中で止まってしまう為使っていない。

*** 問題点 [#t82d2cc3]
--Fill Triangle+BLENDで模様が入る
--座標の入れ替えで模様が替わるがこの方向では解決できない。
---結局BLENDの時だけSM501と同じように横方向のラインを重ねて描画する事にした。ベンチではソフト描画に比べてほんのわずかだけスコアがあがっている。
--割り込みの登録が出来ない
---LINEOの三宅さんに聞いてカーネルを修正したがうまくいかない。
---仕方ないのでカーネル内のsetup_irqを無理やり直してデバックを進めている。
--コンパイラのバージョンによってうまくいかない現象
---LINEOのあさのさんの回答を参考にソースを修正したがうまくいかなかった。
---GCCのバージョンをあげて確かめて欲しいとの事だが現状で環境は変えたくないため保留。
--ストレッチBLITが途中で止まる
---ステータスフラグにいつまでもINTフラグが立たない為無限に待ちつづける現象だが描画終了を割り込みで取れないか確かめた。
---FBドライバ上で2Dエンジンの割り込みを登録して割り込み関数内で終了フラグを更新する。
---そして今までステータスでチェックしていた個所をFBドライバへのIOCTLでチェックするように変更。
---結果は落ちる時には割り込みも上がってこなかった。
--ストレッチBLITが止まった時の状態
---ストレッチBLITで止まった後に無理やり抜けて処理を続けさせた。
---目で見た限り普通に動いているように見える。
---どうやら2Dエンジンはフリーズしていないようだ。
--NOPで一時停止する方式を止めてみる
---TRAPで正規の終了をせずにNOPで一時停止状態を保持して描画を重ねていく今の方式はイリーガルなやり方とも言えるので正規の手段で同じ現象が出るのか試してみた。
---ソースを11/8まで戻し、ストレッチBLITに関係するソースを埋め込み調整を取った。
---結果は問題なく終了する。
---スコアはノーマルのBLITと同程度だった。
 (シングルディスプレイリストバージョンのため55M程度)
--ソフト描画前のSYNC処理
---現在は何もしていないがソフト描画を行う前にディスプレイリスト内の命令をフラッシュしてやらないと画面上で不整合が起きる可能性がある。
---ハード描画が出来るかチェックを行う通常の命令なら問題ないがそうでないものの場合ドライバ以外も見直す必要がある。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS