pub struct Api;
Trait Implementations§
source§impl Adapter<Api> for Adapter
impl Adapter<Api> for Adapter
unsafe fn open( &self, features: Features, _limits: &Limits ) -> Result<OpenDevice<Api>, DeviceError>
source§unsafe fn texture_format_capabilities(
&self,
format: TextureFormat
) -> TextureFormatCapabilities
unsafe fn texture_format_capabilities( &self, format: TextureFormat ) -> TextureFormatCapabilities
Return the set of supported capabilities for a texture format.
source§unsafe fn surface_capabilities(
&self,
surface: &Surface
) -> Option<SurfaceCapabilities>
unsafe fn surface_capabilities( &self, surface: &Surface ) -> Option<SurfaceCapabilities>
Returns the capabilities of working with a specified surface. Read more
source§unsafe fn get_presentation_timestamp(&self) -> PresentationTimestamp
unsafe fn get_presentation_timestamp(&self) -> PresentationTimestamp
Creates a
PresentationTimestamp
using the adapter’s WSI.source§impl Api for Api
impl Api for Api
type Instance = Instance
type Surface = Surface
type Adapter = Adapter
type Device = Device
type Queue = Queue
type CommandEncoder = CommandEncoder
type CommandBuffer = CommandBuffer
type Buffer = Buffer
type Texture = Texture
type SurfaceTexture = Texture
type TextureView = TextureView
type Sampler = Sampler
type QuerySet = QuerySet
type Fence = Fence
type AccelerationStructure = ()
type BindGroupLayout = BindGroupLayout
type BindGroup = BindGroup
type PipelineLayout = PipelineLayout
type ShaderModule = ShaderModule
type RenderPipeline = RenderPipeline
type ComputePipeline = ComputePipeline
source§impl CommandEncoder<Api> for CommandEncoder
impl CommandEncoder<Api> for CommandEncoder
source§unsafe fn begin_encoding(
&mut self,
label: Option<&str>
) -> Result<(), DeviceError>
unsafe fn begin_encoding( &mut self, label: Option<&str> ) -> Result<(), DeviceError>
Begin encoding a new command buffer.
source§unsafe fn discard_encoding(&mut self)
unsafe fn discard_encoding(&mut self)
Discard currently recorded list, if any.
unsafe fn end_encoding(&mut self) -> Result<CommandBuffer, DeviceError>
source§unsafe fn reset_all<I>(&mut self, _command_buffers: I)
unsafe fn reset_all<I>(&mut self, _command_buffers: I)
Reclaims all resources that are allocated for this encoder.
Must get all of the produced command buffers back,
and they must not be used by GPU at this moment.
unsafe fn transition_buffers<'a, T>(&mut self, barriers: T)
unsafe fn transition_textures<'a, T>(&mut self, barriers: T)
unsafe fn clear_buffer(&mut self, buffer: &Buffer, range: Range<u64>)
unsafe fn copy_buffer_to_buffer<T>(
&mut self,
src: &Buffer,
dst: &Buffer,
regions: T
)where
T: Iterator<Item = BufferCopy>,
source§unsafe fn copy_texture_to_texture<T>(
&mut self,
src: &Texture,
_src_usage: TextureUses,
dst: &Texture,
regions: T
)where
T: Iterator<Item = TextureCopy>,
unsafe fn copy_texture_to_texture<T>(
&mut self,
src: &Texture,
_src_usage: TextureUses,
dst: &Texture,
regions: T
)where
T: Iterator<Item = TextureCopy>,
Copy from one texture to another.
Works with a single array layer.
Note:
dst
current usage has to be TextureUses::COPY_DST
.
Note: the copy extent is in physical size (rounded to the block size)source§unsafe fn copy_buffer_to_texture<T>(
&mut self,
src: &Buffer,
dst: &Texture,
regions: T
)where
T: Iterator<Item = BufferTextureCopy>,
unsafe fn copy_buffer_to_texture<T>(
&mut self,
src: &Buffer,
dst: &Texture,
regions: T
)where
T: Iterator<Item = BufferTextureCopy>,
Copy from buffer to texture.
Works with a single array layer.
Note:
dst
current usage has to be TextureUses::COPY_DST
.
Note: the copy extent is in physical size (rounded to the block size)source§unsafe fn copy_texture_to_buffer<T>(
&mut self,
src: &Texture,
_src_usage: TextureUses,
dst: &Buffer,
regions: T
)where
T: Iterator<Item = BufferTextureCopy>,
unsafe fn copy_texture_to_buffer<T>(
&mut self,
src: &Texture,
_src_usage: TextureUses,
dst: &Buffer,
regions: T
)where
T: Iterator<Item = BufferTextureCopy>,
Copy from texture to buffer.
Works with a single array layer.
Note: the copy extent is in physical size (rounded to the block size)
unsafe fn write_timestamp(&mut self, set: &QuerySet, index: u32)
unsafe fn reset_queries(&mut self, _set: &QuerySet, _range: Range<u32>)
unsafe fn copy_query_results( &mut self, set: &QuerySet, range: Range<u32>, buffer: &Buffer, offset: u64, _stride: NonZeroU64 )
unsafe fn begin_render_pass(&mut self, desc: &RenderPassDescriptor<'_, Api>)
unsafe fn end_render_pass(&mut self)
source§unsafe fn set_bind_group(
&mut self,
layout: &PipelineLayout,
index: u32,
group: &BindGroup,
dynamic_offsets: &[u32]
)
unsafe fn set_bind_group( &mut self, layout: &PipelineLayout, index: u32, group: &BindGroup, dynamic_offsets: &[u32] )
Sets the bind group at
index
to group
, assuming the layout
of all the preceeding groups to be taken from layout
.source§unsafe fn set_push_constants(
&mut self,
_layout: &PipelineLayout,
_stages: ShaderStages,
offset_bytes: u32,
data: &[u32]
)
unsafe fn set_push_constants( &mut self, _layout: &PipelineLayout, _stages: ShaderStages, offset_bytes: u32, data: &[u32] )
Sets a range in push constant data. Read more
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: &RenderPipeline)
unsafe fn set_index_buffer<'a>( &mut self, binding: BufferBinding<'a, Api>, format: IndexFormat )
unsafe fn set_vertex_buffer<'a>( &mut self, index: u32, binding: BufferBinding<'a, Api> )
unsafe fn set_viewport(&mut self, rect: &Rect<f32>, depth: Range<f32>)
unsafe fn set_scissor_rect(&mut self, rect: &Rect<u32>)
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: &Buffer, offset: u64, draw_count: u32 )
unsafe fn draw_indexed_indirect( &mut self, buffer: &Buffer, offset: u64, draw_count: u32 )
unsafe fn draw_indirect_count( &mut self, _buffer: &Buffer, _offset: u64, _count_buffer: &Buffer, _count_offset: u64, _max_count: u32 )
unsafe fn draw_indexed_indirect_count( &mut self, _buffer: &Buffer, _offset: u64, _count_buffer: &Buffer, _count_offset: u64, _max_count: u32 )
unsafe fn begin_compute_pass(&mut self, desc: &ComputePassDescriptor<'_, Api>)
unsafe fn end_compute_pass(&mut self)
unsafe fn set_compute_pipeline(&mut self, pipeline: &ComputePipeline)
unsafe fn dispatch(&mut self, count: [u32; 3])
unsafe fn dispatch_indirect(&mut self, buffer: &Buffer, offset: u64)
source§unsafe fn build_acceleration_structures<'a, T>(
&mut self,
_descriptor_count: u32,
_descriptors: T
)
unsafe fn build_acceleration_structures<'a, T>( &mut self, _descriptor_count: u32, _descriptors: T )
To get the required sizes for the buffer allocations use
get_acceleration_structure_build_sizes
per descriptor
All buffers must be synchronized externally
All buffer regions, which are written to may only be passed once per function call,
with the exception of updates in the same descriptor.
Consequences of this limitation: Read moreunsafe fn place_acceleration_structure_barrier( &mut self, _barriers: AccelerationStructureBarrier )
source§impl Device<Api> for Device
impl Device<Api> for Device
source§unsafe fn create_buffer(
&self,
desc: &BufferDescriptor<'_>
) -> Result<Buffer, DeviceError>
unsafe fn create_buffer( &self, desc: &BufferDescriptor<'_> ) -> Result<Buffer, DeviceError>
Creates a new buffer. Read more
unsafe fn destroy_buffer(&self, buffer: Buffer)
unsafe fn map_buffer( &self, buffer: &Buffer, range: Range<u64> ) -> Result<BufferMapping, DeviceError>
unsafe fn unmap_buffer(&self, buffer: &Buffer) -> Result<(), DeviceError>
unsafe fn flush_mapped_ranges<I>(&self, buffer: &Buffer, ranges: I)
unsafe fn invalidate_mapped_ranges<I>(&self, _buffer: &Buffer, _ranges: I)
source§unsafe fn create_texture(
&self,
desc: &TextureDescriptor<'_>
) -> Result<Texture, DeviceError>
unsafe fn create_texture( &self, desc: &TextureDescriptor<'_> ) -> Result<Texture, DeviceError>
Creates a new texture. Read more
unsafe fn destroy_texture(&self, texture: Texture)
unsafe fn create_texture_view( &self, texture: &Texture, desc: &TextureViewDescriptor<'_> ) -> Result<TextureView, DeviceError>
unsafe fn destroy_texture_view(&self, _view: TextureView)
unsafe fn create_sampler( &self, desc: &SamplerDescriptor<'_> ) -> Result<Sampler, DeviceError>
unsafe fn destroy_sampler(&self, sampler: Sampler)
unsafe fn create_command_encoder( &self, _desc: &CommandEncoderDescriptor<'_, Api> ) -> Result<CommandEncoder, DeviceError>
unsafe fn destroy_command_encoder(&self, _encoder: CommandEncoder)
source§unsafe fn create_bind_group_layout(
&self,
desc: &BindGroupLayoutDescriptor<'_>
) -> Result<BindGroupLayout, DeviceError>
unsafe fn create_bind_group_layout( &self, desc: &BindGroupLayoutDescriptor<'_> ) -> Result<BindGroupLayout, DeviceError>
Creates a bind group layout.
unsafe fn destroy_bind_group_layout(&self, _bg_layout: BindGroupLayout)
unsafe fn create_pipeline_layout( &self, desc: &PipelineLayoutDescriptor<'_, Api> ) -> Result<PipelineLayout, DeviceError>
unsafe fn destroy_pipeline_layout(&self, _pipeline_layout: PipelineLayout)
unsafe fn create_bind_group( &self, desc: &BindGroupDescriptor<'_, Api> ) -> Result<BindGroup, DeviceError>
unsafe fn destroy_bind_group(&self, _group: BindGroup)
unsafe fn create_shader_module( &self, desc: &ShaderModuleDescriptor<'_>, shader: ShaderInput<'_> ) -> Result<ShaderModule, ShaderError>
unsafe fn destroy_shader_module(&self, _module: ShaderModule)
unsafe fn create_render_pipeline( &self, desc: &RenderPipelineDescriptor<'_, Api> ) -> Result<RenderPipeline, PipelineError>
unsafe fn destroy_render_pipeline(&self, pipeline: RenderPipeline)
unsafe fn create_compute_pipeline( &self, desc: &ComputePipelineDescriptor<'_, Api> ) -> Result<ComputePipeline, PipelineError>
unsafe fn destroy_compute_pipeline(&self, pipeline: ComputePipeline)
unsafe fn create_query_set( &self, desc: &QuerySetDescriptor<Option<&str>> ) -> Result<QuerySet, DeviceError>
unsafe fn destroy_query_set(&self, set: QuerySet)
unsafe fn create_fence(&self) -> Result<Fence, DeviceError>
unsafe fn destroy_fence(&self, fence: Fence)
unsafe fn get_fence_value(&self, fence: &Fence) -> Result<u64, DeviceError>
source§unsafe fn wait(
&self,
fence: &Fence,
wait_value: u64,
timeout_ms: u32
) -> Result<bool, DeviceError>
unsafe fn wait( &self, fence: &Fence, wait_value: u64, timeout_ms: u32 ) -> Result<bool, DeviceError>
Calling wait with a lower value than the current fence value will immediately return.
unsafe fn start_capture(&self) -> bool
unsafe fn stop_capture(&self)
unsafe fn create_acceleration_structure( &self, _desc: &AccelerationStructureDescriptor<'_> ) -> Result<(), DeviceError>
unsafe fn get_acceleration_structure_build_sizes<'a>( &self, _desc: &GetAccelerationStructureBuildSizesDescriptor<'a, Api> ) -> AccelerationStructureBuildSizes
unsafe fn get_acceleration_structure_device_address( &self, _acceleration_structure: &() ) -> u64
unsafe fn destroy_acceleration_structure(&self, _acceleration_structure: ())
source§impl HalApi for Api
impl HalApi for Api
const VARIANT: Backend = Backend::Gl
fn create_instance_from_hal( name: &str, hal_instance: <Api as Api>::Instance ) -> Instance
fn instance_as_hal(instance: &Instance) -> Option<&<Api as Api>::Instance>
fn hub<G>(global: &Global<G>) -> &Hub<Api>where
G: GlobalIdentityHandlerFactory,
fn get_surface(surface: &Surface) -> Option<&HalSurface<Api>>
source§impl Queue<Api> for Queue
impl Queue<Api> for Queue
source§unsafe fn submit(
&self,
command_buffers: &[&CommandBuffer],
signal_fence: Option<(&mut Fence, u64)>
) -> Result<(), DeviceError>
unsafe fn submit( &self, command_buffers: &[&CommandBuffer], signal_fence: Option<(&mut Fence, u64)> ) -> Result<(), DeviceError>
Submits the command buffers for execution on GPU. Read more
unsafe fn present( &self, surface: &Surface, texture: Texture ) -> Result<(), SurfaceError>
unsafe fn get_timestamp_period(&self) -> f32
Auto Trait Implementations§
impl RefUnwindSafe for Api
impl Send for Api
impl Sync for Api
impl Unpin for Api
impl UnwindSafe for Api
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more