文章摘要
该PR移除了blade渲染器,改用wgpu重新实现了Linux平台的渲染器,以提升性能和兼容性。
文章总结
文章主要内容概述
标题: gpui: 移除Blade,使用wgpu重新实现Linux渲染器 (#46758)
作者: zortax
项目: zed-industries/zed
状态: 已合并
核心内容
问题背景
- 现有的Blade图形库存在诸多问题,导致Zed用户及第三方应用在使用GPUI时遇到兼容性和稳定性问题。
- 具体问题包括NVIDIA显卡在Linux下的冻结问题(如niri-wm/niri#2335)及其他相关Issue。
解决方案
- 移除Blade库,改用Rust生态中广泛使用的
wgpu(WebGPU实现)重新实现Linux平台的渲染器。 wgpu是Rust UI/图形领域的标准工具,被Bevy游戏引擎、Iced等项目采用,具有更好的维护性和社区支持。
- 移除Blade库,改用Rust生态中广泛使用的
优势
- 解决现有Blade导致的兼容性问题。
- 未来可受益于
wgpu的持续优化和生态贡献。 - 为跨平台功能(如Web客户端)提供潜在支持。
争议与讨论
- 性能与内存:部分用户反馈
wgpu的初始内存占用较高(Windows下约100MB vs Blade的10MB),但实际渲染复杂内容时差异可能缩小。 - 跨平台扩展:是否将
wgpu作为可选渲染器扩展到macOS/Windows存在分歧。维护团队认为原生渲染器(如Metal/DirectX)在性能和兼容性上更优。 - 维护成本:团队倾向不保留Blade以减少代码维护负担。
- 性能与内存:部分用户反馈
优化与结果
- 经过多次优化后,
wgpu版本的VRAM和CPU耗时均优于原Blade实现(如CPU耗时减少20%)。 - 最终合并的提交(f988a34)在性能测试中表现良好。
- 经过多次优化后,
相关Issue
该PR解决了以下问题:
- #44814
- #40481
- niri-wm/niri#2335
社区反馈
- 获得52个👍、25个🚀等积极反应,多数支持转向
wgpu。 - 部分用户建议保留Blade作为可选方案,但未被采纳。
精简说明
此PR移除了问题频发的Blade图形库,改用更成熟的wgpu实现Linux渲染器,解决了冻结等兼容性问题,并通过优化使性能优于原方案。尽管存在内存占用的争议,团队认为wgpu的生态优势和维护性更符合长期需求。
评论总结
以下是评论内容的总结,涵盖主要观点和论据:
技术迁移的潜在好处
- 使用wgpu可能使Zed在浏览器中运行(类似VSCode的远程接口)
"An interesting side effect... run Zed in a web browser" - 可能改善老旧GPU/无GPU环境下的兼容性
"Will this help running Zed in environments with no GPU/old GPUs?"
- 使用wgpu可能使Zed在浏览器中运行(类似VSCode的远程接口)
Rust GUI生态的挑战
- 关键依赖维护不足,项目半成品多,LLM可能延缓发展
"Rust GUI is in a tough spot... set the ecosystem back" - GPUI框架开发暂停,转向社区维护分支
"Zed stopped GPUI development... pushed off anything not directly related to Zed"
- 关键依赖维护不足,项目半成品多,LLM可能延缓发展
对Blade和wgpu的质疑
- Blade存在渲染问题(闪烁、黑块),wgpu未必能长期解决
"Why flickering and black triangles?... WebGPU implementation isn't exactly slim" - wgpu作为兼容层可能影响性能
"Will this make Zed slower, since Wgpu is a compatibility layer?"
- Blade存在渲染问题(闪烁、黑块),wgpu未必能长期解决
WebGPU标准的争议
- 与Vulkan 1.3差异大,游戏/科学计算领域兴趣不足
"WebGPU is closer to Vulkan 1.0... lack of interest from game engines"
- 与Vulkan 1.3差异大,游戏/科学计算领域兴趣不足
用户体验问题
- 字体渲染模糊,不及其他编辑器
"fonts in Zed are much blurrier... Can't even use bitmap fonts" - 对纯GPU加速编辑器的实用性存疑
"I would rather my editor works in many possible environments... even tty"
- 字体渲染模糊,不及其他编辑器
个别正向反馈
- 可能修复特定硬件(如Orange Pi)的兼容性问题
"Latest builds stopped working on panfrost... Maybe I can have it back" - 对Makepad等跨平台Rust项目的期待
"I wish makepad project would get more traction"
- 可能修复特定硬件(如Orange Pi)的兼容性问题
(注:所有评论均无评分数据,故未体现认可度差异)