pub struct GpuComputeAsync { /* private fields */ }Expand description
This is the main struct of the library. It is used to create pipelines and run them. It requires an async runtime to work. If you want a blocking version, you can use the GpuCompute struct. If you don’t use the blocking version disable default features.
Implementations§
Source§impl GpuComputeAsync
impl GpuComputeAsync
Sourcepub async fn new() -> Self
pub async fn new() -> Self
This method is used to create a new instance of the GpuComputeAsync struct.
Sourcepub async fn gen_pipeline<Input: Pod, Uniform: Pod, Output: Pod, const N: usize>(
&self,
scratchpad_size: Option<NonZeroUsize>,
stages: [StageDesc; N],
) -> PipelineAsync<'_, Input, Uniform, Output, N>
pub async fn gen_pipeline<Input: Pod, Uniform: Pod, Output: Pod, const N: usize>( &self, scratchpad_size: Option<NonZeroUsize>, stages: [StageDesc; N], ) -> PipelineAsync<'_, Input, Uniform, Output, N>
The input, the uniform and the output must be bytemuck::Pod like shown in this small example. The N const parameter is the number of stages in the pipeline.
use sgpu_compute::prelude::*;
#[derive(Debug, Copy, Clone, bytemuck::Zeroable, bytemuck::Pod)]
#[repr(C)]
struct Uniform {
width: u32,
height: u32,
}
#[pollster::main]
async fn main() {
let gpu = GpuComputeAsync::new().await;
let pipeline = gpu.gen_pipeline::<[f32; 100], Uniform, [f32; 100], 1>( // This is the manual way to specify generics, but it can be inferred most of the times
None, // No scratchpad
[StageDesc {
name: Some("norm"),
shader: "@compute @workgroup_size(1) fn main() {}", // See other examples for shader content
entrypoint: "main",
}]
).await;
}Auto Trait Implementations§
impl Freeze for GpuComputeAsync
impl !RefUnwindSafe for GpuComputeAsync
impl Send for GpuComputeAsync
impl Sync for GpuComputeAsync
impl Unpin for GpuComputeAsync
impl !UnwindSafe for GpuComputeAsync
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more