Skip to content

Commit 1323de7

Browse files
authored
stop retrying removed assets (#12505)
# Objective assets that don't load before they get removed are retried forever, causing buffer churn and slowdown. ## Solution stop trying to prepare dead assets.
1 parent 3a83f4e commit 1323de7

File tree

4 files changed

+16
-0
lines changed

4 files changed

+16
-0
lines changed

crates/bevy_pbr/src/material.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,10 @@ pub fn prepare_materials<M: Material>(
934934
) {
935935
let queued_assets = std::mem::take(&mut prepare_next_frame.assets);
936936
for (id, material) in queued_assets.into_iter() {
937+
if extracted_assets.removed.contains(&id) {
938+
continue;
939+
}
940+
937941
match prepare_material(
938942
&material,
939943
&render_device,

crates/bevy_render/src/render_asset.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,10 @@ pub fn prepare_assets<A: RenderAsset>(
402402
let mut param = param.into_inner();
403403
let queued_assets = std::mem::take(&mut prepare_next_frame.assets);
404404
for (id, extracted_asset) in queued_assets {
405+
if extracted_assets.removed.contains(&id) {
406+
continue;
407+
}
408+
405409
match extracted_asset.prepare_asset(&mut param) {
406410
Ok(prepared_asset) => {
407411
render_assets.insert(id, prepared_asset);

crates/bevy_sprite/src/mesh2d/material.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,10 @@ pub fn prepare_materials_2d<M: Material2d>(
572572
) {
573573
let queued_assets = std::mem::take(&mut prepare_next_frame.assets);
574574
for (id, material) in queued_assets {
575+
if extracted_assets.removed.contains(&id) {
576+
continue;
577+
}
578+
575579
match prepare_material2d(
576580
&material,
577581
&render_device,

crates/bevy_ui/src/render/ui_material_pipeline.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,10 @@ pub fn prepare_ui_materials<M: UiMaterial>(
691691
) {
692692
let queued_assets = std::mem::take(&mut prepare_next_frame.assets);
693693
for (id, material) in queued_assets {
694+
if extracted_assets.removed.contains(&id) {
695+
continue;
696+
}
697+
694698
match prepare_ui_material(
695699
&material,
696700
&render_device,

0 commit comments

Comments
 (0)