Add example for triggering and recovering from rendering errors#22757
Merged
alice-i-cecile merged 5 commits intobevyengine:mainfrom Feb 2, 2026
Merged
Add example for triggering and recovering from rendering errors#22757alice-i-cecile merged 5 commits intobevyengine:mainfrom
alice-i-cecile merged 5 commits intobevyengine:mainfrom
Conversation
2057137 to
2bc00a2
Compare
IceSentry
reviewed
Jan 31, 2026
IceSentry
approved these changes
Jan 31, 2026
IQuick143
approved these changes
Jan 31, 2026
Merged
3fdd774 to
72d321c
Compare
IceSentry
reviewed
Feb 1, 2026
Member
|
on macOS:
|
Member
|
I think that those MacOS specific quirks are helpful to test and note down, but I'm going to merge this regardless so we can track and refine behavior over time more easily. |
viridia
pushed a commit
to viridia/bevy
that referenced
this pull request
Feb 3, 2026
…engine#22757) # Objective - Test suite/demonstration for render recovery ## Solution - Add an example that has ways to trigger various rendering errors ## Testing - run it Note: im opening this separately so that behavior on bevy main can be compared to upcoming render recovery pr. It doesn't have to merge first though.
github-merge-queue bot
pushed a commit
that referenced
this pull request
Feb 5, 2026
# Objective - Recover from rendering errors. - Another step towards render recovery after #22714 #22759 and #16481 ## Solution - Use `wgpu::Device::set_device_lost_callback` and `wgpu::Device::on_uncaptured_error` to listen for errors. - Add a state machine for the renderer - Update it on error - Add a `RenderErrorHandler` to let users specify behavior on error by returning a specific `RenderErrorPolicy` - This lets us for example ignore validation errors, delete responsible entities, or reload the renderer if the device was lost. ## Testing - #22757 with any of ```rs .insert_resource(bevy_render::error_handler::RenderErrorHandler(|_, _, _| { bevy_render::error_handler::RenderErrorPolicy::StopRendering })) ``` ```rs .insert_resource(bevy_render::error_handler::RenderErrorHandler(|_, _, _| { bevy_render::error_handler::RenderErrorPolicy::Recover(default()) })) ``` Note: no release note yet, as recovery does not exactly work well: this PR gets us to the point of being able to care about it, but we currently instantly crash on recover due to gpu resources not existing anymore. We need to build more resilience before publicizing imo. --------- Co-authored-by: Kristoffer Søholm <k.soeholm@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objective
Solution
Testing
Note: im opening this separately so that behavior on bevy main can be compared to upcoming render recovery pr. It doesn't have to merge first though.