deepin 助力开源桌面生态:mesa LLVMpipe ORCJIT 上游化的台前幕后


内容来源:deepin(深度)社区


近日,mesa 开源图形驱动合并了 llvmpipe 的 ORCJIT 后端的 Merge Request (MR),并实现了对 riscv64 架构的支持。

LLVMpipe 是什么?

LLVMpipe 是 mesa 驱动中的一种软件渲染器,它不使用 GPU 硬件,而是利用 LLVM 中的 JIT 编译器,动态地将待渲染的图形相关代码转译为栅格化的数据用于显示,相对于 softpipe 而言性能更优。

饱受诟病的闭源驱动从始至终都是阻碍 riscv64 架构桌面生态的一大原罪,导致大部分 riscv64 架构的开发板的内置 GPU 完全或部分不可用,桌面发行版只能使用软件渲染作为替代方案。

然而,在很长一段时间,mesa 的 LLVMpipe 使用的 JIT 后端是老旧的、缺乏架构支持的 MCJIT,而非更新的、架构支持更加广泛的 ORCJIT。由于前者已经明确由后者替代接续,不再接受新的架构更新,这使得 mesa 在 riscv64 等架构上使用软件渲染时只能使用性能更加低下的 softpipe,最终导致桌面环境几乎无法使用,使得桌面生态遭受毁灭性的打击。

正因如此,开源社区急切地渴望在 riscv64 架构上拥有一个更快的软件渲染器。

ORCJIT 的首次尝试

时间推进到了 2022 年 7 月。一位 Alex Fan (@alexfanqi) 的开发者提交了 MR 17801,为 mesa 引入了新的 ORCJIT 后端,同时还为其加上了 riscv64 支持,这使得在 riscv64 上使用 LLVMpipe 软件渲染成为了可能。

这个 MR 并没有第一时间被合并,因为有开发者指出它没有一个开关用以在编译时切换后端、代码不够简洁需要优化、缺少着色器缓存等问题,还需要进一步优化。

从此开始,长达两年的 LLVMpipe ORCJIT 后端合并的长跑开始了。

2022 年 7 月,openEuler 社区的 RISC-V SIG 发现了这个 PR 并将其并集成,发布了一篇文章介绍了它的性能提升效果。

然而,就在 riscv64 平台的开源桌面生态即将迎来曙光的时候,世事难料,随着 mesa 开发分支的高速推进,原来的 Merge Request 缺乏维护,与主线的差异和冲突越来越大,渐渐的被淹没在冗长的 MR 列表中,逐渐被人淡忘。

社区的接力:开源软件不灭的火种

2023 年 11 月,一位名为 Yukari Chiba (@YukariChiba) 的开发者在维护自己的发行版时,遇到了同样的问题。她受够了大部分主线发行版在遇到这个问题时切换到 softpipe 的忍让态度,决定着手解决这个问题。

被尘封在 MR 列表中的 patch,再一次化作荧幕上的光芒。

11 月 1 日,@YukariChiba 在某个群组里发布了一张在飞腾派上以开启了 ORCJIT 的主线 mesa 使用 LLVMpipe 运行 glxinfo 的截图,并在次日发布了一张在 PineTab-V 上使用 LLVMpipe 运行 glmark 的截图。

11 月 8 日,@YukariChiba 以相同的 ID,在 mesa 主线中重新提交了 MR 26018,旨在为主线版本 mesa 提供参考 patch 的同时,推进 mesa 主线的合并。

很快,deepin、ArchLinux RISC-V、AOSC OS 等发行版也先后使用了这一版 MR 的补丁,RISC-V 主线化的桌面体验再一次达到了可用的状态。

2024 年 4 月,Icenowy Zheng (@icenowy) 在 ORCJIT MR 的基础上增加了着色器缓存和 loongarch 架构的支持,这意味着 ORCJIT 后端一旦合入,所有的主流桌面架构都能实现性能优异的 LLVMpipe 支持。

