0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解deepin 25 Preview的Treeland窗口合成器

深度操作系统 ? 来源:深度操作系统 ? 2025-01-23 09:22 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

回顾

DDE 在 V15 时期,使用 Mutter 作为带合成器的窗管,以及 Metacity 这种不带合成器的窗管,一个是在高性能设备上使用,一个是为低性能设备上使用。

在 V20 时期,DDE 更换 KWin 当窗口管理器,由于 KWin 自带有关闭合成器的模式,所以 DDE 也放弃了 Metacity 作为备用窗管的选项。

痛点

从社区收集到的体验报告,绝大部分用户不满意在屏幕缩放上,一部分用户不满意在动画僵硬、死板、卡顿等用户体验上。

在以往版本的 DDE 中,受限于 X11 的架构,无法针对不同屏幕使用不同的缩放。很多用户可能是 1080p 的笔记本屏幕,外接一个 2K 或者 4K 的显示器,在 X11 下,用户只能照顾高分辨率的屏幕,牺牲低分辨率屏幕的使用,例如开启两倍屏幕缩放,在高分辨率下的屏幕显示刚刚好,但低分辨率屏幕已经无法查看任何一个正常的窗口了。

Treeland

Treeland 是 deepin 社区开发的一款基于 Wayland 协议的显示服务器,Treeland在底层使用 wlroots 作为 Wayland 的基础库,不修改 wlroots 的代码,也就意味着可以随时同步上游进度,获得新的功能与修复。上层使用 Qt,可以充分利用已有的大量 Qt 开发者,不再需要一直有专人负责特定项目,让 DDE 的技术栈更加统一。

60b9d91c-d8ad-11ef-9310-92fbcf53809c.png

优化

1屏幕缩放

Treeland 直接管理屏幕,支持为不同屏幕设置独立的缩放比例,从而确保高分辨率和普通分辨率的屏幕可以完美共存。通过扩展协议,Treeland 还支持浮点数缩放比例(如 1.25 或 1.5),让各种分辨率下的显示效果都能得到良好支持。

当窗口在不同屏幕间移动时,Treeland 会实时根据窗口所在位置调整其缩放比例。当窗口跨越两个屏幕时,系统会按照各自的缩放比例分别渲染窗口的不同部分,保证显示流畅且过渡自然。这种设计让用户在多屏工作时始终获得清晰、易用的界面体验。

2复制模式

在 X11 下,复制模式是通过将两个屏幕设置为相同分辨率并重叠坐标来实现的。然而,这种方法存在以下显著劣势:

重复渲染

X11 需要为两个屏幕分别渲染相同的画面,这种资源利用方式非常低效。相比之下,Treeland 可以在 DRM 层面直接将同一份画面数据发送到多个屏幕,避免重复渲染,从而大幅降低 GPU 负载,提升性能。

画面压缩与变形

当两个屏幕分辨率差异较大时,X11 会强制调整分辨率以保持一致,导致画面压缩或变形。Treeland 则采用原始分辨率输出,通过在屏幕上下或左右留出空白区域(letterboxing/pillarboxing)的方式保持画面比例,有效避免画面失真,优化复制模式下的显示效果。

增强的视觉效果

Treeland 不仅保持画面比例,还能在空白区域(如上下或左右空隙)绘制额外内容,比如模糊处理后的桌面壁纸。这种设计既提升了美观性,又改善了用户体验,使复制模式更加精致自然。

总的来说,Treeland 的实现方案在性能、画面质量和用户体验等方面都显著优于传统的 X11 复制模式,为多屏应用场景带来了重要优化。

3窗口效果

Treeland 使用 QtQuick 作为渲染层,然而 QtQuick 自带的部分组件性能并不太好,以下是其针对 QtQuick 自带组件性能问题的改进措施与实现细节。

圆角处理优化

QtQuick 的 Rectangle 组件支持圆角效果,但受限于只能同时对四个角进行操作,且性能存在一定瓶颈。Treeland 为了解决这一问题,实现了自定义的圆角裁剪控件:

异形窗口支持:相比 QtQuick 原生 Rectangle 的四角统一裁剪,Treeland 的自定义控件支持不规则圆角设计(如 DTK 的异形窗口效果),大幅提升了界面灵活性。

