#![allow(unused_variables)] use std::ops::Range; #[derive(Clone, Debug)] pub struct Api; pub struct Context; #[derive(Debug)] pub struct Encoder; #[derive(Debug)] pub struct Resource; type DeviceResult = Result; impl crate::Api for Api { type Instance = Context; type Surface = Context; type Adapter = Context; type Device = Context; type Queue = Context; type CommandEncoder = Encoder; type CommandBuffer = Resource; type Buffer = Resource; type Texture = Resource; type SurfaceTexture = Resource; type TextureView = Resource; type Sampler = Resource; type QuerySet = Resource; type Fence = Resource; type AccelerationStructure = Resource; type BindGroupLayout = Resource; type BindGroup = Resource; type PipelineLayout = Resource; type ShaderModule = Resource; type RenderPipeline = Resource; type ComputePipeline = Resource; } impl crate::Instance for Context { unsafe fn init(desc: &crate::InstanceDescriptor) -> Result { Ok(Context) } unsafe fn create_surface( &self, _display_handle: raw_window_handle::RawDisplayHandle, _window_handle: raw_window_handle::RawWindowHandle, ) -> Result { Ok(Context) } unsafe fn destroy_surface(&self, surface: Context) {} unsafe fn enumerate_adapters(&self) -> Vec> { Vec::new() } } impl crate::Surface for Context { unsafe fn configure( &self, device: &Context, config: &crate::SurfaceConfiguration, ) -> Result<(), crate::SurfaceError> { Ok(()) } unsafe fn unconfigure(&self, device: &Context) {} unsafe fn acquire_texture( &self, timeout: Option, ) -> Result>, crate::SurfaceError> { Ok(None) } unsafe fn discard_texture(&self, texture: Resource) {} } impl crate::Adapter for Context { unsafe fn open( &self, features: wgt::Features, _limits: &wgt::Limits, ) -> DeviceResult> { Err(crate::DeviceError::Lost) } unsafe fn texture_format_capabilities( &self, format: wgt::TextureFormat, ) -> crate::TextureFormatCapabilities { crate::TextureFormatCapabilities::empty() } unsafe fn surface_capabilities(&self, surface: &Context) -> Option { None } unsafe fn get_presentation_timestamp(&self) -> wgt::PresentationTimestamp { wgt::PresentationTimestamp::INVALID_TIMESTAMP } } impl crate::Queue for Context { unsafe fn submit( &self, command_buffers: &[&Resource], surface_textures: &[&Resource], signal_fence: Option<(&mut Resource, crate::FenceValue)>, ) -> DeviceResult<()> { Ok(()) } unsafe fn present( &self, surface: &Context, texture: Resource, ) -> Result<(), crate::SurfaceError> { Ok(()) } unsafe fn get_timestamp_period(&self) -> f32 { 1.0 } } impl crate::Device for Context { unsafe fn exit(self, queue: Context) {} unsafe fn create_buffer(&self, desc: &crate::BufferDescriptor) -> DeviceResult { Ok(Resource) } unsafe fn destroy_buffer(&self, buffer: Resource) {} unsafe fn map_buffer( &self, buffer: &Resource, range: crate::MemoryRange, ) -> DeviceResult { Err(crate::DeviceError::Lost) } unsafe fn unmap_buffer(&self, buffer: &Resource) -> DeviceResult<()> { Ok(()) } unsafe fn flush_mapped_ranges(&self, buffer: &Resource, ranges: I) {} unsafe fn invalidate_mapped_ranges(&self, buffer: &Resource, ranges: I) {} unsafe fn create_texture(&self, desc: &crate::TextureDescriptor) -> DeviceResult { Ok(Resource) } unsafe fn destroy_texture(&self, texture: Resource) {} unsafe fn create_texture_view( &self, texture: &Resource, desc: &crate::TextureViewDescriptor, ) -> DeviceResult { Ok(Resource) } unsafe fn destroy_texture_view(&self, view: Resource) {} unsafe fn create_sampler(&self, desc: &crate::SamplerDescriptor) -> DeviceResult { Ok(Resource) } unsafe fn destroy_sampler(&self, sampler: Resource) {} unsafe fn create_command_encoder( &self, desc: &crate::CommandEncoderDescriptor, ) -> DeviceResult { Ok(Encoder) } unsafe fn destroy_command_encoder(&self, encoder: Encoder) {} unsafe fn create_bind_group_layout( &self, desc: &crate::BindGroupLayoutDescriptor, ) -> DeviceResult { Ok(Resource) } unsafe fn destroy_bind_group_layout(&self, bg_layout: Resource) {} unsafe fn create_pipeline_layout( &self, desc: &crate::PipelineLayoutDescriptor, ) -> DeviceResult { Ok(Resource) } unsafe fn destroy_pipeline_layout(&self, pipeline_layout: Resource) {} unsafe fn create_bind_group( &self, desc: &crate::BindGroupDescriptor, ) -> DeviceResult { Ok(Resource) } unsafe fn destroy_bind_group(&self, group: Resource) {} unsafe fn create_shader_module( &self, desc: &crate::ShaderModuleDescriptor, shader: crate::ShaderInput, ) -> Result { Ok(Resource) } unsafe fn destroy_shader_module(&self, module: Resource) {} unsafe fn create_render_pipeline( &self, desc: &crate::RenderPipelineDescriptor, ) -> Result { Ok(Resource) } unsafe fn destroy_render_pipeline(&self, pipeline: Resource) {} unsafe fn create_compute_pipeline( &self, desc: &crate::ComputePipelineDescriptor, ) -> Result { Ok(Resource) } unsafe fn destroy_compute_pipeline(&self, pipeline: Resource) {} unsafe fn create_query_set( &self, desc: &wgt::QuerySetDescriptor, ) -> DeviceResult { Ok(Resource) } unsafe fn destroy_query_set(&self, set: Resource) {} unsafe fn create_fence(&self) -> DeviceResult { Ok(Resource) } unsafe fn destroy_fence(&self, fence: Resource) {} unsafe fn get_fence_value(&self, fence: &Resource) -> DeviceResult { Ok(0) } unsafe fn wait( &self, fence: &Resource, value: crate::FenceValue, timeout_ms: u32, ) -> DeviceResult { Ok(true) } unsafe fn start_capture(&self) -> bool { false } unsafe fn stop_capture(&self) {} unsafe fn create_acceleration_structure( &self, desc: &crate::AccelerationStructureDescriptor, ) -> DeviceResult { Ok(Resource) } unsafe fn get_acceleration_structure_build_sizes<'a>( &self, _desc: &crate::GetAccelerationStructureBuildSizesDescriptor<'a, Api>, ) -> crate::AccelerationStructureBuildSizes { Default::default() } unsafe fn get_acceleration_structure_device_address( &self, _acceleration_structure: &Resource, ) -> wgt::BufferAddress { Default::default() } unsafe fn destroy_acceleration_structure(&self, _acceleration_structure: Resource) {} } impl crate::CommandEncoder for Encoder { unsafe fn begin_encoding(&mut self, label: crate::Label) -> DeviceResult<()> { Ok(()) } unsafe fn discard_encoding(&mut self) {} unsafe fn end_encoding(&mut self) -> DeviceResult { Ok(Resource) } unsafe fn reset_all(&mut self, command_buffers: I) {} unsafe fn transition_buffers<'a, T>(&mut self, barriers: T) where T: Iterator>, { } unsafe fn transition_textures<'a, T>(&mut self, barriers: T) where T: Iterator>, { } unsafe fn clear_buffer(&mut self, buffer: &Resource, range: crate::MemoryRange) {} unsafe fn copy_buffer_to_buffer(&mut self, src: &Resource, dst: &Resource, regions: T) {} #[cfg(webgl)] unsafe fn copy_external_image_to_texture( &mut self, src: &wgt::ImageCopyExternalImage, dst: &Resource, dst_premultiplication: bool, regions: T, ) where T: Iterator, { } unsafe fn copy_texture_to_texture( &mut self, src: &Resource, src_usage: crate::TextureUses, dst: &Resource, regions: T, ) { } unsafe fn copy_buffer_to_texture(&mut self, src: &Resource, dst: &Resource, regions: T) {} unsafe fn copy_texture_to_buffer( &mut self, src: &Resource, src_usage: crate::TextureUses, dst: &Resource, regions: T, ) { } unsafe fn begin_query(&mut self, set: &Resource, index: u32) {} unsafe fn end_query(&mut self, set: &Resource, index: u32) {} unsafe fn write_timestamp(&mut self, set: &Resource, index: u32) {} unsafe fn reset_queries(&mut self, set: &Resource, range: Range) {} unsafe fn copy_query_results( &mut self, set: &Resource, range: Range, buffer: &Resource, offset: wgt::BufferAddress, stride: wgt::BufferSize, ) { } // render unsafe fn begin_render_pass(&mut self, desc: &crate::RenderPassDescriptor) {} unsafe fn end_render_pass(&mut self) {} unsafe fn set_bind_group( &mut self, layout: &Resource, index: u32, group: &Resource, dynamic_offsets: &[wgt::DynamicOffset], ) { } unsafe fn set_push_constants( &mut self, layout: &Resource, stages: wgt::ShaderStages, offset_bytes: u32, data: &[u32], ) { } unsafe fn insert_debug_marker(&mut self, label: &str) {} unsafe fn begin_debug_marker(&mut self, group_label: &str) {} unsafe fn end_debug_marker(&mut self) {} unsafe fn set_render_pipeline(&mut self, pipeline: &Resource) {} unsafe fn set_index_buffer<'a>( &mut self, binding: crate::BufferBinding<'a, Api>, format: wgt::IndexFormat, ) { } unsafe fn set_vertex_buffer<'a>(&mut self, index: u32, binding: crate::BufferBinding<'a, Api>) { } unsafe fn set_viewport(&mut self, rect: &crate::Rect, depth_range: Range) {} unsafe fn set_scissor_rect(&mut self, rect: &crate::Rect) {} unsafe fn set_stencil_reference(&mut self, value: u32) {} unsafe fn set_blend_constants(&mut self, color: &[f32; 4]) {} unsafe fn draw( &mut self, first_vertex: u32, vertex_count: u32, first_instance: u32, instance_count: u32, ) { } unsafe fn draw_indexed( &mut self, first_index: u32, index_count: u32, base_vertex: i32, first_instance: u32, instance_count: u32, ) { } unsafe fn draw_indirect( &mut self, buffer: &Resource, offset: wgt::BufferAddress, draw_count: u32, ) { } unsafe fn draw_indexed_indirect( &mut self, buffer: &Resource, offset: wgt::BufferAddress, draw_count: u32, ) { } unsafe fn draw_indirect_count( &mut self, buffer: &Resource, offset: wgt::BufferAddress, count_buffer: &Resource, count_offset: wgt::BufferAddress, max_count: u32, ) { } unsafe fn draw_indexed_indirect_count( &mut self, buffer: &Resource, offset: wgt::BufferAddress, count_buffer: &Resource, count_offset: wgt::BufferAddress, max_count: u32, ) { } // compute unsafe fn begin_compute_pass(&mut self, desc: &crate::ComputePassDescriptor) {} unsafe fn end_compute_pass(&mut self) {} unsafe fn set_compute_pipeline(&mut self, pipeline: &Resource) {} unsafe fn dispatch(&mut self, count: [u32; 3]) {} unsafe fn dispatch_indirect(&mut self, buffer: &Resource, offset: wgt::BufferAddress) {} unsafe fn build_acceleration_structures<'a, T>( &mut self, _descriptor_count: u32, descriptors: T, ) where Api: 'a, T: IntoIterator>, { } unsafe fn place_acceleration_structure_barrier( &mut self, _barriers: crate::AccelerationStructureBarrier, ) { } }