use std::fmt;
#[derive(Debug)]
#[non_exhaustive]
pub enum Error {
OidnError { code: u32, message: String },
DeviceCreationFailed,
FilterCreationFailed,
OutOfMemory,
InvalidDimensions,
UnsupportedFormat,
BufferMapFailed(wgpu::BufferAsyncError),
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::OidnError { code, message } => write!(f, "OIDN error ({}): {}", code, message),
Error::DeviceCreationFailed => write!(f, "OIDN device creation failed"),
Error::FilterCreationFailed => write!(f, "OIDN filter creation failed"),
Error::OutOfMemory => write!(f, "OIDN out of memory"),
Error::InvalidDimensions => write!(f, "invalid image dimensions"),
Error::UnsupportedFormat => write!(f, "unsupported texture format for denoising"),
Error::BufferMapFailed(e) => write!(f, "wgpu buffer map failed: {:?}", e),
}
}
}
impl std::error::Error for Error {}
unsafe impl Send for Error {}
unsafe impl Sync for Error {}