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