mirror of
https://github.com/gfx-rs/wgpu.git
synced 2024-11-22 06:44:14 +00:00
Clean up weak references to texture views and bind groups (#5595)
* Clean up weak references to texture views * add change to CHANGELOG.md * drop texture view before clean up * cleanup weak ref to bind groups * update changelog * Trim weak backlinks in their holders' triage functions. --------- Co-authored-by: Jim Blandy <jimb@red-bean.com>
This commit is contained in:
parent
8084eb6c8f
commit
d5d683d3c4
@ -227,6 +227,7 @@ By @atlv24 and @cwfitzgerald in [#5154](https://github.com/gfx-rs/wgpu/pull/5154
|
||||
- Fix deadlocks caused by recursive read-write lock acquisitions [#5426](https://github.com/gfx-rs/wgpu/pull/5426).
|
||||
- Remove exposed C symbols (`extern "C"` + [no_mangle]) from RenderPass & ComputePass recording. By @wumpf in [#5409](https://github.com/gfx-rs/wgpu/pull/5409).
|
||||
- Fix surfaces being only compatible with first backend enabled on an instance, causing failures when manually specifying an adapter. By @Wumpf in [#5535](https://github.com/gfx-rs/wgpu/pull/5535).
|
||||
- Clean up weak references to texture views and bind groups. By @xiaopengli89 [#5595](https://github.com/gfx-rs/wgpu/pull/5595).
|
||||
|
||||
#### Naga
|
||||
|
||||
|
@ -596,6 +596,18 @@ impl<A: HalApi> LifetimeTracker<A> {
|
||||
&mut trackers.textures,
|
||||
|maps| &mut maps.textures,
|
||||
);
|
||||
|
||||
// We may have been suspected because a texture view or bind group
|
||||
// referring to us was dropped. Remove stale weak references, so that
|
||||
// the backlink table doesn't grow without bound.
|
||||
for texture in self.suspected_resources.textures.values() {
|
||||
texture.views.lock().retain(|view| view.strong_count() > 0);
|
||||
texture
|
||||
.bind_groups
|
||||
.lock()
|
||||
.retain(|bg| bg.strong_count() > 0);
|
||||
}
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
@ -621,6 +633,13 @@ impl<A: HalApi> LifetimeTracker<A> {
|
||||
|maps| &mut maps.buffers,
|
||||
);
|
||||
|
||||
// We may have been suspected because a bind group referring to us was
|
||||
// dropped. Remove stale weak references, so that the backlink table
|
||||
// doesn't grow without bound.
|
||||
for buffer in self.suspected_resources.buffers.values() {
|
||||
buffer.bind_groups.lock().retain(|bg| bg.strong_count() > 0);
|
||||
}
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user