Louvre 是一個高效能 C++ 函式庫,專為建立 Wayland 合成器而設計,重點是易於開發。
創建 Wayland 合成器可能是一項艱鉅的任務,通常需要花費數月甚至數年的時間。這項具有挑戰性的任務涉及掌握 Linux 輸入和圖形 API、管理圖形緩衝區以及精心實現眾多 Wayland 協定及其各自的介面。
幸運的是,羅浮宮透過代表您處理所有複雜的低級任務來簡化這個複雜的過程。它甚至提供了管理協議的預設方式,使您從第一天起就擁有一個基本但功能齊全的合成器,並逐步探索和自訂其功能以精確滿足您的要求。
在 Louvre 中,您可以靈活地使用自己的 OpenGL ES 2.0 著色器/程式、使用 LPainter 類別進行基本 2D 渲染,或利用 LScene 和 LView 系統(它可以管理緩衝區損壞,也可以為您處理輸入事件)。此外,可以根據需要組合這三種方法。
盧浮宮提供出色的表演。由渲染大量移動 wl_subsurfaces(不透明和半透明)組成的基準測試,其中對 louvre-weston-clone 示例合成器進行了測試,結果表明 Louvre 即使在復雜的場景中也能保持較高的 FPS 速率。此外,它比 Weston 和 Sway 等流行的合成器使用更少的 CPU 和 GPU 資源。
| 機器 | MacBook Pro A1398(視網膜顯示屏,15 英寸,2015 年中) |
| 中央處理器 | Intel Core i7-4770HQ @ 2.20GHz(高達 3.4GHz),具有 6MB 共享三級緩存 |
| 記憶 | 16GB 1600MHz DDR3L |
| 圖形處理器 | 英特爾 Iris Pro 顯示卡 - i915(英特爾顯示卡)版本 1.6.0 (20201103) |
| 展示 | 15 吋 Retina 顯示屏,單模式 2880x1800@60Hz |
| 作業系統 | Linux Mint 21 - Linux 5.15.0-86-通用 |
如果您對基準測試的運行細節感興趣並想親自嘗試一下,請參閱此連結。
這是一張說明基準測試結果的圖表。它顯示每個合成器在 HiDPI 顯示器上使用雙緩衝渲染 1 到 50 個移動表面的平均 FPS。
基準測試結果自 2023 年以來一直沒有更新,可能無法準確反映測試的合成器的當前性能。
大多數 Wayland 合成器使用單一線程,這在渲染複雜場景時會大大降低其效能。原因是由於垂直同步,合成器必須等待幾毫秒才能將剛剛渲染的幀緩衝區與螢幕上顯示的幀緩衝區交換。這樣做是為了使交換與顯示更新率 ( vblank ) 同步並避免撕裂效應。使用單執行緒時,合成器會出現“死區時間”,導致它們無法及時處理和渲染下一幀的內容。這就是為什麼他們最終跳過vblank ,導致刷新率下降一半(或更多)。為了避免這個問題,Louvre 使用多執行緒。每個輸出(顯示)在其自己的線程上渲染其內容,允許合成器在等待 vblank 時繼續處理請求並渲染到其他輸出。這可以防止 Louvre 合成器出現“死區時間”,從而使它們能夠保持高更新率。
左側的圖表顯示了原始 CPU 消耗結果,這可能表示 Louvre 使用了更多 CPU 資源。然而,這種比較並不完全公平,因為 Louvre 的刷新率幾乎是其他網站的兩倍(平均 60 FPS 與 30 FPS)。當我們將 CPU 消耗除以每秒幀數 (FPS) 時(如右圖所示),很明顯,與其他合成器相比,Louvre 實際上使用的 CPU 資源相對於 FPS 更少。
與 CPU 消耗類似,我們可以觀察到 Louvre 相對於 FPS 比其他合成器使用更少的 GPU 資源。