pub trait Driver: IntrusiveCounter {
Show 16 methods
// Required methods
fn get_caps(&self) -> &DriverCaps;
fn create_device_buffer(
&mut self,
desc: DeviceBufferDesc,
) -> Option<IntrusivePtr<Resource<DeviceBufferDesc>>>;
fn create_texture(
&mut self,
desc: TextureDesc,
) -> Option<IntrusivePtr<Resource<TextureDesc>>>;
fn create_render_target(
&mut self,
desc: RenderTargetDesc,
) -> Option<IntrusivePtr<Resource<RenderTargetDesc>>>;
fn create_shader(
&mut self,
desc: ShaderDesc,
) -> Option<IntrusivePtr<Resource<ShaderDesc>>>;
fn create_pipeline(
&mut self,
desc: PipelineDesc,
) -> Option<IntrusivePtr<Resource<PipelineDesc>>>;
fn create_frame_buffer(
&mut self,
desc: FrameBufferDesc,
) -> Option<IntrusivePtr<Resource<FrameBufferDesc>>>;
fn delete_resource(&mut self, resource_type: &ResourceType, res_id: usize);
fn update_device_buffer(
&mut self,
dev_buf: &mut IntrusivePtr<Resource<DeviceBufferDesc>>,
offset: usize,
pl: &dyn Payload,
);
fn update_texture(
&mut self,
dev_buf: &mut IntrusivePtr<Resource<TextureDesc>>,
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: &Resource<PipelineDesc>,
bindings: &Bindings,
uniforms: *const c_void,
prim_count: u32,
instance_count: u32,
);
fn read_back(
&mut self,
surface: &IntrusivePtr<Resource<TextureDesc>>,
x: u32,
y: u32,
w: u32,
h: u32,
) -> Option<ReadbackPayload>;
}
Expand description
Driver