Skip to content

Add IndirectParametersBuffersSettings#23459

Merged
alice-i-cecile merged 2 commits intobevyengine:mainfrom
atlv24:ad/buffer-splits
Mar 22, 2026
Merged

Add IndirectParametersBuffersSettings#23459
alice-i-cecile merged 2 commits intobevyengine:mainfrom
atlv24:ad/buffer-splits

Conversation

@atlv24
Copy link
Copy Markdown
Contributor

@atlv24 atlv24 commented Mar 22, 2026

Objective

Solution

  • split out the stuff that shouldnt be reinitialized from them
  • use init_gpu_resource

Testing

  • examples run
  • in combination with the rest of the fixes and a couple other local changes i havent PRd yet, render_recovery example works.

…fers and batched instance buffers reinitalize on recovery
@atlv24 atlv24 added A-Rendering Drawing game state to the screen S-Needs-Review Needs reviewer attention (from anyone!) to move forward labels Mar 22, 2026
@github-project-automation github-project-automation bot moved this to Needs SME Triage in Rendering Mar 22, 2026
@alice-i-cecile alice-i-cecile added D-Straightforward Simple bug fixes and API improvements, docs, test and examples X-Uncontroversial This work is generally agreed upon labels Mar 22, 2026
@alice-i-cecile alice-i-cecile added S-Ready-For-Final-Review This PR has been approved by the community. It's ready for a maintainer to consider merging it and removed S-Needs-Review Needs reviewer attention (from anyone!) to move forward labels Mar 22, 2026
@alice-i-cecile alice-i-cecile added this pull request to the merge queue Mar 22, 2026
Merged via the queue into bevyengine:main with commit cc172df Mar 22, 2026
44 checks passed
@github-project-automation github-project-automation bot moved this from Needs SME Triage to Done in Rendering Mar 22, 2026
github-merge-queue bot pushed a commit that referenced this pull request Mar 22, 2026
# Objective

- Continue Render Recovery efforts #23350 #22761 #23433 #23458 #23459
- Part of goal #23029
- Make shaders work after reload

## Solution

- This is a kinda ugly hack. I explored like 5 different ways of doing
this, none of them are satisfying and they are all much larger diffs
than this. The crux of the problem is that the composer's capabilities
may differ on the new device, due to switching from dedicated to
integrated GPU. This means that we cannot even retain the composed
modules. The ShaderCache and PipelineCache are quite annoyingly tangled,
and I have some glimpses of how to fix it in the future but I dont want
to block render recovery on it.
- For now, we just do the kinda brute force thing and reinsert all the
shaders, recompose etc

## Testing

- examples run
- in combination with the rest of the fixes and a couple other local
changes i havent PRd yet, render_recovery example works.
github-merge-queue bot pushed a commit that referenced this pull request Mar 22, 2026
# Objective

- Continue Render Recovery efforts #23350 #22761 #23433 #23458 #23459
#23461
- Part of goal #23029
- Make render assets exist again after reload

## Solution

- We re-extract everything from the main world. This assumes things
*exist* on the main world, which is not actually always true. This is
enough for most examples and simple usage to be recoverable, but it's
really butting up against bevy_asset deficiencies. The next step to
making this truly production grade is asset streaming, which will
probably be my next goal.

## Testing

- examples run
- in combination with the rest of the fixes, render_recovery example
works.
github-merge-queue bot pushed a commit that referenced this pull request Mar 23, 2026
# Objective

- Completes goal and closes #23029
- Culmination of #22761, #23350, #23349, #23433, #23458, #23444, #23459,
#23461, #23463, #22714, #22759, #16481

## Solution

- Add a release note.
- Re-export a wgpu type that you need to match on to handle errors.

## Testing

- cargo run --example render_recovery with all the other PRs merged in.
Press 5 and then V, the app will not crash. Note that D for "destroy
device" will still crash: this is a WGPU problem resolved by
gfx-rs/wgpu#9281.

# Note

I opted not to change the default recovery behavior yet. I believe we
need testing in user projects and just general trodding of this code
path before committing to a new default. It works in a simple example,
it might not work in a complex project. We need to field test this and
likely iterate to really call this ready IMO.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-Rendering Drawing game state to the screen D-Straightforward Simple bug fixes and API improvements, docs, test and examples S-Ready-For-Final-Review This PR has been approved by the community. It's ready for a maintainer to consider merging it X-Uncontroversial This work is generally agreed upon

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants