librashader_runtime_mtl/
error.rs

1//! Metal shader runtime errors.
2use librashader_common::{FilterMode, WrapMode};
3use librashader_preprocess::PreprocessError;
4use librashader_presets::ParsePresetError;
5use librashader_reflect::error::{ShaderCompileError, ShaderReflectError};
6use librashader_runtime::image::ImageError;
7use objc2::rc::Retained;
8use objc2_foundation::NSError;
9use thiserror::Error;
10
11/// Cumulative error type for Metal filter chains.
12#[derive(Error, Debug)]
13#[non_exhaustive]
14pub enum FilterChainError {
15    #[error("shader preset parse error")]
16    ShaderPresetError(#[from] ParsePresetError),
17    #[error("shader preprocess error")]
18    ShaderPreprocessError(#[from] PreprocessError),
19    #[error("shader compile error")]
20    ShaderCompileError(#[from] ShaderCompileError),
21    #[error("shader reflect error")]
22    ShaderReflectError(#[from] ShaderReflectError),
23    #[error("lut loading error")]
24    LutLoadError(#[from] ImageError),
25    #[error("sampler create error")]
26    SamplerError(WrapMode, FilterMode, FilterMode),
27    #[error("buffer creation error")]
28    BufferError,
29    #[error("metal error")]
30    MetalError(#[from] Retained<NSError>),
31    #[error("couldn't find entry for shader")]
32    ShaderWrongEntryName,
33    #[error("couldn't create render pass")]
34    FailedToCreateRenderPass,
35    #[error("couldn't create texture")]
36    FailedToCreateTexture,
37    #[error("couldn't create command buffer")]
38    FailedToCreateCommandBuffer,
39    #[error("unreachable")]
40    Infallible(#[from] std::convert::Infallible),
41}
42
43/// Result type for Metal filter chains.
44pub type Result<T> = std::result::Result<T, FilterChainError>;