diff --git a/wgpu-hal/src/vulkan/adapter.rs b/wgpu-hal/src/vulkan/adapter.rs index c2b05f91c..19c1ffe4c 100644 --- a/wgpu-hal/src/vulkan/adapter.rs +++ b/wgpu-hal/src/vulkan/adapter.rs @@ -1175,13 +1175,14 @@ impl PhysicalDeviceProperties { None => (0, 0, 0, 0), }; - // Prevent very large buffers on mesa and most android devices. + // Prevent very large buffers on mesa and most android devices, and in all cases + // don't risk confusing JS by exceeding the range of a double. let is_nvidia = self.properties.vendor_id == crate::auxil::db::nvidia::VENDOR; let max_buffer_size = if (cfg!(target_os = "linux") || cfg!(target_os = "android")) && !is_nvidia { i32::MAX as u64 } else { - u64::MAX + 1u64 << 52 }; let mut max_binding_array_elements = 0; diff --git a/wgpu-hal/src/vulkan/device.rs b/wgpu-hal/src/vulkan/device.rs index ecaf1f406..870544169 100644 --- a/wgpu-hal/src/vulkan/device.rs +++ b/wgpu-hal/src/vulkan/device.rs @@ -236,7 +236,7 @@ impl super::DeviceShared { &self, buffer: &'a super::Buffer, ranges: I, - ) -> Option> { + ) -> Option>> { let block = buffer.block.as_ref()?.lock(); let mask = self.private_caps.non_coherent_map_mask; Some(ranges.map(move |range| {