1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
use {Capabilities, Device, Resources, IndexType, VertexCount};
use {draw, handle, pso, shade, target, tex};
use state as s;
pub struct DummyDevice {
capabilities: Capabilities,
}
#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
pub enum DummyResources {}
impl Resources for DummyResources {
type Buffer = ();
type Shader = ();
type Program = ();
type PipelineStateObject = ();
type Texture = ();
type ShaderResourceView = ();
type UnorderedAccessView = ();
type RenderTargetView = ();
type DepthStencilView = ();
type Sampler = ();
type Fence = ();
}
impl DummyDevice {
pub fn new() -> DummyDevice {
let caps = Capabilities {
max_vertex_count: 0,
max_index_count: 0,
max_texture_size: 0,
instance_base_supported: false,
instance_call_supported: false,
instance_rate_supported: false,
vertex_base_supported: false,
srgb_color_supported: false,
constant_buffer_supported: false,
unordered_access_view_supported: false,
separate_blending_slots_supported: false,
};
DummyDevice {
capabilities: caps,
}
}
}
pub struct DummyCommandBuffer;
impl draw::CommandBuffer<DummyResources> for DummyCommandBuffer {
fn clone_empty(&self) -> DummyCommandBuffer { DummyCommandBuffer }
fn reset(&mut self) {}
fn bind_pipeline_state(&mut self, _: ()) {}
fn bind_vertex_buffers(&mut self, _: pso::VertexBufferSet<DummyResources>) {}
fn bind_constant_buffers(&mut self, _: &[pso::ConstantBufferParam<DummyResources>]) {}
fn bind_global_constant(&mut self, _: shade::Location, _: shade::UniformValue) {}
fn bind_resource_views(&mut self, _: &[pso::ResourceViewParam<DummyResources>]) {}
fn bind_unordered_views(&mut self, _: &[pso::UnorderedViewParam<DummyResources>]) {}
fn bind_samplers(&mut self, _: &[pso::SamplerParam<DummyResources>]) {}
fn bind_pixel_targets(&mut self, _: pso::PixelTargetSet<DummyResources>) {}
fn bind_index(&mut self, _: (), _: IndexType) {}
fn set_scissor(&mut self, _: target::Rect) {}
fn set_ref_values(&mut self, _: s::RefValues) {}
fn update_buffer(&mut self, _: (), _: &[u8], _: usize) {}
fn update_texture(&mut self, _: (), _: tex::Kind, _: Option<tex::CubeFace>,
_: &[u8], _: tex::RawImageInfo) {}
fn generate_mipmap(&mut self, _: ()) {}
fn clear_color(&mut self, _: (), _: draw::ClearColor) {}
fn clear_depth_stencil(&mut self, _: (), _: Option<target::Depth>,
_: Option<target::Stencil>) {}
fn call_draw(&mut self, _: VertexCount, _: VertexCount, _: draw::InstanceOption) {}
fn call_draw_indexed(&mut self, _: VertexCount, _: VertexCount,
_: VertexCount, _: draw::InstanceOption) {}
}
impl Device for DummyDevice {
type Resources = DummyResources;
type CommandBuffer = DummyCommandBuffer;
fn get_capabilities(&self) -> &Capabilities {
&self.capabilities
}
fn pin_submitted_resources(&mut self, _: &handle::Manager<DummyResources>) {}
fn submit(&mut self, _: &mut DummyCommandBuffer) {}
fn cleanup(&mut self) {}
}