{"record":{"id":"b5d5a6d35f442580","repo":"gfx-rs/wgpu","slug":"only-opaque-auto-or-premultiplied-alpha-mode-are-s","errorCode":null,"errorMessage":"Only Opaque/Auto or PreMultiplied alpha mode are supported on web","messagePattern":"Only Opaque/Auto or PreMultiplied alpha mode are supported on web","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"wgpu/src/backend/webgpu.rs","lineNumber":4377,"sourceCode":"\n        match self.canvas {\n            Canvas::Canvas(ref canvas) => {\n                canvas.set_width(config.width);\n                canvas.set_height(config.height);\n            }\n            Canvas::Offscreen(ref canvas) => {\n                canvas.set_width(config.width);\n                canvas.set_height(config.height);\n            }\n        }\n\n        if let wgt::PresentMode::Mailbox | wgt::PresentMode::Immediate = config.present_mode {\n            panic!(\"Only FIFO/Auto* is supported on web\");\n        }\n        if let wgt::CompositeAlphaMode::PostMultiplied | wgt::CompositeAlphaMode::Inherit =\n            config.alpha_mode\n        {\n            panic!(\"Only Opaque/Auto or PreMultiplied alpha mode are supported on web\");\n        }\n        let alpha_mode = match config.alpha_mode {\n            wgt::CompositeAlphaMode::PreMultiplied => webgpu_sys::GpuCanvasAlphaMode::Premultiplied,\n            _ => webgpu_sys::GpuCanvasAlphaMode::Opaque,\n        };\n        let mapped = webgpu_sys::GpuCanvasConfiguration::new(\n            &device.inner,\n            map_texture_format(config.format),\n        );\n        mapped.set_usage(config.usage.bits());\n        mapped.set_alpha_mode(alpha_mode);\n        match config.color_space {\n            // `Auto` intentionally keeps the browser defaults (colorSpace\n            // \"srgb\", standard tone mapping) even for fp16 formats, matching\n            // wgpu's historical behavior on the web.\n            wgt::SurfaceColorSpace::Auto | wgt::SurfaceColorSpace::Srgb => {}\n            wgt::SurfaceColorSpace::DisplayP3 => {\n                // The vendored bindings have no `colorSpace` setter, so set","sourceCodeStart":4359,"sourceCodeEnd":4395,"githubUrl":"https://github.com/gfx-rs/wgpu/blob/3e11ff59bf3f9795d285ecc045014089640d7248/wgpu/src/backend/webgpu.rs#L4359-L4395","documentation":"Panic during Surface::configure on the WebGPU backend: the requested CompositeAlphaMode is PostMultiplied (or another unsupported mode), which browsers reject; only Opaque, Auto, and PreMultiplied map to the web alpha-compositing model. The faulty input is config.alpha_mode.","triggerScenarios":"Thrown at wgpu/src/backend/webgpu.rs:4377 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use CompositeAlphaMode::Opaque, PreMultiplied, or Auto on the web","Query get_composite_alpha_modes() on the surface capabilities and select from the supported set"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3e11ff59bf3f9795d285ecc045014089640d7248","analyzedAt":"2026-09-03T01:43:21.459Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T07:17:11.731Z"}