1#![allow(unused_variables)]
2
3use std::ops::Range;
4
5#[derive(Clone)]
6pub struct Api;
7pub struct Context;
8#[derive(Debug)]
9pub struct Encoder;
10#[derive(Debug)]
11pub struct Resource;
12
13type DeviceResult<T> = Result<T, crate::DeviceError>;
14
15impl crate::Api for Api {
16 type Instance = Context;
17 type Surface = Context;
18 type Adapter = Context;
19 type Device = Context;
20
21 type Queue = Context;
22 type CommandEncoder = Encoder;
23 type CommandBuffer = Resource;
24
25 type Buffer = Resource;
26 type Texture = Resource;
27 type SurfaceTexture = Resource;
28 type TextureView = Resource;
29 type Sampler = Resource;
30 type QuerySet = Resource;
31 type Fence = Resource;
32
33 type BindGroupLayout = Resource;
34 type BindGroup = Resource;
35 type PipelineLayout = Resource;
36 type ShaderModule = Resource;
37 type RenderPipeline = Resource;
38 type ComputePipeline = Resource;
39}
40
41impl crate::Instance<Api> for Context {
42 unsafe fn init(desc: &crate::InstanceDescriptor) -> Result<Self, crate::InstanceError> {
43 Ok(Context)
44 }
45 unsafe fn create_surface(
46 &self,
47 _display_handle: raw_window_handle::RawDisplayHandle,
48 _window_handle: raw_window_handle::RawWindowHandle,
49 ) -> Result<Context, crate::InstanceError> {
50 Ok(Context)
51 }
52 unsafe fn destroy_surface(&self, surface: Context) {}
53 unsafe fn enumerate_adapters(&self) -> Vec<crate::ExposedAdapter<Api>> {
54 Vec::new()
55 }
56}
57
58impl crate::Surface<Api> for Context {
59 unsafe fn configure(
60 &mut self,
61 device: &Context,
62 config: &crate::SurfaceConfiguration,
63 ) -> Result<(), crate::SurfaceError> {
64 Ok(())
65 }
66
67 unsafe fn unconfigure(&mut self, device: &Context) {}
68
69 unsafe fn acquire_texture(
70 &mut self,
71 timeout: Option<std::time::Duration>,
72 ) -> Result<Option<crate::AcquiredSurfaceTexture<Api>>, crate::SurfaceError> {
73 Ok(None)
74 }
75 unsafe fn discard_texture(&mut self, texture: Resource) {}
76}
77
78impl crate::Adapter<Api> for Context {
79 unsafe fn open(
80 &self,
81 features: wgt::Features,
82 _limits: &wgt::Limits,
83 ) -> DeviceResult<crate::OpenDevice<Api>> {
84 Err(crate::DeviceError::Lost)
85 }
86 unsafe fn texture_format_capabilities(
87 &self,
88 format: wgt::TextureFormat,
89 ) -> crate::TextureFormatCapabilities {
90 crate::TextureFormatCapabilities::empty()
91 }
92
93 unsafe fn surface_capabilities(&self, surface: &Context) -> Option<crate::SurfaceCapabilities> {
94 None
95 }
96
97 unsafe fn get_presentation_timestamp(&self) -> wgt::PresentationTimestamp {
98 wgt::PresentationTimestamp::INVALID_TIMESTAMP
99 }
100}
101
102impl crate::Queue<Api> for Context {
103 unsafe fn submit(
104 &mut self,
105 command_buffers: &[&Resource],
106 signal_fence: Option<(&mut Resource, crate::FenceValue)>,
107 ) -> DeviceResult<()> {
108 Ok(())
109 }
110 unsafe fn present(
111 &mut self,
112 surface: &mut Context,
113 texture: Resource,
114 ) -> Result<(), crate::SurfaceError> {
115 Ok(())
116 }
117
118 unsafe fn get_timestamp_period(&self) -> f32 {
119 1.0
120 }
121}
122
123impl crate::Device<Api> for Context {
124 unsafe fn exit(self, queue: Context) {}
125 unsafe fn create_buffer(&self, desc: &crate::BufferDescriptor) -> DeviceResult<Resource> {
126 Ok(Resource)
127 }
128 unsafe fn destroy_buffer(&self, buffer: Resource) {}
129 unsafe fn map_buffer(
130 &self,
131 buffer: &Resource,
132 range: crate::MemoryRange,
133 ) -> DeviceResult<crate::BufferMapping> {
134 Err(crate::DeviceError::Lost)
135 }
136 unsafe fn unmap_buffer(&self, buffer: &Resource) -> DeviceResult<()> {
137 Ok(())
138 }
139 unsafe fn flush_mapped_ranges<I>(&self, buffer: &Resource, ranges: I) {}
140 unsafe fn invalidate_mapped_ranges<I>(&self, buffer: &Resource, ranges: I) {}
141
142 unsafe fn create_texture(&self, desc: &crate::TextureDescriptor) -> DeviceResult<Resource> {
143 Ok(Resource)
144 }
145 unsafe fn destroy_texture(&self, texture: Resource) {}
146 unsafe fn create_texture_view(
147 &self,
148 texture: &Resource,
149 desc: &crate::TextureViewDescriptor,
150 ) -> DeviceResult<Resource> {
151 Ok(Resource)
152 }
153 unsafe fn destroy_texture_view(&self, view: Resource) {}
154 unsafe fn create_sampler(&self, desc: &crate::SamplerDescriptor) -> DeviceResult<Resource> {
155 Ok(Resource)
156 }
157 unsafe fn destroy_sampler(&self, sampler: Resource) {}
158
159 unsafe fn create_command_encoder(
160 &self,
161 desc: &crate::CommandEncoderDescriptor<Api>,
162 ) -> DeviceResult<Encoder> {
163 Ok(Encoder)
164 }
165 unsafe fn destroy_command_encoder(&self, encoder: Encoder) {}
166
167 unsafe fn create_bind_group_layout(
168 &self,
169 desc: &crate::BindGroupLayoutDescriptor,
170 ) -> DeviceResult<Resource> {
171 Ok(Resource)
172 }
173 unsafe fn destroy_bind_group_layout(&self, bg_layout: Resource) {}
174 unsafe fn create_pipeline_layout(
175 &self,
176 desc: &crate::PipelineLayoutDescriptor<Api>,
177 ) -> DeviceResult<Resource> {
178 Ok(Resource)
179 }
180 unsafe fn destroy_pipeline_layout(&self, pipeline_layout: Resource) {}
181 unsafe fn create_bind_group(
182 &self,
183 desc: &crate::BindGroupDescriptor<Api>,
184 ) -> DeviceResult<Resource> {
185 Ok(Resource)
186 }
187 unsafe fn destroy_bind_group(&self, group: Resource) {}
188
189 unsafe fn create_shader_module(
190 &self,
191 desc: &crate::ShaderModuleDescriptor,
192 shader: crate::ShaderInput,
193 ) -> Result<Resource, crate::ShaderError> {
194 Ok(Resource)
195 }
196 unsafe fn destroy_shader_module(&self, module: Resource) {}
197 unsafe fn create_render_pipeline(
198 &self,
199 desc: &crate::RenderPipelineDescriptor<Api>,
200 ) -> Result<Resource, crate::PipelineError> {
201 Ok(Resource)
202 }
203 unsafe fn destroy_render_pipeline(&self, pipeline: Resource) {}
204 unsafe fn create_compute_pipeline(
205 &self,
206 desc: &crate::ComputePipelineDescriptor<Api>,
207 ) -> Result<Resource, crate::PipelineError> {
208 Ok(Resource)
209 }
210 unsafe fn destroy_compute_pipeline(&self, pipeline: Resource) {}
211
212 unsafe fn create_query_set(
213 &self,
214 desc: &wgt::QuerySetDescriptor<crate::Label>,
215 ) -> DeviceResult<Resource> {
216 Ok(Resource)
217 }
218 unsafe fn destroy_query_set(&self, set: Resource) {}
219 unsafe fn create_fence(&self) -> DeviceResult<Resource> {
220 Ok(Resource)
221 }
222 unsafe fn destroy_fence(&self, fence: Resource) {}
223 unsafe fn get_fence_value(&self, fence: &Resource) -> DeviceResult<crate::FenceValue> {
224 Ok(0)
225 }
226 unsafe fn wait(
227 &self,
228 fence: &Resource,
229 value: crate::FenceValue,
230 timeout_ms: u32,
231 ) -> DeviceResult<bool> {
232 Ok(true)
233 }
234
235 unsafe fn start_capture(&self) -> bool {
236 false
237 }
238 unsafe fn stop_capture(&self) {}
239}
240
241impl crate::CommandEncoder<Api> for Encoder {
242 unsafe fn begin_encoding(&mut self, label: crate::Label) -> DeviceResult<()> {
243 Ok(())
244 }
245 unsafe fn discard_encoding(&mut self) {}
246 unsafe fn end_encoding(&mut self) -> DeviceResult<Resource> {
247 Ok(Resource)
248 }
249 unsafe fn reset_all<I>(&mut self, command_buffers: I) {}
250
251 unsafe fn transition_buffers<'a, T>(&mut self, barriers: T)
252 where
253 T: Iterator<Item = crate::BufferBarrier<'a, Api>>,
254 {
255 }
256
257 unsafe fn transition_textures<'a, T>(&mut self, barriers: T)
258 where
259 T: Iterator<Item = crate::TextureBarrier<'a, Api>>,
260 {
261 }
262
263 unsafe fn clear_buffer(&mut self, buffer: &Resource, range: crate::MemoryRange) {}
264
265 unsafe fn copy_buffer_to_buffer<T>(&mut self, src: &Resource, dst: &Resource, regions: T) {}
266
267 #[cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))]
268 unsafe fn copy_external_image_to_texture<T>(
269 &mut self,
270 src: &wgt::ImageCopyExternalImage,
271 dst: &Resource,
272 dst_premultiplication: bool,
273 regions: T,
274 ) where
275 T: Iterator<Item = crate::TextureCopy>,
276 {
277 }
278
279 unsafe fn copy_texture_to_texture<T>(
280 &mut self,
281 src: &Resource,
282 src_usage: crate::TextureUses,
283 dst: &Resource,
284 regions: T,
285 ) {
286 }
287
288 unsafe fn copy_buffer_to_texture<T>(&mut self, src: &Resource, dst: &Resource, regions: T) {}
289
290 unsafe fn copy_texture_to_buffer<T>(
291 &mut self,
292 src: &Resource,
293 src_usage: crate::TextureUses,
294 dst: &Resource,
295 regions: T,
296 ) {
297 }
298
299 unsafe fn begin_query(&mut self, set: &Resource, index: u32) {}
300 unsafe fn end_query(&mut self, set: &Resource, index: u32) {}
301 unsafe fn write_timestamp(&mut self, set: &Resource, index: u32) {}
302 unsafe fn reset_queries(&mut self, set: &Resource, range: Range<u32>) {}
303 unsafe fn copy_query_results(
304 &mut self,
305 set: &Resource,
306 range: Range<u32>,
307 buffer: &Resource,
308 offset: wgt::BufferAddress,
309 stride: wgt::BufferSize,
310 ) {
311 }
312
313 unsafe fn begin_render_pass(&mut self, desc: &crate::RenderPassDescriptor<Api>) {}
316 unsafe fn end_render_pass(&mut self) {}
317
318 unsafe fn set_bind_group(
319 &mut self,
320 layout: &Resource,
321 index: u32,
322 group: &Resource,
323 dynamic_offsets: &[wgt::DynamicOffset],
324 ) {
325 }
326 unsafe fn set_push_constants(
327 &mut self,
328 layout: &Resource,
329 stages: wgt::ShaderStages,
330 offset: u32,
331 data: &[u32],
332 ) {
333 }
334
335 unsafe fn insert_debug_marker(&mut self, label: &str) {}
336 unsafe fn begin_debug_marker(&mut self, group_label: &str) {}
337 unsafe fn end_debug_marker(&mut self) {}
338
339 unsafe fn set_render_pipeline(&mut self, pipeline: &Resource) {}
340
341 unsafe fn set_index_buffer<'a>(
342 &mut self,
343 binding: crate::BufferBinding<'a, Api>,
344 format: wgt::IndexFormat,
345 ) {
346 }
347 unsafe fn set_vertex_buffer<'a>(&mut self, index: u32, binding: crate::BufferBinding<'a, Api>) {
348 }
349 unsafe fn set_viewport(&mut self, rect: &crate::Rect<f32>, depth_range: Range<f32>) {}
350 unsafe fn set_scissor_rect(&mut self, rect: &crate::Rect<u32>) {}
351 unsafe fn set_stencil_reference(&mut self, value: u32) {}
352 unsafe fn set_blend_constants(&mut self, color: &[f32; 4]) {}
353
354 unsafe fn draw(
355 &mut self,
356 start_vertex: u32,
357 vertex_count: u32,
358 start_instance: u32,
359 instance_count: u32,
360 ) {
361 }
362 unsafe fn draw_indexed(
363 &mut self,
364 start_index: u32,
365 index_count: u32,
366 base_vertex: i32,
367 start_instance: u32,
368 instance_count: u32,
369 ) {
370 }
371 unsafe fn draw_indirect(
372 &mut self,
373 buffer: &Resource,
374 offset: wgt::BufferAddress,
375 draw_count: u32,
376 ) {
377 }
378 unsafe fn draw_indexed_indirect(
379 &mut self,
380 buffer: &Resource,
381 offset: wgt::BufferAddress,
382 draw_count: u32,
383 ) {
384 }
385 unsafe fn draw_indirect_count(
386 &mut self,
387 buffer: &Resource,
388 offset: wgt::BufferAddress,
389 count_buffer: &Resource,
390 count_offset: wgt::BufferAddress,
391 max_count: u32,
392 ) {
393 }
394 unsafe fn draw_indexed_indirect_count(
395 &mut self,
396 buffer: &Resource,
397 offset: wgt::BufferAddress,
398 count_buffer: &Resource,
399 count_offset: wgt::BufferAddress,
400 max_count: u32,
401 ) {
402 }
403
404 unsafe fn begin_compute_pass(&mut self, desc: &crate::ComputePassDescriptor) {}
407 unsafe fn end_compute_pass(&mut self) {}
408
409 unsafe fn set_compute_pipeline(&mut self, pipeline: &Resource) {}
410
411 unsafe fn dispatch(&mut self, count: [u32; 3]) {}
412 unsafe fn dispatch_indirect(&mut self, buffer: &Resource, offset: wgt::BufferAddress) {}
413}