算法优化

新的圆角造型算法使得几何顶点数量减少 50%,降低了 GPU 的顶点处理负担;

三角细分效率提高了 100%,进一步优化了 GPU 渲染性能。

抗锯齿改进:引入自研抗锯齿算法,相比传统的 4xMSAA 算法,减少了 25% 的片元着色器计算量,同时保持视觉质量。

模糊效果重构

QtQuick 本身对模糊效果的支持较弱,性能表现难以满足复杂场景需求。Treeland 针对模糊效果进行了彻底重构:

显存访问优化:通过直接从显存中读取组件下方的图像数据,避免了多余的 CPU-GPU 数据交换,提高了整体模糊处理效率。

融合模糊算法:

将多种模糊算法(如高斯模糊和双边模糊)进行融合,以实现更好的性能和视觉平衡;

针对动态内容场景,采用增量模糊计算方式,进一步减少了帧间计算成本。

阴影效果优化

QtQuick 提供了 BorderImage 组件,能通过九宫格拉伸技术为组件增加装饰效果。但原生机制在大规模应用时性能不足。Treeland 的改进如下:

材质复用:利用 ImageProvider 手动控制阴影贴图资源的创建和管理。在多个组件大小相同的情况下,共享同一份材质资源,避免重复加载,节省显存;

实时更新:对于动态调整大小的窗口,Treeland 实现了实时更新的阴影裁剪算法,无需完全重新生成贴图,进一步优化了性能;

视觉一致性:阴影的过渡效果与窗口动画联动,增强了整体界面的一致性和流畅性。

动画效果改进

Treeland 在动画实现上直接采用 QtQuick 的 State 和 Transition 机制,同时结合自定义优化,实现了流畅的界面动态效果:

状态驱动:

使用 State 定义组件的不同状态(如窗口最大化、最小化、还原等);

通过 Transition 配置状态切换时的属性变化逻辑(如位置、大小、透明度等)。

动画增强:

借助 QtQuick 动画组件(如 NumberAnimation 和 PropertyAnimation),实现了高帧率的动画过渡;

自适应动画曲线,根据窗口的大小和目标状态调整动画时长,提供更贴合用户直觉的交互体验。

通过以上优化,Treeland 不仅显著提升了组件的渲染效率,还在视觉效果和用户体验上实现了跨越式进步。具体表现为:

GPU 性能提升:相比 QtQuick 原生组件,Treeland 的渲染性能整体提高了;

资源利用率优化:通过显存访问优化和材质复用技术,大幅降低了内存和显存占用,为低性能设备也带来了良好的兼容性。

4截图录屏

Treeland 提供了高效的快速区域选择功能,支持吸附窗口以自动确定选区边界,使操作更加直观便捷。系统监视器可通过该接口快速获取特定窗口的相关信息,简化信息提取的流程。

此外,Treeland 通过引入 DMA Buffer 技术,大幅提升了数据复制的效率,支持跨屏幕截图功能,无需客户端处理复杂的窗口逻辑。为保护用户隐私,Treeland 对截图和录屏返回的信息进行严格管控,自动抹除窗口的敏感信息,杜绝隐私泄露的风险。

在录屏功能方面,Treeland对录屏会话进行了全面监控,实时提醒用户当前处于录屏状态,有效避免用户在不知情的情况下泄露隐私。这种设计还弥补了 X11 环境下程序可直接获取屏幕数据所导致的潜在隐患,显著增强了系统的隐私保护能力。

5多用户

Treeland 的多用户优化是其核心设计目标之一。在传统的 LightDM 模式下,不同用户之间的切换依赖于 tty 层面前端程序的控制权转移,每个用户独占一个 tty 进行画面显示。然而,这种方式存在明显的问题:

切换延迟与闪烁

由于 tty 切换需要进行底层 DRM 和显卡驱动的操作,屏幕缓冲区会被不同程序覆盖,导致屏幕出现闪烁甚至短暂黑屏的现象。

资源消耗

每个用户运行独立的一套进程组,包括窗口管理器、任务栏、文件管理器等。这不仅占用大量内存,还要求每个用户运行独立的锁屏界面,额外增加了资源负担。

