use thiserror::Error;
#[derive(Error, Debug)]
pub enum GpuError {
#[error("no GPU backend available for current platform")]
NoBackend,
#[error("failed to initialise GPU device: {0}")]
InitFailed(String),
#[error("shader compilation failed for '{entry}': {message}")]
CompileFailed {
entry: String,
message: String,
},
#[error("pipeline creation failed for '{entry}': {message}")]
PipelineFailed {
entry: String,
message: String,
},
#[error("buffer creation failed: {message}")]
BufferCreationFailed {
message: String,
},
#[error("buffer readback failed: {message}")]
BufferReadFailed {
message: String,
},
#[error("dispatch failed: {message}")]
DispatchFailed {
message: String,
},
#[error("invalid buffer binding: {message}")]
InvalidBinding {
message: String,
},
#[error("internal GPU error: {0}")]
Internal(String),
#[error("platform I/O error: {0}")]
Io(#[from] std::io::Error),
}
pub type Result<T> = std::result::Result<T, GpuError>;