diff --git a/examples/capture/main.rs b/examples/capture/main.rs index 96bd1d7ff8..d0757c0c64 100644 --- a/examples/capture/main.rs +++ b/examples/capture/main.rs @@ -87,7 +87,7 @@ fn main() { // Write the buffer as a PNG output_buffer.map_read_async( 0, - (size * size) as u64 * size_of::() as u64, + (size * size) as usize * size_of::(), move |result: wgpu::BufferMapAsyncResult<&[u8]>| { let mut png_encoder = png::Encoder::new(File::create("red.png").unwrap(), size, size); png_encoder.set_depth(png::BitDepth::Eight); diff --git a/examples/hello-compute/main.rs b/examples/hello-compute/main.rs index 7657a910a5..d3bdf388a1 100644 --- a/examples/hello-compute/main.rs +++ b/examples/hello-compute/main.rs @@ -92,7 +92,7 @@ fn main() { queue.submit(&[encoder.finish()]); - staging_buffer.map_read_async(0, size, |result: wgpu::BufferMapAsyncResult<&[u32]>| { + staging_buffer.map_read_async(0, numbers.len(), |result: wgpu::BufferMapAsyncResult<&[u32]>| { if let Ok(mapping) = result { println!("Times: {:?}", mapping.data); } diff --git a/src/lib.rs b/src/lib.rs index be4e10eea0..70526d034f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -906,7 +906,7 @@ where } impl Buffer { - pub fn map_read_async(&self, start: BufferAddress, size: BufferAddress, callback: F) + pub fn map_read_async(&self, start: BufferAddress, count: usize, callback: F) where T: 'static + FromBytes, F: FnOnce(BufferMapAsyncResult<&[T]>) + 'static, @@ -936,6 +936,8 @@ impl Buffer { } } + let size = (count * std::mem::size_of::()) as BufferAddress; + let user_data = Box::new(BufferMapReadAsyncUserData { size, callback, @@ -951,7 +953,7 @@ impl Buffer { ); } - pub fn map_write_async(&self, start: BufferAddress, size: BufferAddress, callback: F) + pub fn map_write_async(&self, start: BufferAddress, count: usize, callback: F) where T: 'static + AsBytes + FromBytes, F: FnOnce(BufferMapAsyncResult<&mut [T]>) + 'static, @@ -981,6 +983,8 @@ impl Buffer { } } + let size = (count * std::mem::size_of::()) as BufferAddress; + let user_data = Box::new(BufferMapWriteAsyncUserData { size, callback,