mirror of
https://github.com/denoland/deno.git
synced 2025-09-27 12:49:10 +00:00
fix(webgpu): align error scopes to spec (#9797)
This commit is contained in:
parent
7fc0e8ec8c
commit
b091b8fefb
2 changed files with 112 additions and 54 deletions
|
@ -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));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue