Skip to content

Commit 9b36a3e

Browse files
authored
Make bind group an Option for set_bind_group calls. (#6216)
This is just an API change for all the "set_bind_group" calls. Calls that pass a Some() argument should have unchanged behavior. The None cases are left as TODOs.
1 parent c87717b commit 9b36a3e

File tree

59 files changed

+283
-169
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+283
-169
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ traits that have now been implemented for `wgpu` resources.
6565

6666
By @teoxoy [#6134](https://github.com/gfx-rs/wgpu/pull/6134).
6767

68+
#### `set_bind_group` now takes an `Option` for the bind group argument.
69+
70+
https://gpuweb.github.io/gpuweb/#programmable-passes-bind-groups specifies that bindGroup
71+
is nullable. This change is the start of implementing this part of the spec. Callers that
72+
specify a `Some()` value should have unchanged behavior. Handling of `None` values still
73+
needs to be implemented by backends.
74+
75+
By @bradwerth [#6216](https://github.com/gfx-rs/wgpu/pull/6216).
76+
6877
### New Features
6978

7079
#### Naga

benches/benches/computepass.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ impl ComputepassState {
389389
let end_idx = start_idx + dispatch_per_pass;
390390
for dispatch_idx in start_idx..end_idx {
391391
compute_pass.set_pipeline(&self.pipeline);
392-
compute_pass.set_bind_group(0, &self.bind_groups[dispatch_idx], &[]);
392+
compute_pass.set_bind_group(0, Some(&self.bind_groups[dispatch_idx]), &[]);
393393
compute_pass.dispatch_workgroups(1, 1, 1);
394394
}
395395

@@ -412,7 +412,7 @@ impl ComputepassState {
412412
});
413413

414414
compute_pass.set_pipeline(self.bindless_pipeline.as_ref().unwrap());
415-
compute_pass.set_bind_group(0, self.bindless_bind_group.as_ref().unwrap(), &[]);
415+
compute_pass.set_bind_group(0, Some(self.bindless_bind_group.as_ref().unwrap()), &[]);
416416
for _ in 0..dispatch_count_bindless {
417417
compute_pass.dispatch_workgroups(1, 1, 1);
418418
}

benches/benches/renderpass.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ impl RenderpassState {
367367
let end_idx = start_idx + draws_per_pass;
368368
for draw_idx in start_idx..end_idx {
369369
render_pass.set_pipeline(&self.pipeline);
370-
render_pass.set_bind_group(0, &self.bind_groups[draw_idx], &[]);
370+
render_pass.set_bind_group(0, Some(&self.bind_groups[draw_idx]), &[]);
371371
for i in 0..VERTEX_BUFFERS_PER_DRAW {
372372
render_pass.set_vertex_buffer(
373373
i as u32,
@@ -410,7 +410,7 @@ impl RenderpassState {
410410
});
411411

412412
render_pass.set_pipeline(self.bindless_pipeline.as_ref().unwrap());
413-
render_pass.set_bind_group(0, self.bindless_bind_group.as_ref().unwrap(), &[]);
413+
render_pass.set_bind_group(0, Some(self.bindless_bind_group.as_ref().unwrap()), &[]);
414414
for i in 0..VERTEX_BUFFERS_PER_DRAW {
415415
render_pass.set_vertex_buffer(i as u32, self.vertex_buffers[0].slice(..));
416416
}

deno_webgpu/bundle.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ pub fn op_webgpu_render_bundle_encoder_set_bind_group(
150150
wgpu_core::command::bundle_ffi::wgpu_render_bundle_set_bind_group(
151151
&mut render_bundle_encoder_resource.0.borrow_mut(),
152152
index,
153-
bind_group_resource.1,
153+
Some(bind_group_resource.1),
154154
dynamic_offsets_data.as_ptr(),
155155
dynamic_offsets_data.len(),
156156
);

deno_webgpu/compute_pass.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ pub fn op_webgpu_compute_pass_set_bind_group(
136136
.compute_pass_set_bind_group(
137137
&mut compute_pass_resource.0.borrow_mut(),
138138
index,
139-
bind_group_resource.1,
139+
Some(bind_group_resource.1),
140140
dynamic_offsets_data,
141141
)?;
142142

deno_webgpu/render_pass.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ pub fn op_webgpu_render_pass_set_bind_group(
231231
.render_pass_set_bind_group(
232232
&mut render_pass_resource.0.borrow_mut(),
233233
index,
234-
bind_group_resource.1,
234+
Some(bind_group_resource.1),
235235
dynamic_offsets_data,
236236
)?;
237237

examples/src/boids/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ impl crate::framework::Example for Example {
298298
timestamp_writes: None,
299299
});
300300
cpass.set_pipeline(&self.compute_pipeline);
301-
cpass.set_bind_group(0, &self.particle_bind_groups[self.frame_num % 2], &[]);
301+
cpass.set_bind_group(0, Some(&self.particle_bind_groups[self.frame_num % 2]), &[]);
302302
cpass.dispatch_workgroups(self.work_group_count, 1, 1);
303303
}
304304
command_encoder.pop_debug_group();

examples/src/bunnymark/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,11 @@ impl Example {
128128
occlusion_query_set: None,
129129
});
130130
rpass.set_pipeline(&self.pipeline);
131-
rpass.set_bind_group(0, &self.global_group, &[]);
131+
rpass.set_bind_group(0, Some(&self.global_group), &[]);
132132
for i in 0..self.bunnies.len() {
133133
let offset =
134134
(i as wgpu::DynamicOffset) * (uniform_alignment as wgpu::DynamicOffset);
135-
rpass.set_bind_group(1, &self.local_group, &[offset]);
135+
rpass.set_bind_group(1, Some(&self.local_group), &[offset]);
136136
rpass.draw(0..4, 0..1);
137137
}
138138
}

examples/src/conservative_raster/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ impl crate::framework::Example for Example {
305305
});
306306

307307
rpass.set_pipeline(&self.pipeline_upscale);
308-
rpass.set_bind_group(0, &self.bind_group_upscale, &[]);
308+
rpass.set_bind_group(0, Some(&self.bind_group_upscale), &[]);
309309
rpass.draw(0..3, 0..1);
310310

311311
if let Some(pipeline_lines) = &self.pipeline_lines {

examples/src/cube/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ impl crate::framework::Example for Example {
361361
});
362362
rpass.push_debug_group("Prepare data for draw.");
363363
rpass.set_pipeline(&self.pipeline);
364-
rpass.set_bind_group(0, &self.bind_group, &[]);
364+
rpass.set_bind_group(0, Some(&self.bind_group), &[]);
365365
rpass.set_index_buffer(self.index_buf.slice(..), wgpu::IndexFormat::Uint16);
366366
rpass.set_vertex_buffer(0, self.vertex_buf.slice(..));
367367
rpass.pop_debug_group();

0 commit comments

Comments
 (0)