信息同步难题

为维持界面的一致性,用户切换时需要同步跨用户的状态,这带来了实现上的复杂性。

Treeland 在设计中引入了 DDM(Deepin Display Manager),通过重新定义工作流程,解决了上述问题:

集中式合成

Treeland 被独立抽离为一个统一的画面合成器,各用户的窗口画面都通过统一机制发送到 Treeland 进行最终的合成和显示。这种架构彻底消除了多 tty 切换的闪烁问题。

内存优化

不再需要为每个用户单独运行窗口管理器、锁屏界面等进程,大幅减少了内存开销。

状态统一

由于所有用户的界面由 Treeland 集中管理,切换用户时无需进行跨进程的状态同步,简化了实现。

即便在 LightDM 下,Treeland 仍然可以通过用户级别的 systemd 服务正常运行,作为一个独立的 Wayland 合成器使用。然而,在这种模式下,Treeland 无法实现 DDM 的多用户优化功能,仅具备单用户 Wayland 合成器的基础能力。

Treeland 的多用户优化通过集中式合成与资源整合,显著改善了用户切换的体验,既提升了系统性能,又简化了实现逻辑。虽然在传统 LightDM 环境中无法完全发挥优势,但其灵活的架构设计确保了广泛的适用性和良好的兼容性。

6手势

Treeland 在手势方面也有极大的进步,以下是 Treeland 和 X11 以及原生 Wayland 协议之间的对比:

X11 的手势事件处理

手势事件由 libinput 生成,经由 XInput2 转发至 X Server。

X Server 解析事件后,依据焦点窗口的配置,将事件分发给客户端应用程序或窗口管理器(如 KWin)。

KWin 通过 XInput2 接口处理全局手势,包括:

注册输入管理器;

识别全局手势;

阻止手势事件冒泡。

由于事件需在 libinput、X Server 和窗口管理器之间多次传递,造成较高延迟,导致手势动画不够流畅且跟手性差。

Wayland 的手势事件处理

手势事件由 libinput 直接传递至 Wayland 合成器,无需经过中间转发(如 XInput2);

合成器(如 Treeland)可直接处理手势事件,从而提升响应速度和复杂手势支持能力。

Treeland 的优化

使用 Waylib 将 libinput 输入事件转换为 Qt 事件;

利用 Qt 原生手势事件支持,将窗口或动画组件与手势处理器绑定,通过 QtQuick 实现流畅的跟手动画。

Wayland 采用直接事件处理机制,简化了手势事件的传递路径,大幅提升响应速度,有效降低延迟。相比之下,X11 的复杂交互流程使手势体验欠佳。Treeland 结合 Wayland 和 QtQuick 技术,实现了更出色的手势动画实时性和跟手性,带来现代化的用户体验。

总结

总的来说,Treeland 作为新一代的 Wayland 合成器,在多个方面都实现了重大突破:

通过状态驱动和动画增强,显著提升了视觉效果和交互体验;

引入 DMA Buffer 和隐私保护机制,让截图录屏功能更加安全高效;

创新性地采用 DDM 和集中式合成,优化了多用户切换体验;

基于 Wayland 和 QtQuick 技术,实现了更流畅的手势控制系统

Treeland 的创新不仅显著提升了系统性能,为用户带来更现代化、更安全的使用体验,更充分展现了其在 Linux 桌面环境中巨大的发展潜力。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 显示器
    +关注

    关注

    22

    文章

    5074

    浏览量

    141996
  • 服务器
    +关注

    关注

    13

    文章

    9826

    浏览量

    88227
  • 管理器
    +关注

    关注

    0

    文章

    254

    浏览量

    19131

原文标题:deepin 25 Preview丨Treeland:更快、更流畅

