Blade 圖形庫混亂且導致多項問題,影響 Zed 使用者以及其他使用 GPUI 的第三方應用程式。此拉取請求移除 Blade,並使用 wgpu 重新實現 Linux 平台的渲染器,wgpu 是 Rust UI 與圖形生態系中的事實標準。

這不僅能解決目前 Zed 使用者遇到的問題,未來也能從其他專案(如 Bevy 遊戲引擎、Iced 等)對 wgpu 的改進中受益。

此改動將關閉 Zed 倉庫中多個相關問題(例如與 Nvidia 和 Smithay 基於 Wayland 的合成器凍結問題),詳見相關議題連結。

開發者歡迎 Zed 維護者提供回饋,討論是否有興趣採用此方案。

由於 wgpu 是跨平台 API,建議未來可透過功能標誌在 macOS 和 Windows 平台啟用,類似先前 macos-blade 啟用 Blade 渲染器的方式。

關於是否能藉由此改動實現類似 Flutter Web 的網頁版 Zed,開發者指出還需大量工作,尤其是背景任務與檔案系統、輸入 API 需支援 Web/WASM。

對於是否使用 SurfaceTargetUnsafe::from_window 的討論中,認為目前手動實作已足夠,且錯誤訊息清楚,無需額外複雜度。

此拉取請求預計關閉多個問題,包括 #39097、#44814、#45836、#40481、#38497,並可能解決其他尚未測試的問題。

關於未來是否會在 Windows 和 macOS 平台使用 wgpu,開發團隊表示目前無計劃替換這兩平台的原生渲染器,因為它們在效能與相容性上可能優於 wgpu。

討論中也提及,雖然 wgpu 支援多種後端(Vulkan、DirectX12、ANGLE 等),理論上可提升裝置相容性,但實際記憶體使用量較高,且在 Windows 11 上空白視窗記憶體使用約為 100MB,遠高於 gpui 自訂渲染器約 10MB。

有使用者反映此改動導致 VRAM 使用量顯著增加,但其他使用者無法重現此問題,且認為 wgpu 渲染器基本上是 Blade 的移植,差異不大。

總體而言,此改動旨在提升 Linux 平台的穩定性與未來擴展性,並促進與 Rust 生態系其他專案的整合。