2015年全球网站优秀设计师,做自媒体你不得不知道的视频网站,怎样建立和设计公司网站,东坑镇网站建设近日#xff0c;deepin#xff08;深度#xff09;社区亮相COSCon24 第九届中国开源年会开源市集#xff0c;且社区资深桌面研发工程师张丁元为大家来了《Treeland#xff0c;DDE进步的阶梯》技术分享。
就着这个机会#xff0c;今天就让我们一起来聊聊如何在追求华丽动…近日deepin深度社区亮相COSCon24 第九届中国开源年会开源市集且社区资深桌面研发工程师张丁元为大家来了《TreelandDDE进步的阶梯》技术分享。
就着这个机会今天就让我们一起来聊聊如何在追求华丽动画和流畅体验的同时还能保持系统的轻盈和高效。这就像是在玩一场平衡游戏设计师和架构师各自站在天平的两端一边是视觉盛宴另一边是性能怪兽。这两者之间的平衡就需要我们研发团队来巧妙地“牺牲”一些头发脑力来实现了。 历史背景
在 deepin 15 时期开发团队使用 Mutter 为高性能设备提供流畅图形效果用 Metacity 为低配置设备保证系统流畅性。但在 deepin 20 时期团队决定采用 KWin 作为新窗口管理器因其具备强大功能且可关闭合成器适应不同硬件配置。因此放弃了 MullterMetacity 的组合以确保在各种设备上提供流畅安全的图形界面体验。然而技术的不断发展促使我们再次面临技术革新。 技术选择X11 与 Wayland
在 Linux 下目前有两个技术栈一个是历史悠久的 X11另一个是较新的 Wayland 。接下来跟随我一起来对比两个技术。
X11Wayland架构传统的客户端-服务器模型支持网络传输和远程显示简化设计去除×服务器复杂性提高效率和响应速度专注于本地显示性能由于设计老旧性能在现代场景下不 佳依赖扩展和补丁实现现代图形效 果现代化设计简化染过程性能提升显著尤其在动画和窗口操作方面安全性安全性问题明显应用程序可以访问 彼此的窗口信息易受恶意程序干扰应用程序隔离性强无法访问其他程序的图像或输入输出安全性高可扩展性和兼容性x11有非常广泛的应用支持和兼容性。 许多老的应用程序和桌面环境仍然依赖于X11协议逐渐被主流桌面环境支持但生态不如x11广泛需要兼容层运行×11应用输入设备支持对传统输入设备支持成熟但在多点 触控和手势支持方面不够灵活优化现代硬件支持特别是在多点触控和手势方面远程桌面和网络透明性支持通过网络远程传输显示内容适 合专业领域使用没有×11的网络透明性远程桌面功能有限通常需要第三方工具
总的来说X11 作为老牌的显示服务器拥有广泛的兼容性和成熟的生态系统。然而其架构在安全性、性能和易用性方面存在一些局限性。相比之下Wayland 作为一种新兴的显示服务器其架构简化了客户端和服务器之间的通信过程减少了潜在的安全漏洞从而提高了整体的安全性。
此外Wayland 在性能方面也有显著的优势能够更好地支持现代显示技术如高分辨率和高帧率的显示任务。最后Wayland 的架构设计使得其配置和管理相对简单用户体验更加友好有助于吸引更多新手用户。 架构设计与新窗口管理器 Treeland
从技术层面上我们认为是时候更新技术方案了曾经的 X11 窗口管理器 合成器的模式灵活但不满足需求而 Wayland 可通过将窗口管理器、合成器与显示系统从底层整合提供了一种避免画面撕裂的更新机制。
因此 DDE 决定结合 Wayland 开发一个新的窗口管理器——Treeland。它在底层使用 wlroots 作为 Wayland 基础库不修改 wlroots 代码可随时同步上游进度获得新的功能和修复。上层使用 Qt使技术栈更统一。它专为满足 DDE 需求而设计避免了使用第三方窗口管理器时常见的破坏性调整、同步问题和维护成本。 上图描述了 Treeland 在整体上会使用哪些项目或接口完成功能。 Treeland 结构图 Treeland 的技术结构与功能
1、重要项目介绍 QWlrootswlroots 的 Qt 绑定将 Wayland 信号转换为 Qt 风格信号。 Waylib将 wlroots 组件封装成 QtQuick 对象使用 QPA 为 Treeland 提供事件转换与分发。 DtkDeclarativeDTK 的 QtQuick 组件封装大部分 DTK style 控件。
在 Waylib 中QPA 功能举足轻重。系统底层事件先进入 Waylib转换为 Qt 内部事件发送给上层。当用户点击窗口时Treeland 通过 Waylib 生成事件发送给客户端完成界面交互。 Treeland 处理底层事件与上层事件的流程 2、界面效果与优化
圆角
DDE 及 deepin 社区应用大量采用窗口圆角设计Treeland 提供自己的裁圆角控件新造型算法减少几何顶点数量和计算量采用新抗锯齿算法提高 GPU 性能。QtQuick 圆角是由 Rectangle 组件提供的它只能同时对四个角进行操作红色块。但 DTK 程序具备异形窗口的能力所以 Treeland 提供了自己的裁圆角控件黄色块。
新的造型算法、几何顶点数量比 QtQuick 原生的 Rectangle 减少50%GPU 顶点渲染和三角细分性能提升100%。
采用新的抗锯齿算法提高了 GPU 片元着色器性能相比于普通 4xMSAA 抗锯齿算法计算量减少1/4。 红色为 QtQuick 圆角/黄色为 Treeland 圆角
模糊
QtQuick 的模糊组件仅支持对控件自身进行模糊这并不符合 Treeland 的需求。Treeland 重新实现模糊组件能从显存获取组件下方图像数据使用融合模糊算法优化性能。 QtQuick 模糊控件 Treeland 模糊控件
阴影
Treeland 使用 BorderImage 作为窗口阴影贴图通过 ImageProvider 手动创建贴图材质在相同大小下可复用同一份材质。 动画
直接使用 QtQuick 提供的动画组件为界面提供动画效果。使用 State 和 Transition 为组件定义属性变化例如窗口最大化和还原两个 State 切换会触发不同的 Transition 执行属性变化在属性变化时使用 QtQuick 的动画组件完成动画播放。 3、多用户功能
Treeland 作为解决方案的一部分旨在实现多用户共用合成器。与传统模式相比DDM 和 Treeland 重新设计工作流程将 Treeland 单独抽离用户通过相同机制将窗口画面发送给 Treeland 进行合成上屏节省内存避免黑屏闪烁和状态同步难题。
一个简化的 DDM 与 Treeland 的多用户登录流程 4、与 systemd 的集成
DDE 的每个用户会话切换至 systemd 服务Treeland 模式下加载单独服务为用户会话注入显示环境变量使用 systemd 的 socket 机制懒加载确保用户侧窗口正常显示。
多用户登录时的基本流程 总结
深度操作系统DDE在窗口管理器方面的演进从 Mutter 和 Metacity 到 KWin 再到我们自己的 Treeland 展示了我们在系统架构和用户体验方面的持续创新和改进。 相关阅读
1deepin - 国际排名查看
2深度桌面环境DDE
3deepin 2024 年度用户使用体验调研