文章出处:【微信号:linux_deepin,微信公众号:深度操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    敏捷合成器的技术原理和应用场景

    敏捷合成器,作为一种高性能的信号发生器,其技术原理和应用场景值得深入探讨。技术原理敏捷合成器的技术原理主要基于先进的频率合成技术和数字信号处理技术。它通常具有宽频率范围、快速建立和可编程的相位、频率
    发表于 02-20 15:25

    合成器

    1、使用反馈有一种设备与振荡器有关,.称为合成器。在一些情况下,从普通振荡器出来的正弦波不够完美。射频工程师发现如果振荡器与其它电路结合起来,利用反馈,可以使正弦波更完美,这就适合成器的功能:一个振
    发表于 12-06 14:06

    详解频率合成器高性能架构的实现

    要满足苛刻的频率合成器要求,通常需要做到一定程度的设计灵活性。基本的锁相环(PLL)频率合成器能以低成本、高空间效率、低功耗封装提供合理的频谱纯度和频率捷变,因此它在射频(RF)系统核心位置发挥作用
    发表于 07-08 06:10

    基于DDS的频率合成器设计介绍

    直接数字频率合成(DDS)在过去十年受到了频率合成器设计工程师极大的欢迎,它被认为是一种具有低相位噪声和优良杂散性能的灵活的频率源,基于DDS的频率合成器在许多应用中能比基于锁相环(PLL)频率
    发表于 07-08 07:26

    如何利用FPGA设计PLL频率合成器

    电子技术应用频率合成技术是现代通信的重要组成部分,它是将一个高稳定度和高准确度的基准频率经过四则运算,产生同样稳定度和准确度的任意频率。频率合成器是电子系统的心脏,是影响电子系统性能的关键因素之一
    发表于 07-30 07:55

    什么是频率合成器

      频率合成器是利用一个或多个基准频率,通过各种技术途径产生一系列的离散频率信号的设备。这些频率的稳定度和精度均和基准频率相同,而且频率的转换时间很短,这样才会有效率和实用价值。  频率合成器的实现
    发表于 08-19 19:18

    锁相环频率合成器是什么原理?

    频率合成器的主要性能指标锁相环频率合成器原理锁相环频率合成器捕捉过程的分析与仿真
    发表于 04-22 06:27

    频率合成器,频率合成器原理及作用是什么?

    频率合成器,频率合成器原理及作用是什么? 所谓的频率合成器,就是以一个精确度、稳定度极好的石英晶体振荡器作为基准频率,并利用加、减
    发表于 03-23 11:04 ?1.5w次阅读

    什么是直接式频率合成器(DS)

    什么是直接式频率合成器(DS) 频率合成的历史 频率合成器被人们喻为众多电子系统的“心脏”。现代战
    发表于 03-23 11:23 ?1893次阅读

    间接式频率合成器(IS)的定义和原理是什么?

    间接式频率合成器(IS)的定义和原理是什么? 频率合成的历史 频率合成器被人们喻为众多电子系统的“心脏”。现代战争是
    发表于 03-23 11:31 ?2585次阅读

    单环锁相频率合成器,单环锁相频率合成器是什么意思

    单环锁相频率合成器,单环锁相频率合成器是什么意思 频率合成的历史 频率合成器被人们喻为众多电子系统的“心脏”。现代战争是
    发表于 03-23 11:36 ?1206次阅读

    集成锁相环频率合成器,什么是集成锁相环频率合成器

    集成锁相环频率合成器,什么是集成锁相环频率合成器 频率合成的历史 频率合成器被人们喻为众多电子系统
    发表于 03-23 11:45 ?884次阅读

    AD9832:25 MHz直接数字合成器,波形发生器数据表

    AD9832:25 MHz直接数字合成器,波形发生器数据表
    发表于 05-08 21:02 ?16次下载
    AD9832:<b class='flag-5'>25</b> MHz直接数字<b class='flag-5'>合成器</b>,波形发生器数据表

    pll频率合成器工作原理与pll频率合成器的原理图解释

    pll频率合成器工作原理与pll频率合成器的原理图解释 我们要搞清楚pll频率合成器工作原理与pll频率合成器的原理图就要先搞清楚pll和频率合成器
    的头像 发表于 02-24 18:19 ?1.1w次阅读
    pll频率<b class='flag-5'>合成器</b>工作原理与pll频率<b class='flag-5'>合成器</b>的原理图解释

    详解deepin 25 Preview的磐石系统

    deepin 25 Preview 带来了全新的“磐石系统”,从系统底层到日常使用,全方位提升稳定性和安全性。
    的头像 发表于 01-22 09:44 ?1611次阅读