onedrop_renderer/
error.rs1use std::fmt;
4
5pub type Result<T> = std::result::Result<T, RenderError>;
7
8#[derive(Debug)]
10pub enum RenderError {
11 DeviceCreationFailed(String),
13
14 ShaderCompilationFailed { shader_name: String, reason: String },
16
17 TextureCreationFailed(String),
19
20 BufferCreationFailed(String),
22
23 RenderFailed(String),
25
26 InvalidConfiguration(String),
28
29 Other(String),
31}
32
33impl fmt::Display for RenderError {
34 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35 match self {
36 RenderError::DeviceCreationFailed(msg) => {
37 write!(f, "GPU device creation failed: {}", msg)
38 }
39 RenderError::ShaderCompilationFailed {
40 shader_name,
41 reason,
42 } => {
43 write!(f, "Shader '{}' compilation failed: {}", shader_name, reason)
44 }
45 RenderError::TextureCreationFailed(msg) => {
46 write!(f, "Texture creation failed: {}", msg)
47 }
48 RenderError::BufferCreationFailed(msg) => {
49 write!(f, "Buffer creation failed: {}", msg)
50 }
51 RenderError::RenderFailed(msg) => {
52 write!(f, "Rendering failed: {}", msg)
53 }
54 RenderError::InvalidConfiguration(msg) => {
55 write!(f, "Invalid configuration: {}", msg)
56 }
57 RenderError::Other(msg) => {
58 write!(f, "Error: {}", msg)
59 }
60 }
61 }
62}
63
64impl std::error::Error for RenderError {}
65
66impl From<wgpu::RequestDeviceError> for RenderError {
67 fn from(err: wgpu::RequestDeviceError) -> Self {
68 RenderError::DeviceCreationFailed(err.to_string())
69 }
70}
71
72impl From<wgpu::RequestAdapterError> for RenderError {
73 fn from(err: wgpu::RequestAdapterError) -> Self {
74 RenderError::DeviceCreationFailed(err.to_string())
75 }
76}