mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
Fix deadlock between snatchable_lock and trackers in Queue::write_texture (#7004)
* Fix deadlock between snatchable_lock and trackers in Queue::write_texture * Fix another deadlock in write_texture between pending_writes and snatchable_lock.
This commit is contained in:
@@ -75,6 +75,7 @@ By @brodycj in [#6924](https://github.com/gfx-rs/wgpu/pull/6924).
|
||||
- Fix `wgpu` not building with `--no-default-features` on when targeting `wasm32-unknown-unknown`. By @wumpf in [#6946](https://github.com/gfx-rs/wgpu/pull/6946).
|
||||
- Fix `CopyExternalImageDestInfo` not exported on `wgpu`. By @wumpf in [#6962](https://github.com/gfx-rs/wgpu/pull/6962).
|
||||
- Fix drop order in `Surface`. By @ed-2100 in [#6997](https://github.com/gfx-rs/wgpu/pull/6997)
|
||||
- Fix a possible deadlock within `Queue::write_texture`. By @metamuffin in [#7004](https://github.com/gfx-rs/wgpu/pull/7004)
|
||||
|
||||
#### Vulkan
|
||||
|
||||
|
||||
@@ -697,6 +697,8 @@ impl Queue {
|
||||
.map_err(TransferError::from)?;
|
||||
}
|
||||
|
||||
let snatch_guard = self.device.snatchable_lock.read();
|
||||
|
||||
let mut pending_writes = self.pending_writes.lock();
|
||||
let encoder = pending_writes.activate();
|
||||
|
||||
@@ -732,7 +734,7 @@ impl Queue {
|
||||
&mut trackers.textures,
|
||||
&self.device.alignments,
|
||||
self.device.zero_buffer.as_ref(),
|
||||
&self.device.snatchable_lock.read(),
|
||||
&snatch_guard,
|
||||
)
|
||||
.map_err(QueueWriteError::from)?;
|
||||
}
|
||||
@@ -742,8 +744,6 @@ impl Queue {
|
||||
}
|
||||
}
|
||||
|
||||
let snatch_guard = self.device.snatchable_lock.read();
|
||||
|
||||
let dst_raw = dst.try_raw(&snatch_guard)?;
|
||||
|
||||
let (block_width, block_height) = dst.desc.format.block_dimensions();
|
||||
|
||||
Reference in New Issue
Block a user