use wgpu;
pub fn storage_buffer_init(
device: &wgpu::Device,
label: &str,
data: &[u8],
read_only: bool,
) -> wgpu::Buffer {
let usage = if read_only {
wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_DST
} else {
wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::COPY_SRC
};
device.create_buffer(&wgpu::BufferDescriptor {
label: Some(label),
size: data.len() as u64,
usage,
mapped_at_creation: false,
})
}
pub fn storage_buffer(
device: &wgpu::Device,
label: &str,
size: u64,
read_only: bool,
) -> wgpu::Buffer {
let usage = if read_only {
wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_DST
} else {
wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::COPY_SRC
};
device.create_buffer(&wgpu::BufferDescriptor {
label: Some(label),
size,
usage,
mapped_at_creation: false,
})
}
pub fn uniform_buffer(device: &wgpu::Device, label: &str, size: u64) -> wgpu::Buffer {
device.create_buffer(&wgpu::BufferDescriptor {
label: Some(label),
size,
usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST,
mapped_at_creation: false,
})
}
pub fn staging_buffer(device: &wgpu::Device, label: &str, size: u64) -> wgpu::Buffer {
device.create_buffer(&wgpu::BufferDescriptor {
label: Some(label),
size,
usage: wgpu::BufferUsages::MAP_READ | wgpu::BufferUsages::COPY_DST,
mapped_at_creation: false,
})
}