XorgまたはDRMフレームバッファを読み取る低遅延方法

XorgまたはDRMフレームバッファを読み取る低遅延方法

私はLinuxでグラフィックフレームワークの待ち時間/処理時間を測定できるアプリケーションを構築しようとしています。私のアイデアは、さまざまなグラフィックスとUIフレームワーク(SDL、OpenGL、Qtなど)プログラムを使用して画面の色(黒から白へ)を変更して、入力イベント(マウスクリックなど)に反応します簡単な方法を実装することです。各プログラムの遅延時間を測定するために、入力イベントがマシンに到着する時点から(私はevdevを使用します)、ある種のフレームバッファからピクセルを更新する時点までの時間を測定する別のプログラムを実装したいと思います。可能な限りアプリケーションに))。 2番目のプログラムもvblankイベントとは無関係でなければなりません。なぜなら、ユーザーが何かを見ることができるときではなく、レンダリングが完了した時点に興味があるからです。

私の問題は、2番目のプログラムを使用してフレームバッファの内容を取得することです。私はfbdevまたはlibdrmを使用してフレームバッファの内容を取得しました。このチュートリアル)、ただし両方のアクティブXserverを持たない端末でプログラムを実行する必要があります(外部の有効性のために好ましい)。私もMITXShmの内容を検索します。

これが役に立つ場合に備えて、現在のXSHMを使用する方法です。

// get one pixel at coordinates x/y with XShm
XShmGetImage(display, rootWindow, image, x, y, 0x00ffffff);

// store red value into variable
unsigned int color = image->data[2];

if(color != lastcolor)
{
    log(time_micros(), color);
}

XServerの実行中にフレームバッファコンテンツ(XまたはDRMから)を取得するための迅速で信頼性の高い方法はありますか?それともXSHMが今私たちができる最善ですか?

ベストアンサー1

おすすめ記事