3

コンピューターのモニターに画像を表示するには、一連の非同期呼び出しをディスパッチするグラフィック API を使用する必要があります...そして、ある時点で、必要なものをコンピューターの画面に表示します。

しかし、必要な画像が完全に描画される (そしてユーザーに表示される) 時点での正確なCPU 時間を知りたい場合はどうでしょうか?

この時点を私が行った他の測定値と関連付けるために、すべてが表示されたときに CPU タイムスタンプを取得する必要があります。

グラフィック スタックの非同期動作を考慮しないと、多くのことがジッターへのグラフィック呼び出しの長さを取得できます。

  • マルチスレッド;
  • V-BLANK に同期します (残念ながらティアリングを避けるために必要です)。
  • 私は他に何を忘れましたか?:P

Linux でのソリューションをターゲットにしていますが、他の OS にもオープンです。X.org サーバーのxvideo 拡張機能と OpenGL API の一部については既に調査しましたが、効果的な解決策はまだ見つかっていません。

解決策がビデオ ドライバーやハードウェアへのハッキングを伴わないことを願うばかりです。

注: 必要なハードウェアで最近の Nvidia G-SYNC を使用することはできません。この技術は、予測できないジッターの一部を取り除きますが、この問題を完全に解決することはできないと思います.


OpenGL Wikiでは次のように提案されています。

GPUキューでswapBuffer呼び出しが完了した直後に、そのような高精度/マルチメディアタイマー値を適切に取得する方法を誰かが知っていますか?

4

1 に答える 1