1use std::fmt;
6
7#[derive(Debug)]
12#[non_exhaustive]
13pub enum Error {
14 OidnError { code: u32, message: String },
16 DeviceCreationFailed,
18 FilterCreationFailed,
20 OutOfMemory,
22 InvalidDimensions,
24 UnsupportedFormat,
26 BufferMapFailed(wgpu::BufferAsyncError),
28}
29
30impl fmt::Display for Error {
31 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32 match self {
33 Error::OidnError { code, message } => write!(f, "OIDN error ({}): {}", code, message),
34 Error::DeviceCreationFailed => write!(f, "OIDN device creation failed"),
35 Error::FilterCreationFailed => write!(f, "OIDN filter creation failed"),
36 Error::OutOfMemory => write!(f, "OIDN out of memory"),
37 Error::InvalidDimensions => write!(f, "invalid image dimensions"),
38 Error::UnsupportedFormat => write!(f, "unsupported texture format for denoising"),
39 Error::BufferMapFailed(e) => write!(f, "wgpu buffer map failed: {:?}", e),
40 }
41 }
42}
43
44impl std::error::Error for Error {}
45
46unsafe impl Send for Error {}
48unsafe impl Sync for Error {}