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

  1. Update GPU drivers and Mesa to a current version
  2. Clear any ZED_DEVICE_ID override so every adapter is a candidate
  3. Try the other session type (X11 vs Wayland) to isolate compositor-specific surface bugs
  4. 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

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


AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20). Data as JSON: /api/errors/78a10f3537ce3445. Report an issue: GitHub.