Louvre は、開発の容易さを重視して Wayland コンポジターを構築するために設計された高性能 C++ ライブラリです。
Wayland コンポジターの作成は、数か月、場合によっては数年に渡る気の遠くなる作業になる場合があります。この困難なタスクには、Linux 入力およびグラフィック API の習得、グラフィック バッファの管理、多数の Wayland プロトコルとそれぞれのインターフェイスの綿密な実装が含まれます。
幸いなことに、ルーヴル美術館は、お客様に代わってすべての複雑な低レベルのタスクを処理することで、この複雑なプロセスを簡素化します。プロトコルを管理するためのデフォルトの方法も提供されているため、初日から基本的だが機能的なコンポジターを用意し、要件に正確に一致するようにその機能を段階的に探索およびカスタマイズできます。
Louvre 内では、独自の OpenGL ES 2.0 シェーダ/プログラムを使用するか、基本的な 2D レンダリングに LPainter クラスを使用するか、バッファ損傷を管理し、入力イベントも処理できる LScene および LView システムを活用するかのいずれかを柔軟に行うことができます。さらに、必要に応じてこれら 3 つのアプローチを組み合わせることができます。
ルーブル美術館は素晴らしいパフォーマンスを提供します。多数の移動する wl_subsurfaces (不透明および半透明) のレンダリングで構成されるベンチマークでは、louvre-weston-clone サンプル コンポジターがテストされ、Louvre が複雑なシナリオでも高い FPS レートを維持できることが示されました。さらに、Weston や Sway などの一般的なコンポジターよりも、使用する CPU リソースと GPU リソースが少なくなります。
機械 | MacBook Pro A1398 (Retina、15 インチ、Mid 2015) |
CPU | Intel Core i7-4770HQ @ 2.20GHz (最大 3.4GHz)、6MB 共有 L3 キャッシュ搭載 |
メモリ | 16GB 1600MHz DDR3L |
GPU | インテル Iris Pro グラフィックス - i915 (インテル グラフィックス) バージョン 1.6.0 (20201103) |
画面 | 15 インチ Retina ディスプレイ (シングルモード 2880x1800@60Hz) |
OS | Linux Mint 21 - Linux 5.15.0-86-generic |
ベンチマークの動作の詳細に興味があり、実際に試してみたい場合は、このリンクを参照してください。
以下はベンチマーク結果を示すグラフです。 HiDPI ディスプレイ上でダブル バッファリングを使用して 1 ~ 50 の移動サーフェスをレンダリングする各コンポジターの平均 FPS が表示されます。
ベンチマーク結果は 2023 年以降更新されていないため、テストされたコンポジターの現在のパフォーマンスを正確に反映していない可能性があります。
ほとんどの Wayland コンポジターは単一のスレッドを使用するため、複雑なシナリオをレンダリングするときにパフォーマンスが大幅に低下します。この理由は垂直同期によるもので、コンポジターはレンダリングしたばかりのフレームバッファを画面に表示されているフレームバッファと交換する前に数ミリ秒待つ必要があります。これは、スワップをディスプレイのリフレッシュ レート ( vblank ) と同期させ、ティアリング効果を回避するために行われます。単一スレッドで作業する場合、コンポジタには「デッドタイム」が発生し、次のフレームに間に合うようにコンテンツを処理およびレンダリングできなくなります。そのため、最終的にvblankがスキップされ、リフレッシュ レートが半分 (またはそれ以上) に低下します。この問題を回避するために、Louvre は複数のスレッドで動作します。各出力 (ディスプレイ) はそのコンテンツを独自のスレッドでレンダリングするため、コンポジターは vblank を待っている間もリクエストの処理を続行し、他の出力をレンダリングできます。これにより、ルーブル コンポジタに「デッド タイム」が発生することがなくなり、高いリフレッシュ レートを維持できるようになります。
左側のグラフは、生の CPU 消費量の結果を表示しています。これは、ルーブル美術館がより多くの CPU リソースを使用していることを示唆している可能性があります。ただし、ルーブル美術館のリフレッシュ レートは他の美術館のリフレッシュ レートのほぼ 2 倍であるため、この比較は完全に公平ではありません (平均 60 FPS 対 30 FPS)。右側のグラフに示すように、CPU 消費量を 1 秒あたりのフレーム数 (FPS) で割ると、ルーヴル美術館が実際に他のコンポジターと比較して FPS に比べて CPU リソースの使用量が少ないことが明らかになります。
CPU 消費量と同様に、ルーヴル美術館は他のコンポジターよりも FPS に比べて GPU リソースの使用量が少ないことがわかります。