summaryrefslogtreecommitdiffstats
path: root/third_party/rust/wgpu-hal/src/auxil/dxgi/result.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/wgpu-hal/src/auxil/dxgi/result.rs')
-rw-r--r--third_party/rust/wgpu-hal/src/auxil/dxgi/result.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/third_party/rust/wgpu-hal/src/auxil/dxgi/result.rs b/third_party/rust/wgpu-hal/src/auxil/dxgi/result.rs
index db013d2dec..2ac4464568 100644
--- a/third_party/rust/wgpu-hal/src/auxil/dxgi/result.rs
+++ b/third_party/rust/wgpu-hal/src/auxil/dxgi/result.rs
@@ -21,8 +21,26 @@ impl HResult<()> for i32 {
Err(Cow::Borrowed(description))
}
fn into_device_result(self, description: &str) -> Result<(), crate::DeviceError> {
+ #![allow(unreachable_code)]
+
self.into_result().map_err(|err| {
log::error!("{} failed: {}", description, err);
+
+ match self {
+ winerror::E_OUTOFMEMORY => {
+ #[cfg(feature = "oom_panic")]
+ panic!("{description} failed: Out of memory");
+ }
+ winerror::DXGI_ERROR_DEVICE_RESET | winerror::DXGI_ERROR_DEVICE_REMOVED => {
+ #[cfg(feature = "device_lost_panic")]
+ panic!("{description} failed: Device lost ({err})");
+ }
+ _ => {
+ #[cfg(feature = "internal_error_panic")]
+ panic!("{description} failed: {err}");
+ }
+ }
+
if self == winerror::E_OUTOFMEMORY {
crate::DeviceError::OutOfMemory
} else {