# gpui: Prefer Mailbox present mode on Wayland to avoid FIFO stalls \(\#57077\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/980a2942929f60812ba4e6e0e2855e1ebe96c468)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 980a2942929f60812ba4e6e0e2855e1ebe96c468

Requested commit: 980a2942929f60812ba4e6e0e2855e1ebe96c468

Commit: 980a2942929f60812ba4e6e0e2855e1ebe96c468

Tree: 7ac66dc8acdbdd065483b2220a092c4a22d3b012

Author: Higor Prado

Committer: GitHub

## Message

```
gpui: Prefer Mailbox present mode on Wayland to avoid FIFO stalls (#57077)

The WgpuRenderer defaults to VK_PRESENT_MODE_FIFO_KHR (vsync), which
blocks vkQueuePresentKHR until the compositor releases a buffer via
wl_surface.frame. On some Wayland compositor+driver combinations
(notably NVIDIA proprietary + Hyprland, but also observed on KDE/GNOME +
AMD RADV), these frame callbacks can be delayed or lost, stalling the
entire calloop event loop for tens of seconds.

VK_PRESENT_MODE_MAILBOX_KHR does not block on vblank: it replaces the
pending frame in a single-entry queue. This avoids the stall entirely.
The renderer already falls back to Fifo automatically if Mailbox is
unsupported by the driver.

The WgpuSurfaceConfig has had a preferred_present_mode field since
#50815 (added for Android lifecycle transitions with the same
rationale). This commit sets it to Mailbox in the Wayland window
creation path only. X11 is not affected.

Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Note on tests: This change is in the Wayland platform's window creation
path (WaylandWindowState::new). The surface configuration is delegated
to WgpuRenderer which already has test coverage for
preferred_present_mode fallback logic. A full integration test would
require a running Wayland compositor in CI. Verified manually and tested
against the renderer's unwrap_or(Fifo) safety net by inspecting
surface_caps.present_modes on both NVIDIA proprietary and Mesa RADV
drivers.

Closes: #50229
Closes: #55345
Closes: #39097
Closes: #50734

Refs: #38497, #52009, #52403, #50574, #49961, #47750, #46203, #50195,
#50283, #42164, #39156, #39234, #35948, #32618

Release Notes:

- Fixed UI freezes on Linux (Wayland) when on certain GPU/driver
combinations

---------

Co-authored-by: Neel <neel@zed.dev>
```

## Parents

- [9abb73ee326118a7bf8afcd524acbb660e97bd50](https://git.cafe/gitcafe/zed/commit/9abb73ee326118a7bf8afcd524acbb660e97bd50?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/980a2942929f60812ba4e6e0e2855e1ebe96c468?format=markdown)
