Present拡張(X11)
詳細情報
- 作者
- Keith Packard
- 公開
- 2013年
- 種別
- X拡張
クライアントが「このピクスマップを次のフレームでこのウィンドウに表示して、実際に表示されたら教えて」と頼めるX拡張。サーバがOpenGLを理解しなくてもできる、X11流のvsyncである。
2013年まで、表示と同期してバッファをスワップしたいXプログラムは、GLXとDRI2のSwapBuffersを通すしかなかった。これはサーバもドライバもOpenGLを話すことを前提としていた。Keith Packardは、その一部だけを取り出すためにPresentを書いた。リクエストは1つ、PresentPixmapで、ピクスマップの内容を、メディアストリームカウンタ(MSC)で数えたあるフレームにウィンドウへコピーまたはフリップするようサーバに頼む。スワップが実際に見えるようになった時点でサーバはタイムスタンプ付きのCompleteNotifyを返し、クライアントがピクスマップを再利用してよくなるとIdleNotifyを返す。ウィンドウが画面全体を覆い、間に何もなければ、結果はコピーではなく本物のページフリップになる。
この拡張は2013年12月のX.Orgサーバ1.15で、バッファ共有をファイルディスクリプタ経由で扱うDRI3とともに出荷され、2つでDRI2を置き換えた。MesaのGLとVulkanのX11対応はこの2つの上に作られ、XwaylandはPresentPixmapをWaylandコンポジタのフレームへ直接変換し、コンポジットウィンドウマネージャも自前のオーバーレイウィンドウに同じ仕組みを使える。X11が後からモダンな表示パイプラインを手に入れた数少ない例であり、しかも完成したのは、ほとんどの人が関心を失う直前だった。