Skip to main content

Device

Trait Device 

Source
pub trait Device: Sized + 'static {
Show 36 associated items type Buffer: Debug; type Texture: Debug; type TextureView: Debug; type Sampler: Debug; type ShaderModule: Debug; type BindGroupLayout: Debug; type BindGroup: Debug; type Pipeline: Debug; type QuerySet: Debug; type Blas: Debug; type Tlas: Debug; type CommandEncoder: CommandEncoder<Self>; type Queue: Queue<Self>; type Surface: Surface<Self>; // Required methods fn open_async( desc: &DeviceDesc, window: Option<WindowTarget>, ) -> impl Future<Output = Result<Opened<Self>, GpuError>>; fn open_blocking( desc: &DeviceDesc, window: Option<WindowTarget>, ) -> Result<Opened<Self>, GpuError>; fn create_buffer(&self, desc: &BufferDesc) -> Result<Self::Buffer, GpuError>; fn create_texture( &self, desc: &TextureDesc, ) -> Result<Self::Texture, GpuError>; fn create_texture_view( &self, texture: &Self::Texture, desc: &TextureViewDesc, ) -> Self::TextureView; fn create_sampler(&self, desc: &SamplerDesc) -> Self::Sampler; fn create_shader_module( &self, desc: &ShaderModuleDesc<'_>, ) -> Result<Self::ShaderModule, GpuError>; fn create_bind_group_layout( &self, desc: &BindGroupLayoutDesc<'_>, ) -> Self::BindGroupLayout; fn create_bind_group( &self, desc: &BindGroupDesc<'_, Self>, ) -> Self::BindGroup; fn create_render_pipeline( &self, desc: &RenderPipelineDesc<'_, Self>, ) -> Result<Self::Pipeline, GpuError>; fn create_compute_pipeline( &self, desc: &ComputePipelineDesc<'_, Self>, ) -> Result<Self::Pipeline, GpuError>; fn create_command_encoder(&self) -> Self::CommandEncoder; fn create_timestamp_query_set( &self, count: u32, ) -> Result<Self::QuerySet, GpuError>; fn capabilities(&self) -> &Capabilities; // Provided methods fn check_errors(&self) -> Result<(), GpuError> { ... } fn resource_memory(&self) -> ResourceMemory { ... } fn ray_query_limits(&self) -> Result<RayQueryLimits, GpuError> { ... } fn create_blas(&self, _desc: &BlasDesc<'_>) -> Result<Self::Blas, GpuError> { ... } fn create_tlas(&self, _desc: &TlasDesc) -> Result<Self::Tlas, GpuError> { ... } fn set_tlas_instance( &self, _tlas: &mut Self::Tlas, _index: u32, _instance: Option<TlasInstance<'_, Self>>, ) -> Result<(), GpuError> { ... } fn create_ray_query_bind_group_layout( &self, _desc: &RayQueryBindGroupLayoutDesc<'_>, ) -> Result<Self::BindGroupLayout, GpuError> { ... } fn create_ray_query_bind_group( &self, _desc: &RayQueryBindGroupDesc<'_, Self>, ) -> Result<Self::BindGroup, GpuError> { ... }
}
Expand description

A GPU device: resource creation and capability report.

Everything created here is created at load and reused; the trait offers no per-frame conveniences by design.

Required Associated Types§

Source

type Buffer: Debug

GPU buffer.

Source

type Texture: Debug

GPU texture.

Source

type TextureView: Debug

View over a texture, bindable or attachable.

Source

type Sampler: Debug

Texture sampler.

Source

type ShaderModule: Debug

Compiled shader module.

Source

type BindGroupLayout: Debug

Bind-group layout.

Source

type BindGroup: Debug

Bind group.

Source

type Pipeline: Debug

Render or compute pipeline.

Source

type QuerySet: Debug

Timestamp or occlusion query storage.

Source

type Blas: Debug

Bottom-level acceleration structure. Portable devices may use a zero-sized placeholder and return a capability error from every ray-query operation.

Source

type Tlas: Debug

Top-level acceleration structure. Portable devices may use a zero-sized placeholder and return a capability error from every ray-query operation.

Source

type CommandEncoder: CommandEncoder<Self>

Command encoder.

Source

type Queue: Queue<Self>

Submission queue.

Source

type Surface: Surface<Self>

Presentation surface.

Required Methods§

Source

fn open_async( desc: &DeviceDesc, window: Option<WindowTarget>, ) -> impl Future<Output = Result<Opened<Self>, GpuError>>

