DRMとFrambufferを使用して、指定された仮想サイズをシミュレートします。

DRMとFrambufferを使用して、指定された仮想サイズをシミュレートします。

AM335xプロセッサでデュアルバッファリングを使用しようとしています。私たちが作成していないデモ画像で実行される例があります。私は主なリソースを使って私たち自身のイメージを統合する作業をしています。

このシステムはtilcdcドライバを使用します。私たちはこのドライバが提供するfbdevエミュレーションを使用しています。パラメータを設定すると、この呼び出しでエラーが発生します。

unsigned int Yold = variable_info.yres_virtual;
variable_info.yres_virtual = variable_info.yres * 2;

if (ioctl(fdfb, FBIOPUT_VSCREENINFO, &variable_info))

drm ドライバーの拡張デバッグ印刷出力をオンにするには、/sys/module/drm/parameters/debug に 0xf をエコーし​​ます。次のエラーメッセージが表示されます。

fbユーザースペースで、現在1024x768-32(仮想1024x1536)> 1024x768-32より大きい幅/高さ/ bppを要求しています。

drmは、基本的に追加の解像度に十分なメモリしか割り当てていないという参考資料を見たことがあります。どこでこれが起こるのか、割り当てられたメモリ量を増やす方法を学びたいと思います。

サンプル画像はテスト目的で提供されます。このイメージでアプリケーションを実行する理由は、デフォルトの割り当てメモリサイズが高さ768のトリプルバッファリングに適しているためです。

ご協力ありがとうございます。

*追加して修正しました

ドライバのソースコードを見てみましたが、ドライバの読み込み中にバッファサイズを変更できると結論付けることができませんでした。私はどんな対価を払っても値をハードコードすることを避けたいと思います。

私はtilcdcが直接提供するフレームバッファシミュレーションの下にcrtcの情報を使用して連続的なメモリ割り当てを生成する呼び出しがあることを知っていますが、fb->heightとwidthという項目だけを使用しているようです。

関連情報