use thiserror::Error;
#[derive(Error, Debug)]
pub enum GpuError {
#[error("no compatible GPU found: {0}")]
NoGpuAvailable(String),
#[error("GPU backend initialization failed: {0}")]
BackendInit(String),
#[error("shader compilation failed: {0}")]
ShaderCompilation(String),
#[error(
"GPU memory exceeded: requested {requested_bytes} bytes, available {available_bytes} bytes"
)]
MemoryExceeded {
requested_bytes: u64,
available_bytes: u64,
},
#[error("unsupported tile version {version}; expected {expected}")]
TileVersionMismatch { version: u8, expected: u8 },
#[error("GPU dispatch failed: {0}")]
DispatchFailed(String),
#[error("host ↔ device transfer failed: {0}")]
TransferFailed(String),
}