Skip to main content

GpuDevice

Trait GpuDevice 

Source
pub trait GpuDevice: Send + Sync {
Show 25 methods // Required methods fn create_buffer(&mut self, size: usize, usage: BufferUsage) -> BufferHandle; fn create_texture( &mut self, width: u32, height: u32, format: TextureFormat, ) -> TextureHandle; fn create_shader( &mut self, source: &str, stage: ShaderStage, ) -> ShaderHandle; fn create_pipeline(&mut self, desc: &RenderPipelineDesc) -> PipelineHandle; fn create_compute_pipeline( &mut self, desc: &ComputePipelineDesc, ) -> ComputePipelineHandle; fn write_buffer(&mut self, buffer: BufferHandle, offset: usize, data: &[u8]); fn read_buffer(&self, buffer: BufferHandle) -> Vec<u8> ⓘ; fn write_texture(&mut self, texture: TextureHandle, data: &[u8]); fn begin_render_pass( &mut self, color: &[TextureHandle], depth: Option<TextureHandle>, ); fn end_render_pass(&mut self); fn begin_compute_pass(&mut self); fn end_compute_pass(&mut self); fn set_pipeline(&mut self, pipeline: PipelineHandle); fn set_vertex_buffer(&mut self, slot: u32, buffer: BufferHandle); fn set_index_buffer(&mut self, buffer: BufferHandle); fn set_bind_group(&mut self, index: u32, group: &BindGroup); fn draw(&mut self, vertex_count: u32, instance_count: u32); fn draw_indexed(&mut self, index_count: u32, instance_count: u32); fn draw_indirect(&mut self, buffer: BufferHandle, offset: u64); fn set_compute_pipeline(&mut self, pipeline: ComputePipelineHandle); fn dispatch_workgroups(&mut self, x: u32, y: u32, z: u32); fn dispatch_indirect(&mut self, buffer: BufferHandle, offset: u64); fn destroy_buffer(&mut self, buffer: BufferHandle); fn destroy_texture(&mut self, texture: TextureHandle); fn name(&self) -> &str;
}
Expand description

The unified GPU device trait. Every concrete backend implements this.

Required Methods§

Source

fn create_buffer(&mut self, size: usize, usage: BufferUsage) -> BufferHandle

Source

fn create_texture( &mut self, width: u32, height: u32, format: TextureFormat, ) -> TextureHandle

Source

fn create_shader(&mut self, source: &str, stage: ShaderStage) -> ShaderHandle

Source

fn create_pipeline(&mut self, desc: &RenderPipelineDesc) -> PipelineHandle

Source

fn create_compute_pipeline( &mut self, desc: &ComputePipelineDesc, ) -> ComputePipelineHandle

Source

fn write_buffer(&mut self, buffer: BufferHandle, offset: usize, data: &[u8])

Source

fn read_buffer(&self, buffer: BufferHandle) -> Vec<u8> ⓘ

Source

fn write_texture(&mut self, texture: TextureHandle, data: &[u8])

Source

fn begin_render_pass( &mut self, color: &[TextureHandle], depth: Option<TextureHandle>, )

Source

fn end_render_pass(&mut self)

Source

fn begin_compute_pass(&mut self)

Source

fn end_compute_pass(&mut self)

Source

fn set_pipeline(&mut self, pipeline: PipelineHandle)

Source

fn set_vertex_buffer(&mut self, slot: u32, buffer: BufferHandle)

Source

fn set_index_buffer(&mut self, buffer: BufferHandle)

Source

fn set_bind_group(&mut self, index: u32, group: &BindGroup)

Source

fn draw(&mut self, vertex_count: u32, instance_count: u32)

Source

fn draw_indexed(&mut self, index_count: u32, instance_count: u32)

Source

fn draw_indirect(&mut self, buffer: BufferHandle, offset: u64)

Source

fn set_compute_pipeline(&mut self, pipeline: ComputePipelineHandle)

Source

fn dispatch_workgroups(&mut self, x: u32, y: u32, z: u32)

Source

fn dispatch_indirect(&mut self, buffer: BufferHandle, offset: u64)

Source

fn destroy_buffer(&mut self, buffer: BufferHandle)

Source

fn destroy_texture(&mut self, texture: TextureHandle)

Source

fn name(&self) -> &str

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§