Selects an adapter and asynchronously opens a device, with a surface when a window is supplied.

§Errors

No compatible adapter, or device creation failed.

Source

fn open_blocking( desc: &DeviceDesc, window: Option<WindowTarget>, ) -> Result<Opened<Self>, GpuError>

Native convenience for callers that do not already run an async executor. Browser builds expose only asynchronous device opening.

§Errors

No compatible adapter, or device creation failed.

Source

fn create_buffer(&self, desc: &BufferDesc) -> Result<Self::Buffer, GpuError>

Creates a buffer.

§Errors

The buffer exceeded device limits.

Source

fn create_texture(&self, desc: &TextureDesc) -> Result<Self::Texture, GpuError>

Creates a 2-D texture.

§Errors

The texture exceeded device limits.

Source

fn create_texture_view( &self, texture: &Self::Texture, desc: &TextureViewDesc, ) -> Self::TextureView

Creates a view over a texture.

Source

fn create_sampler(&self, desc: &SamplerDesc) -> Self::Sampler

Creates a sampler.

Source

fn create_shader_module( &self, desc: &ShaderModuleDesc<'_>, ) -> Result<Self::ShaderModule, GpuError>

Compiles a WGSL shader module.

§Errors

Compilation failed; the error carries the backend’s detail.

Source

fn create_bind_group_layout( &self, desc: &BindGroupLayoutDesc<'_>, ) -> Self::BindGroupLayout

Creates a bind-group layout.

Source

fn create_bind_group(&self, desc: &BindGroupDesc<'_, Self>) -> Self::BindGroup

Creates a bind group over a layout.

Source

fn create_render_pipeline( &self, desc: &RenderPipelineDesc<'_, Self>, ) -> Result<Self::Pipeline, GpuError>

Creates a render pipeline. Created at load, cached by the caller.

§Errors

Pipeline creation failed (most often shader/interface mismatch).

Source

fn create_compute_pipeline( &self, desc: &ComputePipelineDesc<'_, Self>, ) -> Result<Self::Pipeline, GpuError>

Creates a compute pipeline.

§Errors

Pipeline creation failed.

Source

fn create_command_encoder(&self) -> Self::CommandEncoder

Creates a command encoder for one frame or task.

Source

fn create_timestamp_query_set( &self, count: u32, ) -> Result<Self::QuerySet, GpuError>

Creates a timestamp query set when the capability is available.

§Errors

Returns a capability error when timestamp queries are unavailable.

Source

fn capabilities(&self) -> &Capabilities

The opened device’s capability report.

Provided Methods§

Source

fn check_errors(&self) -> Result<(), GpuError>

Reports asynchronous backend failures observed since the last check.

§Errors

Returns the first pending runtime diagnostic or a sticky device loss.

Source

fn resource_memory(&self) -> ResourceMemory

Returns live physical resource accounting when the backend supports it.

Source

fn ray_query_limits(&self) -> Result<RayQueryLimits, GpuError>

Returns negotiated acceleration-structure ceilings.

§Errors

Returns a capability error when ray queries were not negotiated.

Source

fn create_blas(&self, _desc: &BlasDesc<'_>) -> Result<Self::Blas, GpuError>

Allocates a BLAS with fixed geometry ceilings.

§Errors

Returns capability, size or backend allocation failures.

Source

fn create_tlas(&self, _desc: &TlasDesc) -> Result<Self::Tlas, GpuError>

Allocates a TLAS with a fixed instance ceiling.

§Errors

Returns capability, size or backend allocation failures.

Source

fn set_tlas_instance( &self, _tlas: &mut Self::Tlas, _index: u32, _instance: Option<TlasInstance<'_, Self>>, ) -> Result<(), GpuError>

Replaces or clears one TLAS instance.

§Errors

Returns a capability error or an out-of-range instance failure.

Source

fn create_ray_query_bind_group_layout( &self, _desc: &RayQueryBindGroupLayoutDesc<'_>, ) -> Result<Self::BindGroupLayout, GpuError>

Creates a layout containing acceleration-structure slots.

§Errors

Returns a capability or backend layout failure.

Source

fn create_ray_query_bind_group( &self, _desc: &RayQueryBindGroupDesc<'_, Self>, ) -> Result<Self::BindGroup, GpuError>

Creates a bind group containing TLAS resources.

§Errors

Returns a capability or backend binding failure.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§