diff --git a/wgpu-core/src/device/mod.rs b/wgpu-core/src/device/mod.rs index a0a628f418..d457b0cbf4 100644 --- a/wgpu-core/src/device/mod.rs +++ b/wgpu-core/src/device/mod.rs @@ -142,14 +142,6 @@ fn map_buffer( } fn unmap_buffer(raw: &B::Device, buffer: &mut resource::Buffer) { - match buffer.map_state { - resource::BufferMapState::Idle => { - log::error!("Buffer already unmapped"); - return; - } - _ => buffer.map_state = resource::BufferMapState::Idle, - } - if !buffer.mapped_write_segments.is_empty() { unsafe { raw.flush_mapped_memory_ranges( @@ -2147,6 +2139,14 @@ impl Global { let buffer = &mut buffer_guard[buffer_id]; log::debug!("Buffer {:?} map state -> Idle", buffer_id); - unmap_buffer(&device_guard[buffer.device_id.value].raw, buffer); + match buffer.map_state { + resource::BufferMapState::Idle => { + log::error!("Buffer already unmapped"); + } + _ => { + buffer.map_state = resource::BufferMapState::Idle; + unmap_buffer(&device_guard[buffer.device_id.value].raw, buffer); + } + } } }