mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-12-08 21:26:17 +00:00
feat(types): add error::{ErrorType, WebGpuError} APIs
This commit is contained in:
parent
c3922d53d7
commit
c8752e5118
@ -58,6 +58,9 @@ Bottom level categories:
|
|||||||
- Add extra acceleration structure vertex formats. By @Vecvec in [#7580](https://github.com/gfx-rs/wgpu/pull/7580).
|
- Add extra acceleration structure vertex formats. By @Vecvec in [#7580](https://github.com/gfx-rs/wgpu/pull/7580).
|
||||||
- Add acceleration structure limits. By @Vecvec in [#7845](https://github.com/gfx-rs/wgpu/pull/7845).
|
- Add acceleration structure limits. By @Vecvec in [#7845](https://github.com/gfx-rs/wgpu/pull/7845).
|
||||||
- Add support for clip-distances feature for Vulkan and GL backends. By @dzamkov in [#7730](https://github.com/gfx-rs/wgpu/pull/7730)
|
- Add support for clip-distances feature for Vulkan and GL backends. By @dzamkov in [#7730](https://github.com/gfx-rs/wgpu/pull/7730)
|
||||||
|
- Added `wgpu_types::error::{ErrorType, WebGpuError}` for classification of errors according to WebGPU's [`GPUError`]'s classification scheme. This allows users of `wgpu-core` to offload error classification onto the WGPU ecosystem, rather than having to do it themselves without sufficient information. By @ErichDonGubler in [#6547](https://github.com/gfx-rs/wgpu/pull/6547).
|
||||||
|
|
||||||
|
[`GPUError`]: https://www.w3.org/TR/webgpu/#gpuerror
|
||||||
|
|
||||||
#### Vulkan
|
#### Vulkan
|
||||||
|
|
||||||
|
|||||||
46
wgpu-types/src/error.rs
Normal file
46
wgpu-types/src/error.rs
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
//! Shared types for WebGPU errors. See also:
|
||||||
|
//! <https://gpuweb.github.io/gpuweb/#errors-and-debugging>
|
||||||
|
|
||||||
|
use crate::DeviceLostReason;
|
||||||
|
|
||||||
|
/// A classification of WebGPU error for implementers of the WebGPU API to use in their own error
|
||||||
|
/// layer(s).
|
||||||
|
///
|
||||||
|
/// Strongly correlates to the [`GPUError`] and [`GPUErrorFilter`] types in the WebGPU API, with an
|
||||||
|
/// additional [`Self::DeviceLost`] variant.
|
||||||
|
///
|
||||||
|
/// [`GPUError`]: https://gpuweb.github.io/gpuweb/#gpuerror
|
||||||
|
/// [`GPUErrorFilter`]: https://gpuweb.github.io/gpuweb/#enumdef-gpuerrorfilter
|
||||||
|
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
||||||
|
pub enum ErrorType {
|
||||||
|
/// A [`GPUInternalError`].
|
||||||
|
///
|
||||||
|
/// [`GPUInternalError`]: https://gpuweb.github.io/gpuweb/#gpuinternalerror
|
||||||
|
Internal,
|
||||||
|
/// A [`GPUOutOfMemoryError`].
|
||||||
|
///
|
||||||
|
/// [`GPUOutOfMemoryError`]: https://gpuweb.github.io/gpuweb/#gpuoutofmemoryerror
|
||||||
|
OutOfMemory,
|
||||||
|
/// A [`GPUValidationError`].
|
||||||
|
///
|
||||||
|
/// [`GPUValidationError`]: https://gpuweb.github.io/gpuweb/#gpuvalidationerror
|
||||||
|
Validation,
|
||||||
|
/// Indicates that device loss occurred. In JavaScript, this means the [`GPUDevice.lost`]
|
||||||
|
/// property should be `resolve`d.
|
||||||
|
///
|
||||||
|
/// [`GPUDevice.lost`]: https://www.w3.org/TR/webgpu/#dom-gpudevice-lost
|
||||||
|
DeviceLost {
|
||||||
|
/// The reason the device was lost.
|
||||||
|
reason: DeviceLostReason,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A trait for querying the [`ErrorType`] classification of an error.
|
||||||
|
///
|
||||||
|
/// This is intended to be used as a convenience by implementations of WebGPU to classify errors
|
||||||
|
/// returned by [`wgpu_core`](crate).
|
||||||
|
pub trait WebGpuError: core::error::Error + 'static {
|
||||||
|
/// Determine the classification of this error as a WebGPU [`ErrorType`].
|
||||||
|
fn webgpu_error_type(&self) -> ErrorType;
|
||||||
|
}
|
||||||
@ -36,6 +36,7 @@ pub mod assertions;
|
|||||||
mod cast_utils;
|
mod cast_utils;
|
||||||
mod counters;
|
mod counters;
|
||||||
mod env;
|
mod env;
|
||||||
|
pub mod error;
|
||||||
mod features;
|
mod features;
|
||||||
pub mod instance;
|
pub mod instance;
|
||||||
pub mod math;
|
pub mod math;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user