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§
Sourcefn create_buffer(&mut self, size: usize, usage: BufferUsage) -> BufferHandle
fn create_buffer(&mut self, size: usize, usage: BufferUsage) -> BufferHandle
Create a GPU buffer and return its handle.
Sourcefn create_texture(
&mut self,
width: u32,
height: u32,
format: TextureFormat,
) -> TextureHandle
fn create_texture( &mut self, width: u32, height: u32, format: TextureFormat, ) -> TextureHandle
Create a 2-D texture.
Sourcefn create_shader(&mut self, source: &str, stage: ShaderStage) -> ShaderHandle
fn create_shader(&mut self, source: &str, stage: ShaderStage) -> ShaderHandle
Compile / upload a shader module.
Sourcefn create_pipeline(
&mut self,
vertex: ShaderHandle,
fragment: ShaderHandle,
layout: &PipelineLayout,
) -> PipelineHandle
fn create_pipeline( &mut self, vertex: ShaderHandle, fragment: ShaderHandle, layout: &PipelineLayout, ) -> PipelineHandle
Create a render pipeline (vertex + fragment).
Sourcefn create_compute_pipeline(
&mut self,
shader: ShaderHandle,
layout: &PipelineLayout,
) -> ComputePipelineHandle
fn create_compute_pipeline( &mut self, shader: ShaderHandle, layout: &PipelineLayout, ) -> ComputePipelineHandle
Create a compute pipeline.
Sourcefn submit(&mut self, commands: &[GpuCommand])
fn submit(&mut self, commands: &[GpuCommand])
Submit a batch of GPU commands.
Sourcefn write_buffer(&mut self, buffer: BufferHandle, data: &[u8])
fn write_buffer(&mut self, buffer: BufferHandle, data: &[u8])
Write raw data into a buffer.
Sourcefn read_buffer(&self, buffer: BufferHandle) -> Vec<u8> ⓘ
fn read_buffer(&self, buffer: BufferHandle) -> Vec<u8> ⓘ
Read raw data back from a buffer.
Sourcefn write_texture(&mut self, texture: TextureHandle, data: &[u8])
fn write_texture(&mut self, texture: TextureHandle, data: &[u8])
Write raw pixel data into a texture.
Sourcefn read_texture(&self, texture: TextureHandle) -> Vec<u8> ⓘ
fn read_texture(&self, texture: TextureHandle) -> Vec<u8> ⓘ
Read raw pixel data from a texture.
Sourcefn destroy_buffer(&mut self, buffer: BufferHandle)
fn destroy_buffer(&mut self, buffer: BufferHandle)
Destroy a buffer, freeing its resources.
Sourcefn destroy_texture(&mut self, texture: TextureHandle)
fn destroy_texture(&mut self, texture: TextureHandle)
Destroy a texture, freeing its resources.