天天看點

Wayland 簡介

什麼是 Wayland

Wayland 是一個開源項目,旨在建立 Linux 下新型的顯示伺服器架構(displayserver architecture),由任職于 Intel 的Kristian Høgsberg 在 2008 年發起(發起時任職于 Red Hat),目前已經接近釋出 1.0 版(現在已經釋出了 0.99 版)。

Wayland 的目标是替代 X,提供一個簡單、高效、輕量的,符合現代桌面要求的顯示伺服器架構。現代桌面的一個重要特征即視窗的合成(compositing)。Wayland 即通過合成器(Compositor)來直接與應用程式和視訊硬體通信,并轉發事件給它們。這其中,應用程式渲染圖形到應用程式的緩沖(buffers)中,然後合成器即顯示伺服器合成這些圖形并顯示在螢幕上(就是應用程式的視窗)。合成器的概念會在下一節進行簡單介紹。

當然,應用 Wayland 有一些限制條件:

1.      要有完整的 Linux 圖形棧軟體支援

2.      驅動支援

1)  evdev 輸入裝置驅動程式

2)  僅支援Intel、ATI、Nvidia 開源驅動

3)  KMS、DRI支援

什麼是合成器(Compositor)

合成器也可以稱為合成視窗管理器(Compositing window manager),其主要功能是把由各個應用程式渲染的圖形(緩沖)合成為一個圖形寫入顯存,而不像以前的視窗管理器,應用程式直接渲染圖形到顯存。

采用合成器的好處:

1.      提高性能,如對層疊視窗,隻要畫最上面那個視窗即可;一個視窗失去反應,不會影響整個系統等

2.      消除閃爍

3.      好的使用者體驗,易于添加特效,如縮小、放大、平移、旋轉等

目前大多數主流作業系統都采用合成器實作,如 Max OS X 10.0 及以上版本,Windows,Linux, FreeBSD 等。

為什麼要用 Wayland代替 X (X 的缺陷)

1.      X 有自己的渲染 API 庫,如畫矩形、畫線等,這個庫非常龐大、複雜,因為有許多狀态要儲存,而且還要遵守所有的 X 協定。但是事實上,目前我們已經很少(幾乎沒有)人會使用 X API 去繪圖,而是在本地渲染,放入緩沖,然後由合成器實際寫入顯存。

2.      X 的視窗系統相當複雜,幾乎沒有人能完全了解(即大多數功能是不會被使用的)。

3.      在 X 下使用合成器會有許多不必要的步驟(下一篇文章我會詳細解釋)

為什麼 Wayland 是可行的

1.      Linux 圖形棧的發展使Wayland 的實作變的可行

很多子產品已經從 X 抽離,變成可重用的子產品,如 KMS,DRI drivers等。也就是我們可以不通過 X 來通路硬體裝置。另外,從本質上講,Wayland是硬體獨立的,僅通過 EGL接口來進行繪制,換句話說,隻要支援 EGL 驅動,都可以執行 Wayland(當然需要把本地的 EGL surface 翻譯成 Wayland surface)。

2.      與 X 一樣,通過 evdev 裝置擷取輸入事件

3.      用戶端的遷移

現在的絕大多數用戶端是不直接使用 X 的,是以隻要遷移用戶端的圖形工具庫(GUI)即可,這樣可以大大減小遷移到 Wayland 的工作量。

參考文檔:

1.      http://wayland.freedesktop.org/architecture.html

2.      http://en.wikipedia.org/wiki/Wayland_(display_server_protocol)

3.      http://en.wikipedia.org/wiki/Compositing_window_manager

繼續閱讀