Struct nannou_wgpu::Adapter

source ·
pub struct Adapter { /* private fields */ }
Expand description

Handle to a physical graphics and/or compute device.

Adapters can be used to open a connection to the corresponding Device on the host system by using Adapter::request_device.

Does not have to be kept alive.

Corresponds to WebGPU GPUAdapter.

Implementations§

source§

impl Adapter

source

pub fn request_device( &self, desc: &DeviceDescriptor<Option<&str>>, trace_path: Option<&Path> ) -> impl Future<Output = Result<(Device, Queue), RequestDeviceError>> + WasmNotSend

Requests a connection to a physical device, creating a logical device.

Returns the Device together with a Queue that executes command buffers.

Arguments
  • desc - Description of the features and limits requested from the given device.
  • trace_path - Can be used for API call tracing, if that feature is enabled in wgpu-core.
Panics
  • Features specified by desc are not supported by this adapter.
  • Unsafe features were requested but not enabled when requesting the adapter.
  • Limits requested exceed the values provided by the adapter.
  • Adapter does not support all features wgpu requires to safely operate.
source

pub unsafe fn create_device_from_hal<A>( &self, hal_device: OpenDevice<A>, desc: &DeviceDescriptor<Option<&str>>, trace_path: Option<&Path> ) -> Result<(Device, Queue), RequestDeviceError>
where A: HalApi,

Create a wgpu Device and Queue from a wgpu-hal OpenDevice

Safety
  • hal_device must be created from this adapter internal handle.
  • desc.features must be a subset of hal_device features.
source

pub unsafe fn as_hal<A, F, R>(&self, hal_adapter_callback: F) -> R
where A: HalApi, F: FnOnce(Option<&<A as Api>::Adapter>) -> R,

Apply a callback to this Adapter’s underlying backend adapter.

If this Adapter is implemented by the backend API given by A (Vulkan, Dx12, etc.), then apply hal_adapter_callback to Some(&adapter), where adapter is the underlying backend adapter type, A::Adapter.

If this Adapter uses a different backend, apply hal_adapter_callback to None.

The adapter is locked for reading while hal_adapter_callback runs. If the callback attempts to perform any wgpu operations that require write access to the adapter, deadlock will occur. The locks are automatically released when the callback returns.

Safety
  • The raw handle passed to the callback must not be manually destroyed.
source

pub fn is_surface_supported(&self, surface: &Surface) -> bool

Returns whether this adapter may present to the passed surface.

source

pub fn features(&self) -> Features

List all features that are supported with this adapter.

Features must be explicitly requested in Adapter::request_device in order to use them.

source

pub fn limits(&self) -> Limits

List the “best” limits that are supported by this adapter.

Limits must be explicitly requested in Adapter::request_device to set the values that you are allowed to use.

source

pub fn get_info(&self) -> AdapterInfo

Get info about the adapter itself.

source

pub fn get_downlevel_capabilities(&self) -> DownlevelCapabilities

Get info about the adapter itself.

source

pub fn get_texture_format_features( &self, format: TextureFormat ) -> TextureFormatFeatures

Returns the features supported for a given texture format by this adapter.

Note that the WebGPU spec further restricts the available usages/features. To disable these restrictions on a device, request the Features::TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES feature.

source

pub fn get_presentation_timestamp(&self) -> PresentationTimestamp

Generates a timestamp using the clock used by the presentation engine.

When comparing completely opaque timestamp systems, we need a way of generating timestamps that signal the exact same time. You can do this by calling your own timestamp function immediately after a call to this function. This should result in timestamps that are 0.5 to 5 microseconds apart. There are locks that must be taken during the call, so don’t call your function before.

use std::time::{Duration, Instant};
let presentation = adapter.get_presentation_timestamp();
let instant = Instant::now();

// We can now turn a new presentation timestamp into an Instant.
let some_pres_timestamp = some_code();
let duration = Duration::from_nanos((some_pres_timestamp.0 - presentation.0) as u64);
let new_instant: Instant = instant + duration;

Trait Implementations§

source§

impl Debug for Adapter

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Drop for Adapter

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSync for T
where T: Sync,