回顧
DDE 在 V15 時期,使用 Mutter 作為帶合成器的窗管,以及 Metacity 這種不帶合成器的窗管,一個是在高性能設(shè)備上使用,一個是為低性能設(shè)備上使用。
在 V20 時期,DDE 更換 KWin 當(dāng)窗口管理器,由于 KWin 自帶有關(guān)閉合成器的模式,所以 DDE 也放棄了 Metacity 作為備用窗管的選項。
痛點
從社區(qū)收集到的體驗報告,絕大部分用戶不滿意在屏幕縮放上,一部分用戶不滿意在動畫僵硬、死板、卡頓等用戶體驗上。
在以往版本的 DDE 中,受限于 X11 的架構(gòu),無法針對不同屏幕使用不同的縮放。很多用戶可能是 1080p 的筆記本屏幕,外接一個 2K 或者 4K 的顯示器,在 X11 下,用戶只能照顧高分辨率的屏幕,犧牲低分辨率屏幕的使用,例如開啟兩倍屏幕縮放,在高分辨率下的屏幕顯示剛剛好,但低分辨率屏幕已經(jīng)無法查看任何一個正常的窗口了。
Treeland
Treeland 是 deepin 社區(qū)開發(fā)的一款基于 Wayland 協(xié)議的顯示服務(wù)器,Treeland在底層使用 wlroots 作為 Wayland 的基礎(chǔ)庫,不修改 wlroots 的代碼,也就意味著可以隨時同步上游進(jìn)度,獲得新的功能與修復(fù)。上層使用 Qt,可以充分利用已有的大量 Qt 開發(fā)者,不再需要一直有專人負(fù)責(zé)特定項目,讓 DDE 的技術(shù)棧更加統(tǒng)一。
優(yōu)化
1屏幕縮放
Treeland 直接管理屏幕,支持為不同屏幕設(shè)置獨立的縮放比例,從而確保高分辨率和普通分辨率的屏幕可以完美共存。通過擴(kuò)展協(xié)議,Treeland 還支持浮點數(shù)縮放比例(如 1.25 或 1.5),讓各種分辨率下的顯示效果都能得到良好支持。
當(dāng)窗口在不同屏幕間移動時,Treeland 會實時根據(jù)窗口所在位置調(diào)整其縮放比例。當(dāng)窗口跨越兩個屏幕時,系統(tǒng)會按照各自的縮放比例分別渲染窗口的不同部分,保證顯示流暢且過渡自然。這種設(shè)計讓用戶在多屏工作時始終獲得清晰、易用的界面體驗。
2復(fù)制模式
在 X11 下,復(fù)制模式是通過將兩個屏幕設(shè)置為相同分辨率并重疊坐標(biāo)來實現(xiàn)的。然而,這種方法存在以下顯著劣勢:
重復(fù)渲染
X11 需要為兩個屏幕分別渲染相同的畫面,這種資源利用方式非常低效。相比之下,Treeland 可以在 DRM 層面直接將同一份畫面數(shù)據(jù)發(fā)送到多個屏幕,避免重復(fù)渲染,從而大幅降低 GPU 負(fù)載,提升性能。
畫面壓縮與變形
當(dāng)兩個屏幕分辨率差異較大時,X11 會強(qiáng)制調(diào)整分辨率以保持一致,導(dǎo)致畫面壓縮或變形。Treeland 則采用原始分辨率輸出,通過在屏幕上下或左右留出空白區(qū)域(letterboxing/pillarboxing)的方式保持畫面比例,有效避免畫面失真,優(yōu)化復(fù)制模式下的顯示效果。
增強(qiáng)的視覺效果
Treeland 不僅保持畫面比例,還能在空白區(qū)域(如上下或左右空隙)繪制額外內(nèi)容,比如模糊處理后的桌面壁紙。這種設(shè)計既提升了美觀性,又改善了用戶體驗,使復(fù)制模式更加精致自然。
總的來說,Treeland 的實現(xiàn)方案在性能、畫面質(zhì)量和用戶體驗等方面都顯著優(yōu)于傳統(tǒng)的 X11 復(fù)制模式,為多屏應(yīng)用場景帶來了重要優(yōu)化。
3窗口效果
Treeland 使用 QtQuick 作為渲染層,然而 QtQuick 自帶的部分組件性能并不太好,以下是其針對 QtQuick 自帶組件性能問題的改進(jìn)措施與實現(xiàn)細(xì)節(jié)。
圓角處理優(yōu)化
QtQuick 的 Rectangle 組件支持圓角效果,但受限于只能同時對四個角進(jìn)行操作,且性能存在一定瓶頸。Treeland 為了解決這一問題,實現(xiàn)了自定義的圓角裁剪控件:
異形窗口支持:相比 QtQuick 原生 Rectangle 的四角統(tǒng)一裁剪,Treeland 的自定義控件支持不規(guī)則圓角設(shè)計(如 DTK 的異形窗口效果),大幅提升了界面靈活性。
算法優(yōu)化:
新的圓角造型算法使得幾何頂點數(shù)量減少 50%,降低了 GPU 的頂點處理負(fù)擔(dān);
三角細(xì)分效率提高了 100%,進(jìn)一步優(yōu)化了 GPU 渲染性能。
抗鋸齒改進(jìn):引入自研抗鋸齒算法,相比傳統(tǒng)的 4xMSAA 算法,減少了 25% 的片元著色器計算量,同時保持視覺質(zhì)量。
模糊效果重構(gòu)
QtQuick 本身對模糊效果的支持較弱,性能表現(xiàn)難以滿足復(fù)雜場景需求。Treeland 針對模糊效果進(jìn)行了徹底重構(gòu):
顯存訪問優(yōu)化:通過直接從顯存中讀取組件下方的圖像數(shù)據(jù),避免了多余的 CPU-GPU 數(shù)據(jù)交換,提高了整體模糊處理效率。
融合模糊算法:
將多種模糊算法(如高斯模糊和雙邊模糊)進(jìn)行融合,以實現(xiàn)更好的性能和視覺平衡;
針對動態(tài)內(nèi)容場景,采用增量模糊計算方式,進(jìn)一步減少了幀間計算成本。
陰影效果優(yōu)化
QtQuick 提供了 BorderImage 組件,能通過九宮格拉伸技術(shù)為組件增加裝飾效果。但原生機(jī)制在大規(guī)模應(yīng)用時性能不足。Treeland 的改進(jìn)如下:
材質(zhì)復(fù)用:利用 ImageProvider 手動控制陰影貼圖資源的創(chuàng)建和管理。在多個組件大小相同的情況下,共享同一份材質(zhì)資源,避免重復(fù)加載,節(jié)省顯存;
實時更新:對于動態(tài)調(diào)整大小的窗口,Treeland 實現(xiàn)了實時更新的陰影裁剪算法,無需完全重新生成貼圖,進(jìn)一步優(yōu)化了性能;
視覺一致性:陰影的過渡效果與窗口動畫聯(lián)動,增強(qiáng)了整體界面的一致性和流暢性。
動畫效果改進(jìn)
Treeland 在動畫實現(xiàn)上直接采用 QtQuick 的 State 和 Transition 機(jī)制,同時結(jié)合自定義優(yōu)化,實現(xiàn)了流暢的界面動態(tài)效果:
狀態(tài)驅(qū)動:
使用 State 定義組件的不同狀態(tài)(如窗口最大化、最小化、還原等);
通過 Transition 配置狀態(tài)切換時的屬性變化邏輯(如位置、大小、透明度等)。
動畫增強(qiáng):
借助 QtQuick 動畫組件(如 NumberAnimation 和 PropertyAnimation),實現(xiàn)了高幀率的動畫過渡;
自適應(yīng)動畫曲線,根據(jù)窗口的大小和目標(biāo)狀態(tài)調(diào)整動畫時長,提供更貼合用戶直覺的交互體驗。
通過以上優(yōu)化,Treeland 不僅顯著提升了組件的渲染效率,還在視覺效果和用戶體驗上實現(xiàn)了跨越式進(jìn)步。具體表現(xiàn)為:
GPU 性能提升:相比 QtQuick 原生組件,Treeland 的渲染性能整體提高了;
資源利用率優(yōu)化:通過顯存訪問優(yōu)化和材質(zhì)復(fù)用技術(shù),大幅降低了內(nèi)存和顯存占用,為低性能設(shè)備也帶來了良好的兼容性。
4截圖錄屏
Treeland 提供了高效的快速區(qū)域選擇功能,支持吸附窗口以自動確定選區(qū)邊界,使操作更加直觀便捷。系統(tǒng)監(jiān)視器可通過該接口快速獲取特定窗口的相關(guān)信息,簡化信息提取的流程。
此外,Treeland 通過引入 DMA Buffer 技術(shù),大幅提升了數(shù)據(jù)復(fù)制的效率,支持跨屏幕截圖功能,無需客戶端處理復(fù)雜的窗口邏輯。為保護(hù)用戶隱私,Treeland 對截圖和錄屏返回的信息進(jìn)行嚴(yán)格管控,自動抹除窗口的敏感信息,杜絕隱私泄露的風(fēng)險。
在錄屏功能方面,Treeland對錄屏?xí)掃M(jìn)行了全面監(jiān)控,實時提醒用戶當(dāng)前處于錄屏狀態(tài),有效避免用戶在不知情的情況下泄露隱私。這種設(shè)計還彌補(bǔ)了 X11 環(huán)境下程序可直接獲取屏幕數(shù)據(jù)所導(dǎo)致的潛在隱患,顯著增強(qiáng)了系統(tǒng)的隱私保護(hù)能力。
5多用戶
Treeland 的多用戶優(yōu)化是其核心設(shè)計目標(biāo)之一。在傳統(tǒng)的 LightDM 模式下,不同用戶之間的切換依賴于 tty 層面前端程序的控制權(quán)轉(zhuǎn)移,每個用戶獨占一個 tty 進(jìn)行畫面顯示。然而,這種方式存在明顯的問題:
切換延遲與閃爍
由于 tty 切換需要進(jìn)行底層 DRM 和顯卡驅(qū)動的操作,屏幕緩沖區(qū)會被不同程序覆蓋,導(dǎo)致屏幕出現(xiàn)閃爍甚至短暫黑屏的現(xiàn)象。
資源消耗
每個用戶運行獨立的一套進(jìn)程組,包括窗口管理器、任務(wù)欄、文件管理器等。這不僅占用大量內(nèi)存,還要求每個用戶運行獨立的鎖屏界面,額外增加了資源負(fù)擔(dān)。
信息同步難題
為維持界面的一致性,用戶切換時需要同步跨用戶的狀態(tài),這帶來了實現(xiàn)上的復(fù)雜性。
Treeland 在設(shè)計中引入了 DDM(Deepin Display Manager),通過重新定義工作流程,解決了上述問題:
集中式合成
Treeland 被獨立抽離為一個統(tǒng)一的畫面合成器,各用戶的窗口畫面都通過統(tǒng)一機(jī)制發(fā)送到 Treeland 進(jìn)行最終的合成和顯示。這種架構(gòu)徹底消除了多 tty 切換的閃爍問題。
內(nèi)存優(yōu)化
不再需要為每個用戶單獨運行窗口管理器、鎖屏界面等進(jìn)程,大幅減少了內(nèi)存開銷。
狀態(tài)統(tǒng)一
由于所有用戶的界面由 Treeland 集中管理,切換用戶時無需進(jìn)行跨進(jìn)程的狀態(tài)同步,簡化了實現(xiàn)。
即便在 LightDM 下,Treeland 仍然可以通過用戶級別的 systemd 服務(wù)正常運行,作為一個獨立的 Wayland 合成器使用。然而,在這種模式下,Treeland 無法實現(xiàn) DDM 的多用戶優(yōu)化功能,僅具備單用戶 Wayland 合成器的基礎(chǔ)能力。
Treeland 的多用戶優(yōu)化通過集中式合成與資源整合,顯著改善了用戶切換的體驗,既提升了系統(tǒng)性能,又簡化了實現(xiàn)邏輯。雖然在傳統(tǒng) LightDM 環(huán)境中無法完全發(fā)揮優(yōu)勢,但其靈活的架構(gòu)設(shè)計確保了廣泛的適用性和良好的兼容性。
6手勢
Treeland 在手勢方面也有極大的進(jìn)步,以下是 Treeland 和 X11 以及原生 Wayland 協(xié)議之間的對比:
X11 的手勢事件處理
手勢事件由 libinput 生成,經(jīng)由 XInput2 轉(zhuǎn)發(fā)至 X Server。
X Server 解析事件后,依據(jù)焦點窗口的配置,將事件分發(fā)給客戶端應(yīng)用程序或窗口管理器(如 KWin)。
KWin 通過 XInput2 接口處理全局手勢,包括:
注冊輸入管理器;
識別全局手勢;
阻止手勢事件冒泡。
由于事件需在 libinput、X Server 和窗口管理器之間多次傳遞,造成較高延遲,導(dǎo)致手勢動畫不夠流暢且跟手性差。
Wayland 的手勢事件處理
手勢事件由 libinput 直接傳遞至 Wayland 合成器,無需經(jīng)過中間轉(zhuǎn)發(fā)(如 XInput2);
合成器(如 Treeland)可直接處理手勢事件,從而提升響應(yīng)速度和復(fù)雜手勢支持能力。
Treeland 的優(yōu)化
使用 Waylib 將 libinput 輸入事件轉(zhuǎn)換為 Qt 事件;
利用 Qt 原生手勢事件支持,將窗口或動畫組件與手勢處理器綁定,通過 QtQuick 實現(xiàn)流暢的跟手動畫。
Wayland 采用直接事件處理機(jī)制,簡化了手勢事件的傳遞路徑,大幅提升響應(yīng)速度,有效降低延遲。相比之下,X11 的復(fù)雜交互流程使手勢體驗欠佳。Treeland 結(jié)合 Wayland 和 QtQuick 技術(shù),實現(xiàn)了更出色的手勢動畫實時性和跟手性,帶來現(xiàn)代化的用戶體驗。
總結(jié)
總的來說,Treeland 作為新一代的 Wayland 合成器,在多個方面都實現(xiàn)了重大突破:
通過狀態(tài)驅(qū)動和動畫增強(qiáng),顯著提升了視覺效果和交互體驗;
引入 DMA Buffer 和隱私保護(hù)機(jī)制,讓截圖錄屏功能更加安全高效;
創(chuàng)新性地采用 DDM 和集中式合成,優(yōu)化了多用戶切換體驗;
基于 Wayland 和 QtQuick 技術(shù),實現(xiàn)了更流暢的手勢控制系統(tǒng)。
Treeland 的創(chuàng)新不僅顯著提升了系統(tǒng)性能,為用戶帶來更現(xiàn)代化、更安全的使用體驗,更充分展現(xiàn)了其在 Linux 桌面環(huán)境中巨大的發(fā)展?jié)摿Α?/p>
-
顯示器
+關(guān)注
關(guān)注
21文章
5068瀏覽量
141501 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
9730瀏覽量
87462 -
管理器
+關(guān)注
關(guān)注
0文章
252瀏覽量
18971
原文標(biāo)題:deepin 25 Preview丨Treeland:更快、更流暢
文章出處:【微信號:linux_deepin,微信公眾號:深度操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
敏捷合成器的技術(shù)原理和應(yīng)用場景
合成器
詳解頻率合成器高性能架構(gòu)的實現(xiàn)
基于DDS的頻率合成器設(shè)計介紹
如何利用FPGA設(shè)計PLL頻率合成器?
什么是頻率合成器
頻率合成器,頻率合成器原理及作用是什么?
什么是直接式頻率合成器(DS)
間接式頻率合成器(IS)的定義和原理是什么?
單環(huán)鎖相頻率合成器,單環(huán)鎖相頻率合成器是什么意思
集成鎖相環(huán)頻率合成器,什么是集成鎖相環(huán)頻率合成器
AD9832:25 MHz直接數(shù)字合成器,波形發(fā)生器數(shù)據(jù)表

pll頻率合成器工作原理與pll頻率合成器的原理圖解釋

評論