众人拾柴火焰高,长风破浪会有时,LLVMpipe ORCJIT 这一突破性进展受到越来越多开发者的关注,合并进入主线逐渐被提上了日程。

MR 的接力冲刺和最终合并

6 月 19 日,有开发者评论:

Is there anything outstanding that is preventing this from being merged into the main mesa branch?

而这打破了 MR 评论区的宁静。在后续的 1 个月里,社区贡献者们对该 MR 提出了数十条修改意见;Dave Airlie (@airlied) 为帮助 ORCJIT 最终落地提交了数个前序修改和代码结构优化;MR 提交者 @YukariChiba 根据修改意见对 MR 提交内容修改了数十个版本,并最终在 6 月 28 日提交了最终版本。

最终,7 月 16 日,Merge Request 26018 完成了合并前 CI 检查,被 mesa 主线合入,标志这这一场由全球无数开发者参与、持续两年的开源马拉松圆满落幕。

deepin的持续跟踪与维护:幕后故事

在 mesa 提交 MR 的这位 ID 称作 @YukariChiba 的开发者还有另外的身份:deepin(深度)开源社区的研发工程师,deepin-ports SIG 开发者,deepin RISC-V port 的维护者之一。

deepin-ports SIG 在 2023 年成功将 RISC-V 的支持合并到了主线,同时也对主流的开发板进行了适配。与其它开源社区一样,deepin 也饱受无法主线化、依赖闭源驱动组件的 GPU 图形驱动的困扰,mesa 的 ORCJIT 后端支持此时无异于雪中送炭。

deepin 在 2023 年 12 月 6 日便对这一份更新的 patch 做了内部的打包验证,并在 VisionFive2、LicheePi4A、SG2042 EVB 等开发板上做了实机验证和性能测试。

次日,deepin 合并了此 MR 的 patch 到 mesa 主线仓库,为 riscv64 架构默认打开了 ORCJIT 支持,并在后续所有的 riscv64 设备镜像中启用。

从 2023 年 11 月的初版补丁,直到 2024 年 7 月 16 日的最终合并,deepin 的 mesa 版本也相应的从 23.1.2 一路升级到了 24.1.0。在这过程中,deepin-ports SIG 积极适配新版 mesa 并刷新补丁,做到了在版本迭代的过程中补丁持续有效,助力了此特性的测试和维护,客观上为 mesa 上游的最终合并提供了社区支持。

在此期间,deepin 同时也超前引入了尚未合并、基于 ORCJIT 提交的 loongarch 支持补丁和着色器缓存补丁,为 deepin-ports 两大架构 riscv64 和 loong64 提供了更高性能的软件渲染,完善了 deepin 的桌面生态。

未来,deepin 还将继续跟进 mesa 等开源软件的上游更新和后续的性能优化,为完善 amd64/arm64/riscv64/loong64 四大架构的开源桌面体验而不懈努力。

 

附录:

(1)deepin 全版本镜像(含 deepin V15):https://distrowatch.com/index.php?distribution=deepin

(2)deepin RISC-V 架构镜像(LicheePi 4A、VisionFive 等):https://www.deepin.org/zh/download/


相關推薦

2024-08-03

件供应链安全 现有小组动态: 1. deepin-ports SIG: mesa LLVMpipe ORCJIT上游化 成功适配奕斯伟计算EIC7700X SIG详情:deepin-ports SIG 2. deepin LoongArch SIG: 为 6.6 与 6.9 内核推进龙架构的增强平台支持,并结合厂商指导与其它社区经

2024-08-13

查看原文 deepin V23版本已完成龙架构 (LoongArch) 适配,龙架构是由国内自主CPU引领者龙芯中科所研发处理器使用的指令集架构,其产品包括3A6000、3A5000、3B5000等多款高性能多核心桌面处理器。这一重要里程碑不仅标志着国产CPU与

2023-08-12

