Struct rerun::external::eframe::egui_wgpu::wgpu::Adapter

pub struct Adapter {
    pub(crate) context: Arc<dyn DynContext>,
    pub(crate) id: ObjectId,
    pub(crate) data: Box<dyn Any + Sync + Send>,
}
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.

Fields§

§context: Arc<dyn DynContext>§id: ObjectId§data: Box<dyn Any + Sync + Send>

Implementations§

§

impl Adapter

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.

Per the WebGPU specification, an Adapter may only be used once to create a device. If another device is wanted, call Instance::request_adapter() again to get a fresh Adapter. However, wgpu does not currently enforce this restriction.

§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
  • request_device() was already called on this Adapter.
  • 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.

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.

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.

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

Returns whether this adapter may present to the passed surface.

pub fn features(&self) -> Features

The features which can be used to create devices on this adapter.

pub fn limits(&self) -> Limits

The best limits which can be used to create devices on this adapter.

pub fn get_info(&self) -> AdapterInfo

Get info about the adapter itself.

pub fn get_downlevel_capabilities(&self) -> DownlevelCapabilities

Get info about the adapter itself.

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.

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;
§

impl Adapter

pub fn global_id(&self) -> Id<Adapter>

Returns a globally-unique identifier for this Adapter.

Calling this method multiple times on the same object will always return the same value. The returned value is guaranteed to be different for all resources created from the same Instance.

Trait Implementations§

§

impl Debug for Adapter

§

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

Formats the value using the given formatter. Read more
§

impl Drop for Adapter

§

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> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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
source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

source§

fn lossy_into(self) -> Dst

Performs the conversion.
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
§

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> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
§

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

§

fn to<T>(self) -> T
where Self: Into<T>,

Converts to T by calling Into<T>::into.
§

fn try_to<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Tries to convert to T by calling TryInto<T>::try_into.
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.
source§

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> Upcast<T> for T

§

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

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
§

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

§

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

§

impl<T> WasmNotSendSync for T

§

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