1use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum GpuError {
8 #[error("no compatible GPU found: {0}")]
10 NoGpuAvailable(String),
11
12 #[error("GPU backend initialization failed: {0}")]
14 BackendInit(String),
15
16 #[error("shader compilation failed: {0}")]
18 ShaderCompilation(String),
19
20 #[error(
22 "GPU memory exceeded: requested {requested_bytes} bytes, available {available_bytes} bytes"
23 )]
24 MemoryExceeded {
25 requested_bytes: u64,
26 available_bytes: u64,
27 },
28
29 #[error("unsupported tile version {version}; expected {expected}")]
31 TileVersionMismatch { version: u8, expected: u8 },
32
33 #[error("GPU dispatch failed: {0}")]
35 DispatchFailed(String),
36
37 #[error("host ↔ device transfer failed: {0}")]
39 TransferFailed(String),
40}