diff --git a/deno_webgpu/src/01_webgpu.js b/deno_webgpu/src/01_webgpu.js index 8bcd770f90..d3746da142 100644 --- a/deno_webgpu/src/01_webgpu.js +++ b/deno_webgpu/src/01_webgpu.js @@ -614,11 +614,12 @@ /** @type {GPUSupportedFeatures} */ const supportedFeatures = webidl.createBranded(GPUSupportedFeatures); supportedFeatures[webidl.setlikeInner] = new Set(features); - return webidl.setlike( + webidl.setlike( supportedFeatures, GPUSupportedFeaturesPrototype, true, ); + return supportedFeatures; } class GPUSupportedFeatures { @@ -4916,14 +4917,14 @@ * @param {number} offset * @param {number} size */ - setVertexBuffer(slot, buffer, offset = 0, size = 0) { + setVertexBuffer(slot, buffer, offset = 0, size) { webidl.assertBranded(this, GPURenderBundleEncoderPrototype); const prefix = "Failed to execute 'setVertexBuffer' on 'GPURenderBundleEncoder'"; webidl.requiredArguments(arguments.length, 2, { prefix }); slot = webidl.converters.GPUSize32(slot, { prefix, - context: "Argument 2", + context: "Argument 1", }); buffer = webidl.converters.GPUBuffer(buffer, { prefix, @@ -4933,10 +4934,12 @@ prefix, context: "Argument 3", }); - size = webidl.converters.GPUSize64(size, { - prefix, - context: "Argument 4", - }); + if (size !== undefined) { + size = webidl.converters.GPUSize64(size, { + prefix, + context: "Argument 4", + }); + } const device = assertDevice(this, { prefix, context: "this" }); const renderBundleEncoderRid = assertResource(this, { prefix, diff --git a/deno_webgpu/src/bundle.rs b/deno_webgpu/src/bundle.rs index b63b076686..33434b1f42 100644 --- a/deno_webgpu/src/bundle.rs +++ b/deno_webgpu/src/bundle.rs @@ -274,7 +274,7 @@ pub fn op_webgpu_render_bundle_encoder_set_vertex_buffer( slot: u32, buffer: ResourceId, offset: u64, - size: u64, + size: Option, ) -> Result { let buffer_resource = state .resource_table @@ -282,9 +282,14 @@ pub fn op_webgpu_render_bundle_encoder_set_vertex_buffer( let render_bundle_encoder_resource = state .resource_table .get::(render_bundle_encoder_rid)?; - let size = Some( - std::num::NonZeroU64::new(size).ok_or_else(|| type_error("size must be larger than 0"))?, - ); + let size = if let Some(size) = size { + Some( + std::num::NonZeroU64::new(size) + .ok_or_else(|| type_error("size must be larger than 0"))?, + ) + } else { + None + }; wgpu_core::command::bundle_ffi::wgpu_render_bundle_set_vertex_buffer( &mut render_bundle_encoder_resource.0.borrow_mut(),