Skip to main content

pebble/graphics/render/
compute_pass.rs

1use crate::graphics::pipeline::{buffers::{BindGroup, Buffer}, compute::ComputePipeline};
2
3/// An in-progress compute pass, from [`Backend::dispatch_compute`](crate::graphics::render::Backend::dispatch_compute).
4pub struct ComputePass<'a> {
5    raw: wgpu::ComputePass<'a>,
6}
7
8impl<'a> ComputePass<'a> {
9    pub(crate) fn new(raw: wgpu::ComputePass<'a>) -> Self {
10        Self { raw }
11    }
12
13    pub fn set_pipeline(&mut self, pipeline: &ComputePipeline) {
14        self.raw.set_pipeline(pipeline.raw());
15    }
16
17    pub fn set_bind_group(&mut self, index: u32, bind_group: &BindGroup, offsets: &[u32]) {
18        self.raw.set_bind_group(index, Some(bind_group.raw()), offsets);
19    }
20
21    pub fn dispatch_workgroups(&mut self, x: u32, y: u32, z: u32) {
22        self.raw.dispatch_workgroups(x, y, z);
23    }
24
25    pub fn dispatch_workgroups_indirect(&mut self, indirect_buffer: &Buffer, indirect_offset: u64) {
26        self.raw.dispatch_workgroups_indirect(indirect_buffer.raw(), indirect_offset);
27    }
28}