From a955968de35ac2448d78184af9dc84a6c492b631 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Mon, 22 Jul 2024 12:21:28 -0600 Subject: [PATCH] Don't panic on GPU hang (#14974) Fixes: #12766 Fixes: #14022 Release Notes: - linux: Fix panic when GPU is temporarily unavailable. --- crates/gpui/src/platform/blade/blade_renderer.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/gpui/src/platform/blade/blade_renderer.rs b/crates/gpui/src/platform/blade/blade_renderer.rs index 1830d0cd0dd80ad02235deb631986c2779fa33ff..ee6026184678666eb90446257f870074e8e27a06 100644 --- a/crates/gpui/src/platform/blade/blade_renderer.rs +++ b/crates/gpui/src/platform/blade/blade_renderer.rs @@ -18,7 +18,7 @@ use blade_graphics as gpu; use blade_util::{BufferBelt, BufferBeltDescriptor}; use std::{mem, sync::Arc}; -const MAX_FRAME_TIME_MS: u32 = 1000; +const MAX_FRAME_TIME_MS: u32 = 10000; #[cfg(target_os = "macos")] pub type Context = (); @@ -412,7 +412,8 @@ impl BladeRenderer { fn wait_for_gpu(&mut self) { if let Some(last_sp) = self.last_sync_point.take() { if !self.gpu.wait_for(&last_sp, MAX_FRAME_TIME_MS) { - panic!("GPU hung"); + log::error!("GPU hung"); + while !self.gpu.wait_for(&last_sp, MAX_FRAME_TIME_MS) {} } } }