Skip to content

Commit 8d73e5a

Browse files
jimblandycwfitzgerald
authored andcommitted
[core] Refactor LifetimeTracker::triage_resources.
Check whether the resource is abandoned first, since none of the rest of the work is necessary otherwise. Rename `non_referenced_resources` to `last_resources`. This function copes with various senses in which the resource might be referenced or not. Instead, `last_resources` is the name of the `ActiveSubmission` member this may point to, which is more specific. Move the use of `last_resources` immediately after its production.
1 parent 64777d4 commit 8d73e5a

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

wgpu-core/src/device/life.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -493,20 +493,23 @@ impl<A: HalApi> LifetimeTracker<A> {
493493
{
494494
let mut removed_resources = Vec::new();
495495
resources_map.retain(|&index, resource| {
496+
if !trackers.remove_abandoned(index) {
497+
return true;
498+
}
499+
500+
// If this resource is used by commands in flight, save
501+
// it in that submission's `last_resources` list.
496502
let submit_index = resource.as_info().submission_index();
497-
let non_referenced_resources = active
503+
let last_resources = active
498504
.iter_mut()
499505
.find(|a| a.index == submit_index)
500506
.map(|a| &mut a.last_resources);
501-
502-
let is_removed = trackers.remove_abandoned(index);
503-
if is_removed {
504-
removed_resources.push(resource.clone());
505-
if let Some(resources) = non_referenced_resources {
506-
get_resource_map(resources).insert(index, resource.clone());
507-
}
507+
if let Some(last_resources) = last_resources {
508+
get_resource_map(last_resources).insert(index, resource.clone());
508509
}
509-
!is_removed
510+
511+
removed_resources.push(resource.clone());
512+
false
510513
});
511514
removed_resources
512515
}

0 commit comments

Comments
 (0)