GPUI Fast
A performance-focused fork of Zed's GPUI with incremental rendering and native window composition. v0.1.0 is available on crates.io. The project remains experimental.
- Retained Mode reuses unchanged views, layout nodes and text measurements.
- Scroll layers reuse cached GPU tiles and list rows while scrolling, on macOS, Linux and Windows.
- Window composition embeds native content while keeping GPUI menus, popovers and dialogs above it.
Retained Mode
GPUI Fast tracks rendering dependencies and rebuilds only what changed. Recorded Linux release-build CPU time per frame:
| Workload | Baseline | GPUI Fast |
|---|---|---|
| Unchanged window | 3.31 ms | 0.19 ms (−94%) |
| Sidebar scrolling | 5.95 ms | 0.79 ms (−87%) |
| Streaming quotes | 5.06 ms | 1.35 ms (−73%) |
The unchanged-window baseline disables retention in the same build; the other rows compare against upstream gpui-pre 0.3.7. Results depend on the workload. See Retained Mode and Scroll layers for measurements and implementation details.
Window composition
Opt-in composition supports macOS, Windows and Linux (Wayland and X11), based on zed#62379. GPUI menus, popovers and dialogs, including their shadows and translucent backdrops, render above the native content on all three:
| Platform | Native content | GPUI overlays |
|---|---|---|
| macOS | AppKit view (WKWebView) | Overlay layer |
| Windows | WebView2 composition | Overlay layer |
| Linux (Wayland) | Subsurface | Overlay subsurfaces |
| Linux (X11) | Child window (WebKitGTK) | Overlay window blended by the compositing manager; cut out of the native content without one |
# WKWebView on macOS, WebView2 on Windows, a GPU surface of its own on Linux
cargo run -p gpui_perf --example native_webview
# A WebKitGTK page on Linux X11 or XWayland
cargo run -p gpui_perf --example linux_webviewUsing it
Alias the published crates to GPUI's library names:
[dependencies]
gpui = { package = "gpui-fast", version = "0.1.0" }
gpui_platform = { package = "gpui-fast-platform", version = "0.1.0", features = ["wayland", "x11"] }The platform features above select Linux backends; omit them on macOS and Windows. GPUI Kit applications should follow the compatibility setup to use the same GPUI core.
Changes to render state outside tracked entities, globals and list/scroll state need cx.notify(). See Retained Mode for details.
Following upstream
v0.1.0 includes Zed's GPUI through a1b71072e5. UPSTREAM records the revision for the current checkout.
GPUI Fast keeps its implementation in fast/ modules with small hooks into upstream code, making future syncs easier. See Architecture and Contributing for design, building and testing.
License
Apache-2.0 — copyright Zed Industries, Inc. This is a modified fork; see LICENSE-APACHE.