zed-industries/zed · critical
No GPU adapter found that can configure the display surface
Error message
No GPU adapter found that can configure the display surface
What it means
The adapter-selection loop tried every enumerated candidate, and each failed the device-creation plus surface-configuration test. Adapters exist (unlike the 'No GPU adapters found' case) but none could produce a working device/surface pair — typically driver-level surface bugs or filters excluding every usable adapter. Each failure is logged with the adapter name, backend and error before this final bail.
Source
Thrown at crates/gpui_wgpu/src/wgpu_context.rs:454
adapter,
device,
queue,
dual_source_blending,
color_atlas_texture_format,
));
}
Err(e) => {
log::info!(
" Adapter {} ({:?}) failed: {}, trying next...",
info.name,
info.backend,
e
);
}
}
}
anyhow::bail!("No GPU adapter found that can configure the display surface")
}
/// Try to use an adapter with a surface by creating a device and testing configuration.
/// Returns the device and queue if successful, allowing them to be reused.
#[cfg(not(target_family = "wasm"))]
async fn try_adapter_with_surface(
adapter: &wgpu::Adapter,
surface: &wgpu::Surface<'_>,
) -> anyhow::Result<(wgpu::Device, wgpu::Queue, bool, TextureFormat)> {
let caps = surface.get_capabilities(adapter);
if caps.formats.is_empty() {
anyhow::bail!("no compatible surface formats");
}
if caps.alpha_modes.is_empty() {
anyhow::bail!("no compatible alpha modes");
}
let (device, queue, dual_source_blending, color_atlas_texture_format) =View on GitHub (pinned to f4178619ac)
Solutions
- Update GPU drivers and Mesa to a current version
- Clear any ZED_DEVICE_ID override so every adapter is a candidate
- Try the other session type (X11 vs Wayland) to isolate compositor-specific surface bugs
- Read the log lines just above this error: each adapter attempt lists name, backend and the concrete failure
Defensive patterns
Strategy: fallback
Try / catch
match select_adapter_and_device(&instance, &surface, hint, false).await {
Ok(ctx) => run_window(ctx),
Err(err) => {
// every adapter failed: surface a dialog with the per-adapter log
// and driver guidance instead of exiting silently
}
} Prevention
- Log every adapter attempt (name, backend, error) and surface it in diagnostics
- Let users clear device-override settings when all candidates are filtered out
- Test rendering on hybrid-GPU and VM configurations in CI
When it happens
Trigger: Every adapter fails request_device or surface configuration: older Mesa with Vulkan surface bugs, a Wayland+NVIDIA mismatch, or a ZED_DEVICE_ID filter that excludes all usable adapters including software ones.
Common situations: Outdated Mesa or NVIDIA drivers; hybrid GPU systems where no adapter matches the display; environments where only software adapters exist but reject_software excludes them; device-id overrides pointing at a headless GPU.
Related errors
- Adapter {:?} (backend={:?}, device={:#06x}) is not compatibl
- No GPU adapters found
- no compatible surface formats
- no compatible alpha modes
- Too many consecutive GPU errors. Last error: {error}
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/78a10f3537ce3445.
Report an issue: GitHub.