Skip to main content

BackendContext

Trait BackendContext 

Source
pub trait BackendContext: Send + Sync {
Show 14 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, vertex: ShaderHandle, fragment: ShaderHandle, layout: &PipelineLayout, ) -> PipelineHandle; fn create_compute_pipeline( &mut self, shader: ShaderHandle, layout: &PipelineLayout, ) -> ComputePipelineHandle; fn submit(&mut self, commands: &[GpuCommand]); fn present(&mut self); fn write_buffer(&mut self, buffer: BufferHandle, data: &[u8]); fn read_buffer(&self, buffer: BufferHandle) -> Vec<u8> ; fn write_texture(&mut self, texture: TextureHandle, data: &[u8]); fn read_texture(&self, texture: TextureHandle) -> Vec<u8> ; fn destroy_buffer(&mut self, buffer: BufferHandle); fn destroy_texture(&mut self, texture: TextureHandle); fn name(&self) -> &str;
}
Expand description

Trait that every concrete GPU backend must implement.

Required Methods§

Source

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

Create a GPU buffer and return its handle.

Source

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

Create a 2-D texture.

Source

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

Compile / upload a shader module.

Source

fn create_pipeline( &mut self, vertex: ShaderHandle, fragment: ShaderHandle, layout: &PipelineLayout, ) -> PipelineHandle

Create a render pipeline (vertex + fragment).

Source

fn create_compute_pipeline( &mut self, shader: ShaderHandle, layout: &PipelineLayout, ) -> ComputePipelineHandle

Create a compute pipeline.

Source

fn submit(&mut self, commands: &[GpuCommand])

Submit a batch of GPU commands.

Source

fn present(&mut self)

Present the current frame to screen.

Source

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

Write raw data into a buffer.

Source

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

Read raw data back from a buffer.

Source

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

Write raw pixel data into a texture.

Source

fn read_texture(&self, texture: TextureHandle) -> Vec<u8>

Read raw pixel data from a texture.

Source

fn destroy_buffer(&mut self, buffer: BufferHandle)

Destroy a buffer, freeing its resources.

Source

fn destroy_texture(&mut self, texture: TextureHandle)

Destroy a texture, freeing its resources.

Source

fn name(&self) -> &str

Name of this backend, for logging.

Implementors§