use tessera_ui::{
SampleRegion,
compute::{ComputeResourceRef, resource::ComputeResourceManager},
renderer::compute::command::ComputeCommand,
wgpu,
};
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct MeanCommand {
result_buffer_ref: ComputeResourceRef,
}
impl MeanCommand {
pub fn new(gpu: &wgpu::Device, compute_resource_manager: &mut ComputeResourceManager) -> Self {
let result_buffer = gpu.create_buffer(&wgpu::BufferDescriptor {
label: Some("Mean Result Buffer"),
size: 8,
usage: wgpu::BufferUsages::STORAGE
| wgpu::BufferUsages::COPY_SRC
| wgpu::BufferUsages::COPY_DST,
mapped_at_creation: false,
});
let result_buffer_ref = compute_resource_manager.push(result_buffer);
Self { result_buffer_ref }
}
pub fn result_buffer_ref(&self) -> ComputeResourceRef {
self.result_buffer_ref
}
}
impl ComputeCommand for MeanCommand {
fn barrier(&self) -> SampleRegion {
SampleRegion::ZERO_PADDING_LOCAL
}
}