{"record":{"id":"1d013042f782e4a2","repo":"gfx-rs/wgpu","slug":"not-implemented-1d0130","errorCode":null,"errorMessage":"not implemented","messagePattern":"not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"naga/src/back/spv/image.rs","lineNumber":121,"sourceCode":"    type_id: Word,\n\n    /// The id of the image being accessed.\n    image_id: Word,\n}\n\nimpl Load {\n    fn from_image_expr(\n        ctx: &mut BlockContext<'_>,\n        image_id: Word,\n        image_class: crate::ImageClass,\n        result_type_id: Word,\n    ) -> Result<Load, Error> {\n        let opcode = match image_class {\n            crate::ImageClass::Storage { .. } => spirv::Op::ImageRead,\n            crate::ImageClass::Depth { .. } | crate::ImageClass::Sampled { .. } => {\n                spirv::Op::ImageFetch\n            }\n            crate::ImageClass::External => unimplemented!(),\n        };\n\n        // `OpImageRead` and `OpImageFetch` instructions produce vec4<f32>\n        // values. Most of the time, we can just use `result_type_id` for\n        // this. The exception is that `Expression::ImageLoad` from a depth\n        // image produces a scalar `f32`, so in that case we need to find\n        // the right SPIR-V type for the access instruction here.\n        let type_id = match image_class {\n            crate::ImageClass::Depth { .. } => ctx.get_numeric_type_id(NumericType::Vector {\n                size: crate::VectorSize::Quad,\n                scalar: crate::Scalar::F32,\n            }),\n            _ => result_type_id,\n        };\n\n        Ok(Load {\n            opcode,\n            type_id,","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/gfx-rs/wgpu/blob/3e11ff59bf3f9795d285ecc045014089640d7248/naga/src/back/spv/image.rs#L103-L139","documentation":"Panic in naga's SPIR-V backend: Load::from_image_expr hit an image with ImageClass::External, which the Vulkan writer has no SPIR-V counterpart for (external images are Metal-only). The faulty input is a module using an external image while targeting SPIR-V.","triggerScenarios":"Thrown at naga/src/back/spv/image.rs:121 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Do not use external textures/images when compiling shaders to SPIR-V","Target MSL when external images are required"],"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"}