Linux 图形新闻
在本季度初,我们回顾了 2013 年的图形技术发展如何更偏向渐进式而非革命性,或许是考虑到对 LTS 稳定性的需求。今年的情况看起来截然不同,几项重大变更正在悄然进行中。
上次,我们将 XWayland 的上游状态视为 Wayland 桌面未来走向的潜在晴雨表。我们将关注最近发生了什么以及未来会发生什么。
X.orgmesa 项目近年来取得了惊人的进展,本季度实现了 10.0 里程碑版本。此版本为 Intel 实现了 OpenGL 3.3 API(对其他图形芯片组的支持将随后跟进)。这带来了新的纹理、顶点和着色器 API 以及数十个错误修复。上个月发布的 10.1 版本又增加了六个 GL API,并将 OpenGL 3.3 支持扩展到多个较新的 NVIDIA 和 Radeon 显卡。此外,mesa 项目还针对 9.2.x 和 10.0.x 系列发布了错误修复版本。
与此同时,X11 项目最终在推迟发布以包含更多新功能后发布了 1.15.0。此版本带来了 Direct Rendering Infrastructure 3 (DRI3) 和 Present Extension,我们在之前的报告中讨论过这些。还包括 GLX 重写,这清理了大量冗余和不必要的代码。该项目还在为 1.14 分支开发错误修复版本,该版本提供十几个 XQuartz 修复程序,并且已经开始为 1.16 系列发布预发布版本(见下文)。
-ati 驱动程序的7.3.0 版本值得关注,因为它距离上次发布已经很久了。值得注意的更改包括默认启用 GLAMOR 加速和支持 GLAMOR X-Video。还包括通常的改进,以支持更新的显卡,包括 Southern Islands 显卡的平铺性能优化、Hawaii 类显卡的初步支持以及 Berlin 硬件的 PCI ID。
自 1.15 版本发布以来,xorg-server 1.16 的开发重点一直是 Intel 对 GLAMOR 的改进(包括移植他们的大量优化技术)、Keith Packard (Intel) 对大量警告的清理以及通常的错误修复和代码清理。尚未合并的其他工作包括 XWayland 和 XMir 支持代码,这些代码允许 Wayland 和 Mir 运行 Xorg 会话;由于许多应用程序尚未从 X 移植到 Wayland 或 Mir,因此这些 X 会话提供了兼容层,以允许应用程序基础设施逐步从 X 迁移。
GLAMOR 是一个通用的开源 2D 图形驱动程序,它使用 OpenGL 进行 2D 图形操作,将结果绘制到纹理,然后直接渲染纹理。这提供了一种硬件无关的方式来执行 2D 操作,只要平台具有 OpenGL、gbm 和 drm 库即可。从历史上看,每个视频驱动程序 DDX 都实现了自己手动调整的 2D 渲染加速,其中 Intel 的 XAA->EXA->UXA->SNA 加速系列可能是最著名的。然而,随着 3D 合成桌面变得越来越普遍,精细调整的 2D 加速变得不那么重要。与此同时,基于 ARM 的平板电脑、智能手机和其他消费类设备的市场引入了新的图形芯片,这些芯片具有良好的 EGL 支持,但没有 X 驱动程序;对于这种情况,尤其有助于使用 GLAMOR(或类似技术)通过 GL 连接 2D 支持。
XWayland 代码最初是作为 Xorg 模块开发的,Xorg 视频驱动程序可以挂接到该模块中,但随着 GLAMOR 的改进,XWayland 现在是它自己的 DDX 驱动程序,它使用 GLAMOR 进行加速。有了这种新的架构方向,代码更加直接和自包含,只有 2500 行。这些补丁在 4 月初发布,以便包含在 1.16 版本中。不幸的是,这种作为 DDX 运行的新方法显然给 NVIDIA 支持 GLX 直接渲染的 Wayland 计划带来了麻烦;但由于 NVIDIA 正在私下进行开发,因此可能很难找到解决方案,因此希望他们能够适应这些变化。
添加了对 systemd logind 的支持,这使得可以运行“无根 X”——无需 suid root 权限即可安装 Xorg 二进制文件。这是 Linux 系统的一项重大安全改进。但是,它仅适用于支持 kms 的视频驱动程序,这意味着它不适用于 NVIDIA 的驱动程序或 vesa 驱动程序。Redhat 正在努力添加 suid root 包装器,该包装器检测系统是否需要 root 权限。如果系统的某些卡不支持 kms,则它会使用 suid 权限执行 Xorg;否则,它会在执行真正的 Xorg 二进制文件之前删除 suid。通过将此实现为离散包装器,可以在安装旧驱动程序时安装它,并在使用可以以无根 X 运行的驱动程序时将其排除在外。
-intel 驱动程序正接近其 3.0 大型版本。本季度发布的快照几乎完全是错误修复,但是最新的快照 2.99.911 还包括两个新功能来支持无根 Xserver:服务器文件描述符和一个小型背光助手。上个季度添加的包含在此版本中的两个功能是 TearFree 转换输出和默认的 SNA 2D 加速。几个主要的发行版已经默认搭载 SNA,因此对于大多数用户来说,3.0 版本主要代表大量的错误修复。
Cairo与上一季度相比,Cairo 的开发有所加快,并且在准备发布时,对警告和其他 distcheck 问题的清理给予了更多关注。还进行了广泛的针对性修复以解决小错误,包括来自发布到错误跟踪器的补丁中的一些错误。特别是 Postscript 和 PDF 后端在本季度受到了更多关注以进行错误修复。
在本发布周期的早期,添加了一个补丁来提高缩小图像质量,但是测试表明,这也导致了非同小的性能下降。在邮件列表上的健康辩论中,已经提出了一些折衷方案,但迄今为止还没有任何补丁。
除了缩小性能下降之外,该版本的主要关注点是测试套件的状态。过去一年的贡献对测试套件不利。一度,我们最多有 1000 个崩溃测试(高于上个版本的 200 个)和 5300 个失败测试(高于 4200 个)。已经发布了几个补丁来修复大约 500 个崩溃测试,但这里仍然有很多工作要做。
cairo 1.12 | git 03/17 | git 03/29 | |
运行测试 | 22751 | 24838 | 24838 |
通过 | 15809 | 15884 | 16725 |
通过率 (%) | 69% | 64% | 67% |
失败 | 4198 | 5383 | 5529 |
失败率 (%) | 18% | 22% | 22% |
预期失败 | 405 | 330 | 332 |
错误 | 1 | 1 | 1 |
崩溃 | 227 | 1017 | 28 |
未测试 | 2111 | 2223 | 2223 |
总计 | 22751 | 24838 | 24838 |
已经进行了许多关于尽快发布 1.14 版本,或者至少是仅修复错误的 1.12.x 版本的讨论,以便发行版有一个新版本可以包含在其 LTS 版本中。这些讨论激发了活动,但并未导致实际发布;当前项目负责人 (Chris Wilson) 一段时间以来一直对发布计划保持沉默。可能其他人会参与推动发布,但到目前为止,还没有制定明确的计划。
WaylandWayland 项目由两个代码树组成:“wayland”,它只是协议定义,以及“weston”,即为协议实现后端服务器的演示合成器。
wayland 1.4 于 2014 年 1 月 24 日发布,是当前的稳定版本。此版本将 Subsurfaces 协议提升为官方 Wayland 协议,用于处理表面内的表面(例如 Web 浏览器页面内的视频播放器)。其他一些小的增强功能包括一系列错误修复、SHM Buffer SIGBUS 保护以防止恶意客户端以及用于将 wl_proxy 队列重置为默认值的机制。
weston 1.4 也于 2014 年 1 月 24 日发布。此版本中包含的一些特别值得注意的项目
- 适用于通过 XWayland 在 Wayland 下运行的 X 应用程序的正确窗口按钮/装饰。
- 用于键盘焦点、类似 exposé 的窗口选择器、表面的触摸移动和触摸激活以及触摸屏拖放的动画。
- 通过允许合成器首先使用 pixman 启动,然后在稍后初始化 EGL+GLES2 后在运行时切换到 gl-renderer 模块,从而实现更快的 GL 启动速度。此外,还提供了一种更安全的方式来使用 logind 在 KMS 上启动 weston,以 drm drop/set master 并打开输入设备。
- 修复了监视器拔出问题,以便它可以正确清理并将窗口移回可见区域。
- 添加了 xdg-shell 协议。这为应用程序建立了一组标准的 API,以便在符合 Wayland 标准的桌面环境中工作。
- 还添加了 Crop and Scale 协议。这使客户端应用程序可以将表面的子矩形限制为仅显示,并有助于缩放它。
- 嵌套合成器缓冲区直通是一种新的 EGL 扩展,允许将缓冲区直接从应用程序的子窗口传递到底层合成器本身,从而跳过任何嵌套的合成器渲染。例如,这将实现更快、更直接的 Web 浏览器内视频播放渲染。
自 1.4 版本发布以来,向上游主分支接受补丁的速度有所放缓,并且一些补丁集正在等待邮件列表上的最终审核,但本季度总共有 254 个补丁已提交到 Wayland 的开发树中。其中五分之一的补丁用于 Wayland 协议包以修复错误(空指针断言、文档澄清、内存清理),其余的用于 Weston 演示合成器。
一些主要的持续工作(其中一些仍在进行中)包括
- Wayland presentation extension。这允许准确的演示时间反馈,以确保流畅的视频播放,同时保持音频/视频同步。
- XDG Shell 协议和实现。此协议定义了 Wayland GUI shell 应支持的基本操作。此工作的部分代码已经落地,但邮件列表中仍在讨论更多内容。
- 全屏 shell 协议。这适用于具有单个表面或一组表面的简单单客户端系统,或适用于需要对输出进行更高程度控制的客户端。
- exposay 修复和行为(排列)优化。
- randr 协议。这将允许用户或客户端访问屏幕大小调整和旋转。但是,允许客户端进行这种级别的访问存在一些安全考虑因素。
- Weston IVI shell。这是用于 Tizen 的车载信息娱乐系统的参考 shell。
- Per-surface color management。这是一个非常新的提案,仍然存在许多悬而未决的问题。
如上所述,在 4 月初,在 X Server 1.16 版本发布之前,在 X Server 中实现 XWayland 支持的第一个补丁集已落地。这使得 XWayland 成为类似于 XQuartz 和 XWin 的 DDX,并支持 DRI3+present 和渲染节点。如果一些依赖问题及时得到解决,则 Glamor 支持将列入包含列表中。
最后,Canonical 的 Wayland 替代方案 Mir 计划在 Ubuntu 14.10 中落地作为默认合成器,Unity 8 作为其窗口系统。虽然这比最初计划晚了一年,但这是一种更好的策略,因为他们将有三个非 LTS 版本来进行实验和测试。在他们的 13.10 版本中落地会非常冒险,并且很可能对他们的 LTS 的成功造成致命打击;令人好奇的是,他们为什么一开始没有将目标定为 14.10,而是让自己因诱骗和转换其开发社区而受到批评。
即将举行的活动- Linux 内核峰会 - 8 月 18-20 日:美国,芝加哥
- LinuxCon US - 8 月 20-22 日:美国,芝加哥
- X.org 开发者大会: XDC2014 - 10 月 8-10 日:法国,波尔多
- LinuxCon EU - 10 月 13-15 日:德国,杜塞尔多夫
- Linux Plumbers - 10 月 15-17 日:德国,杜塞尔多夫
在 Stefan Schmidt 管理的社区努力下,EFL 1.9 版本于 2 月成功按计划发布。此版本在大幅缩短的 3 个月时间表中,具有初始 AT-SPI 支持、渲染管道内效果过滤器的启动、期待已久的向 GStreamer 1.0 的迁移以及文本处理优化。
与去年第四季度相比,社区和开发增长都在第一季度加速:EFL 本身——正在接近 1.10 版本——提交到主分支的次数比上季度增加了 36%,而 Enlightenment 现在正在接近 DR0.19,在同一时期内的提交次数惊人地增加了 226%。
1.10 版本计划于 2014 年 5 月 19 日发布,并且似乎进展顺利。此版本最值得注意的是 Eo (E object) 基础架构的更新和稳定,为输入和渲染添加了 DRM 引擎,以及开始完全支持 C++。E19 也即将到来,尽管专家想知道它是否会在下次看到哈雷彗星之前落地。
最终想法在 X 的 Glamor 更改和 XWayland 补丁集上游落地之间,2014 年有望向我们展示 Linux 图形领域的一些相当深刻的变化。X 服务器在更广泛的图形硬件阵列中变得更加通用 - GLAMOR 使将 X 移植到新显卡变得更加容易,因为现在您可以跳过编写硬件特定的 2D 加速。
X Server 1.16 中的 XWayland 支持可能被证明更具革命性,因为它最终将允许使用库存 X 服务器在 Wayland 下运行 X 应用程序。随着 Canonical 在 Ubuntu 14.10 中将 Mir 作为默认设置进行推动,我们可以预期看到其他发行版认真考虑使用 Weston 作为其系统合成器,在该合成器内部的 XWayland 客户端下运行应用程序(或可能是整个用户会话)。如果他们看到运行 Weston 而不是 X 的切实好处,我们很可能最终会看到向 Wayland 的过渡开始蓬勃发展。或者,但是,如果性能下降、故障和不兼容性抬头,我们可能会看到在另一个 LTS 周期内更强烈地重新拥抱 X.org。