From 9667c34e7e2a4f79bfca8ec360a1bd51ccbfd244 Mon Sep 17 00:00:00 2001 From: Alexey Zatelepin Date: Thu, 2 Jul 2020 21:17:27 +0300 Subject: [PATCH] Fix read mapping size (size is number of bytes, not number of items) --- piet-gpu-hal/src/vulkan.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/piet-gpu-hal/src/vulkan.rs b/piet-gpu-hal/src/vulkan.rs index 2fac015..909823c 100644 --- a/piet-gpu-hal/src/vulkan.rs +++ b/piet-gpu-hal/src/vulkan.rs @@ -744,18 +744,18 @@ impl crate::Device for VkDevice { result: &mut Vec, ) -> Result<(), Error> { let device = &self.device.device; - let size = buffer.size as usize / std::mem::size_of::(); let buf = device.map_memory( buffer.buffer_memory, 0, - size as u64, + buffer.size, vk::MemoryMapFlags::empty(), )?; - if size > result.len() { - result.reserve(size - result.len()); + let len = buffer.size as usize / std::mem::size_of::(); + if len > result.len() { + result.reserve(len - result.len()); } - std::ptr::copy_nonoverlapping(buf as *const T, result.as_mut_ptr(), size); - result.set_len(size); + std::ptr::copy_nonoverlapping(buf as *const T, result.as_mut_ptr(), len); + result.set_len(len); device.unmap_memory(buffer.buffer_memory); Ok(()) }