于 LicheePi 4A 的 Imagination 驱动尚未完整开源,故渲染使用 llvmpipe 作为软件替代方案,因此部分桌面特效暂不可用。deepin 将持续关注和跟进相关图形驱动开源和主线合并的进展,并适时更新镜像。此外,RISC-V 分支合并主线也已在

2024-08-27

SC-V年度盛会——2024 RISC-V中国峰会于浙江杭州盛大召开!deepin(深度)社区携手合作伙伴出席峰会,与国内外业界专家、企业代表、研究机构及社区伙伴,共同探讨RISC-V的最新进展与未来趋势。 8月23日,deepin(深度)社区系

2024-08-16

与Windows、MacOS 这两个商业操作系统一样强大。” ——deepin(深度)社区创始人 刘闻欢(deepin) 8月15日,国际知名开源社区deepin(深度)社区在线上举办了主题为“聚AI而生 大有不同”新品发布会,正式对外发布开源操作

2024-07-19

内容来源:deepin(深度)社区 在去年7月份,我们成功使 deepin 初步适配了Apple M1 。今年随着deepin V23 beta进入RC2版本,deepin M1项目理所当然地也会跟进更新。 除此之外,本次适配工作不仅限于提升系统环境版本,还顺带更新了

2022-05-19

创无限”——打造立足中国面向全球的桌面系统根社区 deepin 线上发布会成功举办。 会上,统信软件宣布,将以深度(deepin)社区为基础,建设立足中国、面向全球的桌面操作系统根社区,打造中国桌面操作系统的根系统。资

2022-10-19

深度操作系统 deepin 20.7.1 已发布。公告称此版本进一步提升用户体验,增加 NVIDIA 驱动预装功能、 修复系统漏洞 、部分功能更新适用于 700+ 机型,全面提升了系统使用的稳定性、流畅性及兼容性。 增加NVIDIA驱动预装功能 增

2023-02-25

器默认启用 Vulkan 网格着色器 使用 Plasma Wayland 和 Gallium LLVMpipe 驱动程序时,对 KDE Plasma 桌面环境的改进支持 为 RADV 和 Turnip 实现了更多的 VK\\_EXT\\_dynamic\\_state3 功能 修复了《古墓丽影 崛起》在 Wine/DXVK 上出现VK_ERROR_DEVICE_LOST

2023-04-01

下一代云原生操作系统的重要力量。未来,基金会将继续助力OpenCloudOS操作系统的孵化发展,将其打造成为国际一流开源操作系统社区。” 自2021年成立至今,OpenCloudOS 社区成员增长迅速,目前已有600余家生态伙伴加入,覆盖操

2022-08-02

将在8月发布2022年跨越上游、跨端协同的全新版本 —— deepin 23 Preview。 据称,即将发布的deepin 23 预览版将是跨越上游Debian社区基于根社区理念打造的一款根操作系统,是集合社区开源力量、蕴含大量创新技术的全新一代操作

2024-08-01

配置、开发、调试等各个环节。 目前已提供包括发行版 deepin V23、UOS 1070、openEuler 24.03、Ubuntu 24.04、debian 12、openKylin 2.0 RC 的玲珑安装教程。   应用商店:快速安装玲珑应用的窗口 ◉ 一键体验:让您在不同发行版下也能

2024-08-14

有望成为推动新一代信息技术发展的关键驱动力。目前,deepin(深度)社区已与RISC-V生态系统建立了紧密联系,不仅成功完成了deepin自研应用向RISC-V架构的迁移,而且还取得了显著成果。 deepin V23成功兼容并优化了多款RISC-V架构

2022-11-04

发布。  22.3-rc1 新功能(排名不分先后): llvmpipe 上的 GL_ARB_shader_clock lavapipe 上的 VK_KHR_shader_clock Mesa-DB,新的单文件缓存类型 RADV、lavapipe 上的 VK_EXT_attachment_feedback_loop_layout RADV 上的 VK_KHR_global_priority zink 上的 GL_