diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 624320caa4..395c6a5f06 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -37,6 +37,7 @@ pub use wgn::{ Limits, LoadOp, Origin3d, + Pod, PowerPreference, PrimitiveTopology, RasterizationStateDescriptor, @@ -809,6 +810,7 @@ impl Drop for BufferAsyncMapping { struct BufferMapReadAsyncUserData where + T: Pod, F: FnOnce(BufferMapAsyncResult<&[T]>), { size: BufferAddress, @@ -819,6 +821,7 @@ where struct BufferMapWriteAsyncUserData where + T: Pod, F: FnOnce(BufferMapAsyncResult<&mut [T]>), { size: BufferAddress, @@ -830,7 +833,7 @@ where impl Buffer { pub fn map_read_async(&self, start: BufferAddress, size: BufferAddress, callback: F) where - T: 'static + Copy, + T: 'static + Pod, F: FnOnce(BufferMapAsyncResult<&[T]>) + 'static, { let type_size = std::mem::size_of::() as BufferAddress; @@ -842,6 +845,7 @@ impl Buffer { data: *const u8, user_data: *mut u8, ) where + T: Pod, F: FnOnce(BufferMapAsyncResult<&[T]>), { let user_data = @@ -879,7 +883,7 @@ impl Buffer { pub fn map_write_async(&self, start: BufferAddress, size: BufferAddress, callback: F) where - T: 'static + Copy, + T: 'static + Pod, F: FnOnce(BufferMapAsyncResult<&mut [T]>) + 'static, { let type_size = std::mem::size_of::() as BufferAddress; @@ -891,6 +895,7 @@ impl Buffer { data: *mut u8, user_data: *mut u8, ) where + T: Pod, F: FnOnce(BufferMapAsyncResult<&mut [T]>), { let user_data =