diff options
author | Luca Casonato <hello@lcas.dev> | 2021-07-07 14:38:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-07 14:38:24 +0200 |
commit | b091b8fefb5946c9ddaae026cbc6ad5159409c51 (patch) | |
tree | 3559ca8c41164d1b4af54f970840f578b1655790 /extensions/webgpu/buffer.rs | |
parent | 7fc0e8ec8cd4b18ba10a04cf0ac2bee48826de3d (diff) |
fix(webgpu): align error scopes to spec (#9797)
Diffstat (limited to 'extensions/webgpu/buffer.rs')
-rw-r--r-- | extensions/webgpu/buffer.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/extensions/webgpu/buffer.rs b/extensions/webgpu/buffer.rs index 8e5075d8a..c9c93eeb6 100644 --- a/extensions/webgpu/buffer.rs +++ b/extensions/webgpu/buffer.rs @@ -2,6 +2,7 @@ use deno_core::error::bad_resource_id; use deno_core::error::null_opbuf; +use deno_core::error::type_error; use deno_core::error::AnyError; use deno_core::futures::channel::oneshot; use deno_core::OpState; @@ -56,7 +57,8 @@ pub fn op_webgpu_create_buffer( let descriptor = wgpu_core::resource::BufferDescriptor { label: args.label.map(Cow::from), size: args.size, - usage: wgpu_types::BufferUsage::from_bits(args.usage).unwrap(), + usage: wgpu_types::BufferUsage::from_bits(args.usage) + .ok_or_else(|| type_error("usage is not valid"))?, mapped_at_creation: args.mapped_at_creation.unwrap_or(false), }; @@ -117,7 +119,7 @@ pub async fn op_webgpu_buffer_get_map_async( } // TODO(lucacasonato): error handling - gfx_select!(buffer => instance.buffer_map_async( + let maybe_err = gfx_select!(buffer => instance.buffer_map_async( buffer, args.offset..(args.offset + args.size), wgpu_core::resource::BufferMapOperation { @@ -129,7 +131,12 @@ pub async fn op_webgpu_buffer_get_map_async( callback: buffer_map_future_wrapper, user_data: sender_ptr, } - ))?; + )) + .err(); + + if maybe_err.is_some() { + return Ok(WebGpuResult::maybe_err(maybe_err)); + } } let done = Rc::new(RefCell::new(false)); |