summaryrefslogtreecommitdiff
path: root/extensions/webgpu/render_pass.rs
diff options
context:
space:
mode:
authorLuca Casonato <hello@lcas.dev>2021-07-08 11:07:49 +0200
committerGitHub <noreply@github.com>2021-07-08 11:07:49 +0200
commit215f6f2c9e0522c7c8d794f35713225884540cd7 (patch)
treebc520f0abb813bb22c32dc9fa13e87cb0544bf7b /extensions/webgpu/render_pass.rs
parentce587a15daa7238db3cf8d3dee9d41a71bc2fc6a (diff)
chore: update wgpu to 0.9.0 (#11315)
Diffstat (limited to 'extensions/webgpu/render_pass.rs')
-rw-r--r--extensions/webgpu/render_pass.rs27
1 files changed, 23 insertions, 4 deletions
diff --git a/extensions/webgpu/render_pass.rs b/extensions/webgpu/render_pass.rs
index 09849cbd9..81f2e6640 100644
--- a/extensions/webgpu/render_pass.rs
+++ b/extensions/webgpu/render_pass.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::ResourceId;
use deno_core::ZeroCopyBuf;
@@ -480,7 +481,7 @@ pub struct RenderPassSetIndexBufferArgs {
buffer: u32,
index_format: String,
offset: u64,
- size: u64,
+ size: Option<u64>,
}
pub fn op_webgpu_render_pass_set_index_buffer(
@@ -497,11 +498,20 @@ pub fn op_webgpu_render_pass_set_index_buffer(
.get::<WebGpuRenderPass>(args.render_pass_rid)
.ok_or_else(bad_resource_id)?;
+ let size = if let Some(size) = args.size {
+ Some(
+ std::num::NonZeroU64::new(size)
+ .ok_or_else(|| type_error("size must be larger than 0"))?,
+ )
+ } else {
+ None
+ };
+
render_pass_resource.0.borrow_mut().set_index_buffer(
buffer_resource.0,
super::pipeline::serialize_index_format(args.index_format),
args.offset,
- std::num::NonZeroU64::new(args.size),
+ size,
);
Ok(WebGpuResult::empty())
@@ -514,7 +524,7 @@ pub struct RenderPassSetVertexBufferArgs {
slot: u32,
buffer: u32,
offset: u64,
- size: u64,
+ size: Option<u64>,
}
pub fn op_webgpu_render_pass_set_vertex_buffer(
@@ -531,12 +541,21 @@ pub fn op_webgpu_render_pass_set_vertex_buffer(
.get::<WebGpuRenderPass>(args.render_pass_rid)
.ok_or_else(bad_resource_id)?;
+ let size = if let Some(size) = args.size {
+ Some(
+ std::num::NonZeroU64::new(size)
+ .ok_or_else(|| type_error("size must be larger than 0"))?,
+ )
+ } else {
+ None
+ };
+
wgpu_core::command::render_ffi::wgpu_render_pass_set_vertex_buffer(
&mut render_pass_resource.0.borrow_mut(),
args.slot,
buffer_resource.0,
args.offset,
- std::num::NonZeroU64::new(args.size),
+ size,
);
Ok(WebGpuResult::empty())