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§
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
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".