pub trait Driver: IntrusiveCounter {
Show 16 methods
// Required methods
fn get_caps(&self) -> &DriverCaps;
fn create_device_buffer(
&mut self,
desc: DeviceBufferDesc,
) -> Option<DeviceBufferPtr>;
fn create_texture(&mut self, desc: TextureDesc) -> Option<TexturePtr>;
fn create_render_target(
&mut self,
desc: RenderTargetDesc,
) -> Option<RenderTargetPtr>;
fn create_shader(&mut self, desc: ShaderDesc) -> Option<ShaderPtr>;
fn create_pipeline(&mut self, desc: PipelineDesc) -> Option<PipelinePtr>;
fn create_frame_buffer(
&mut self,
desc: FrameBufferDesc,
) -> Option<FrameBufferPtr>;
fn delete_resource(&mut self, resource_type: &ResourceType, res_id: usize);
fn update_device_buffer(
&mut self,
dev_buf: &mut DeviceBufferPtr,
offset: usize,
pl: &dyn Payload,
);
fn update_texture(&mut self, dev_buf: &mut TexturePtr, pl: Box<dyn Payload>);
fn begin_pass(&mut self, pass: &Pass);
fn end_pass(&mut self);
fn set_viewport(&mut self, x: u32, y: u32, w: u32, h: u32);
fn set_scissor(&mut self, x: u32, y: u32, w: u32, h: u32);
fn draw(
&mut self,
pipe: &Pipeline,
bindings: &Bindings,
uniforms: *const c_void,
prim_count: u32,
instance_count: u32,
);
fn read_back(
&mut self,
surface: &TexturePtr,
x: u32,
y: u32,
w: u32,
h: u32,
) -> Option<ReadbackPayload>;
}
Expand description
Driver