tessera_ui_basic_components/pipelines/mean/
command.rs1use tessera_ui::{
2 BarrierRequirement,
3 compute::{ComputeResourceRef, resource::ComputeResourceManager},
4 renderer::compute::command::ComputeCommand,
5 wgpu,
6};
7
8#[derive(Debug, Clone, Copy, PartialEq)]
16pub struct MeanCommand {
17 result_buffer_ref: ComputeResourceRef,
18}
19
20impl MeanCommand {
21 pub fn new(gpu: &wgpu::Device, compute_resource_manager: &mut ComputeResourceManager) -> Self {
27 let result_buffer = gpu.create_buffer(&wgpu::BufferDescriptor {
28 label: Some("Mean Result Buffer"),
29 size: 8,
30 usage: wgpu::BufferUsages::STORAGE
31 | wgpu::BufferUsages::COPY_SRC
32 | wgpu::BufferUsages::COPY_DST,
33 mapped_at_creation: false,
34 });
35
36 let result_buffer_ref = compute_resource_manager.push(result_buffer);
37 Self { result_buffer_ref }
38 }
39
40 pub fn result_buffer_ref(&self) -> ComputeResourceRef {
42 self.result_buffer_ref
43 }
44}
45
46impl ComputeCommand for MeanCommand {
47 fn barrier(&self) -> BarrierRequirement {
48 BarrierRequirement::ZERO_PADDING_LOCAL
49 }
50}