diff options
Diffstat (limited to 'extensions/webgpu/buffer.rs')
-rw-r--r-- | extensions/webgpu/buffer.rs | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/extensions/webgpu/buffer.rs b/extensions/webgpu/buffer.rs index 9fccd1142..a97e67df3 100644 --- a/extensions/webgpu/buffer.rs +++ b/extensions/webgpu/buffer.rs @@ -163,7 +163,7 @@ pub async fn op_webgpu_buffer_get_map_async( pub struct BufferGetMappedRangeArgs { buffer_rid: ResourceId, offset: u64, - size: u64, + size: Option<u64>, } pub fn op_webgpu_buffer_get_mapped_range( @@ -179,21 +179,22 @@ pub fn op_webgpu_buffer_get_mapped_range( .ok_or_else(bad_resource_id)?; let buffer = buffer_resource.0; - let slice_pointer = gfx_select!(buffer => instance.buffer_get_mapped_range( - buffer, - args.offset, - std::num::NonZeroU64::new(args.size) - )) - .map_err(|e| DomExceptionOperationError::new(&e.to_string()))?; + let (slice_pointer, range_size) = + gfx_select!(buffer => instance.buffer_get_mapped_range( + buffer, + args.offset, + std::num::NonZeroU64::new(args.size.unwrap_or(0)) + )) + .map_err(|e| DomExceptionOperationError::new(&e.to_string()))?; let slice = unsafe { - std::slice::from_raw_parts_mut(slice_pointer, args.size as usize) + std::slice::from_raw_parts_mut(slice_pointer, range_size as usize) }; zero_copy.copy_from_slice(slice); let rid = state .resource_table - .add(WebGpuBufferMapped(slice_pointer, args.size as usize)); + .add(WebGpuBufferMapped(slice_pointer, range_size as usize)); Ok(WebGpuResult::rid(rid)) } |