use thiserror::Error;
#[derive(Debug, Error)]
pub enum GpuError {
#[error("failed to request GPU adapter: {0}")]
AdapterRequest(#[from] wgpu::RequestAdapterError),
#[error("failed to request GPU device: {0}")]
DeviceRequest(#[from] wgpu::RequestDeviceError),
#[error("failed to create surface: {0}")]
SurfaceCreation(#[from] wgpu::CreateSurfaceError),
#[error("surface is incompatible with adapter")]
IncompatibleSurface,
#[error("failed to acquire swap chain texture: {0}")]
SwapChainAcquire(#[from] wgpu::SurfaceError),
#[error("shader compilation error: {0}")]
ShaderCompilation(String),
#[error("buffer creation error: {0}")]
BufferCreation(String),
#[error("pipeline creation error: {0}")]
PipelineCreation(String),
#[error("platform error: {0}")]
Platform(#[from] sable_platform::PlatformError),
#[error("window handle error: {0}")]
HandleError(#[from] raw_window_handle::HandleError),
}
pub type Result<T> = std::result::Result<T, GpuError>;