From b7695ceac350d33d38dadb855d94770740b3e8d2 Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Mon, 13 Jul 2020 00:54:18 -0400 Subject: [PATCH] Panic on using a pending buffer --- wgpu-core/src/device/queue.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/wgpu-core/src/device/queue.rs b/wgpu-core/src/device/queue.rs index 6f998db859..39f7b94b08 100644 --- a/wgpu-core/src/device/queue.rs +++ b/wgpu-core/src/device/queue.rs @@ -441,15 +441,18 @@ impl Global { // update submission IDs for id in comb.trackers.buffers.used() { - if let BufferMapState::Waiting(_) = buffer_guard[id].map_state { - panic!("Buffer has a pending mapping."); - } - if !buffer_guard[id].life_guard.use_at(submit_index) { - if let BufferMapState::Active { .. } = buffer_guard[id].map_state { + let buffer = &mut buffer_guard[id]; + if !buffer.life_guard.use_at(submit_index) { + if let BufferMapState::Active { .. } = buffer.map_state { log::warn!("Dropped buffer has a pending mapping."); - super::unmap_buffer(&device.raw, &mut buffer_guard[id]); + super::unmap_buffer(&device.raw, buffer); } device.temp_suspected.buffers.push(id); + } else { + match buffer.map_state { + BufferMapState::Idle => (), + _ => panic!("Buffer {:?} is still mapped", id), + } } } for id in comb.trackers.textures.used() {