## Objective Make renderer benchmarks exercise GPUI's scheduled frame callback instead of drawing synchronously whenever application effects are flushed. Add finite rendering sessions for workloads that need to run until explicit completion, with the goal of exposing expensive foreground work and rendering stalls without artificial display waits. ## Changes - Keep automatic drawing during effect flushing test-only. Benchmark updates schedule frames, and the benchmark context scans existing per-window scheduling state to deliver callbacks outside the App borrow. - Deliver pending frames after foreground task polls and benchmark input/workload callbacks. Nested actions and effects complete before frame delivery. - Add `bench_renderer_session` with fresh untimed setup, an input-turn index, a stop flag, a deadline, and final presentation before successful completion. Session-owned state is dropped outside measurement so it can cancel unfinished work. - Present setup's initial frame batch before tracing starts and activate benchmark windows to avoid unintended inactive-window animation throttling. - Stop task benchmarks as soon as their result is ready, before delivering an unrelated extra animation frame. Renderer sessions separately retain their final-presentation guarantee. ## Scheduling and scope This is an **unpaced work-and-render benchmark**, not a simulation of display latency or an OS event loop. Renderer input turns service up to the initial ready-task count, delivering frames between polls; rendering after a poll does not inject another input. The report's FPS affects reporting only, not execution. Individual task polls and frame callbacks cannot be preempted, so an external process timeout is still needed for work that never returns. This is the second part of the benchmark split following #64099, which has merged. Expanded timing/attribution reporting, intermediate-texture reuse, and native event-loop integration are deferred. ## Validation Passed after merging current `main`: - `corgi fmt -p gpui -- --check` - `corgi check -p gpui --features bench-support --lib` - `corgi check -p gpui --lib` - `git diff --check origin/main...HEAD` This PR intentionally contains no added tests while the implementation is being reviewed. Existing test modules are unchanged. Runtime tests and downstream Delta smoke runs have not been performed for this redesigned scheduling policy; checks from the earlier implementation are not validation of this version. Release Notes: - N/A
Zed
Welcome to Zed, a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
Installation
On macOS, Linux, and Windows you can download Zed directly or install Zed via your local package manager (macOS/Linux/Windows).
Other platforms are not yet available:
- Web (tracking discussion)
Developing Zed
Contributing
See CONTRIBUTING.md for ways you can contribute to Zed.
Also... we're hiring! Check out our jobs page for open roles.
Licensing
Zed source code is licensed primarily under GPL-3.0-or-later, with Apache-2.0 components where marked.
License information for third party dependencies must be correctly provided for CI to pass.
We use cargo-about to automatically comply with open source licenses. If CI is failing, check the following:
- Is it showing a
no license specifiederror for a crate you've created? If so, addpublish = falseunder[package]in your crate's Cargo.toml. - Is the error
failed to satisfy license requirementsfor a dependency? If so, first determine what license the project has and whether this system is sufficient to comply with this license's requirements. If you're unsure, ask a lawyer. Once you've verified that this system is acceptable add the license's SPDX identifier to theacceptedarray inscript/licenses/zed-licenses.toml. - Is
cargo-aboutunable to find the license for a dependency? If so, add a clarification field at the end ofscript/licenses/zed-licenses.toml, as specified in the cargo-about book.
Sponsorship
Zed is developed by Zed Industries, Inc., a for-profit company.
If you’d like to financially support the project, you can do so via GitHub Sponsors. Sponsorships go directly to Zed Industries and are used as general company revenue. There are no perks or entitlements associated with sponsorship.