{"record":{"id":"78a10f3537ce3445","repo":"zed-industries/zed","slug":"no-gpu-adapter-found-that-can-configure-the-displa","errorCode":null,"errorMessage":"No GPU adapter found that can configure the display surface","messagePattern":"No GPU adapter found that can configure the display surface","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"crates/gpui_wgpu/src/wgpu_context.rs","lineNumber":454,"sourceCode":"                        adapter,\n                        device,\n                        queue,\n                        dual_source_blending,\n                        color_atlas_texture_format,\n                    ));\n                }\n                Err(e) => {\n                    log::info!(\n                        \"  Adapter {} ({:?}) failed: {}, trying next...\",\n                        info.name,\n                        info.backend,\n                        e\n                    );\n                }\n            }\n        }\n\n        anyhow::bail!(\"No GPU adapter found that can configure the display surface\")\n    }\n\n    /// Try to use an adapter with a surface by creating a device and testing configuration.\n    /// Returns the device and queue if successful, allowing them to be reused.\n    #[cfg(not(target_family = \"wasm\"))]\n    async fn try_adapter_with_surface(\n        adapter: &wgpu::Adapter,\n        surface: &wgpu::Surface<'_>,\n    ) -> anyhow::Result<(wgpu::Device, wgpu::Queue, bool, TextureFormat)> {\n        let caps = surface.get_capabilities(adapter);\n        if caps.formats.is_empty() {\n            anyhow::bail!(\"no compatible surface formats\");\n        }\n        if caps.alpha_modes.is_empty() {\n            anyhow::bail!(\"no compatible alpha modes\");\n        }\n\n        let (device, queue, dual_source_blending, color_atlas_texture_format) =","sourceCodeStart":436,"sourceCodeEnd":472,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/gpui_wgpu/src/wgpu_context.rs#L436-L472","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"match select_adapter_and_device(&instance, &surface, hint, false).await {\n    Ok(ctx) => run_window(ctx),\n    Err(err) => {\n        // every adapter failed: surface a dialog with the per-adapter log\n        // and driver guidance instead of exiting silently\n    }\n}","preventionTips":["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"],"tags":["gpui","wgpu","gpu","surface","drivers","windowing"],"backgroundTag":"gpu-surface-configuration-failed","analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}