simple_wgpu/
compute_pass.rs1use crate::{
2 command_encoder::{CommandEncoder, Pass},
3 dispatch::Dispatch,
4};
5
6pub struct ComputePass<'a> {
12 label: Option<String>,
13 dispatches: Vec<Dispatch>,
14 frame: &'a mut CommandEncoder,
15}
16
17impl<'a> ComputePass<'a> {
18 pub(crate) fn new(label: Option<&str>, frame: &'a mut CommandEncoder) -> Self {
19 Self {
20 label: label.map(|s| s.to_string()),
21 dispatches: vec![],
22 frame,
23 }
24 }
25
26 pub fn dispatch(&mut self, dispatch: Dispatch) {
28 self.dispatches.push(dispatch)
29 }
30}
31
32impl<'a> Drop for ComputePass<'a> {
33 fn drop(&mut self) {
34 self.frame.passes.push(Pass::Compute(
35 self.label.clone(),
36 self.dispatches.drain(..).collect(),
37 ));
38 }
39}