pub struct RenderInstance(pub Instance);
Expand description

The GPU instance is used to initialize the RenderQueue and RenderDevice, as well as to create WindowSurfaces.

Tuple Fields§

§0: Instance

Methods from Deref<Target = Instance>§

pub unsafe fn as_hal<A>(&self) -> Option<&<A as Api>::Instance>where A: HalApi,

Return a reference to a specific backend instance, if available.

If this Instance has a wgpu-hal Instance for backend A, return a reference to it. Otherwise, return None.

Safety
  • The raw instance handle returned must not be manually destroyed.

pub fn enumerate_adapters( &self, backends: Backends ) -> impl Iterator<Item = Adapter>

Retrieves all available [Adapter]s that match the given Backends.

Arguments
  • backends - Backends from which to enumerate adapters.

pub fn request_adapter( &self, options: &RequestAdapterOptions<&Surface> ) -> impl Future<Output = Option<Adapter>> + Send

Retrieves an [Adapter] which matches the given [RequestAdapterOptions].

Some options are “soft”, so treated as non-mandatory. Others are “hard”.

If no adapters are found that suffice all the “hard” options, None is returned.

pub unsafe fn create_adapter_from_hal<A>( &self, hal_adapter: ExposedAdapter<A> ) -> Adapterwhere A: HalApi,

Converts a wgpu-hal ExposedAdapter to a wgpu [Adapter].

Safety

hal_adapter must be created from this instance internal handle.

pub unsafe fn create_surface<W>( &self, window: &W ) -> Result<Surface, CreateSurfaceError>where W: HasRawWindowHandle + HasRawDisplayHandle,

Creates a surface from a raw window handle.

If the specified display and window handle are not supported by any of the backends, then the surface will not be supported by any adapters.

Safety
  • raw_window_handle must be a valid object to create a surface upon.
  • raw_window_handle must remain valid until after the returned [Surface] is dropped.
Errors
  • On WebGL2: Will return an error if the browser does not support WebGL2, or declines to provide GPU access (such as due to a resource shortage).
Panics
  • On macOS/Metal: will panic if not called on the main thread.
  • On web: will panic if the raw_window_handle does not properly refer to a canvas element.

pub unsafe fn create_surface_from_visual(&self, visual: *mut c_void) -> Surface

Creates a surface from IDCompositionVisual.

Safety
  • visual must be a valid IDCompositionVisual to create a surface upon.

pub unsafe fn create_surface_from_surface_handle( &self, surface_handle: *mut c_void ) -> Surface

Creates a surface from SurfaceHandle.

Safety
  • surface_handle must be a valid SurfaceHandle to create a surface upon.

pub fn poll_all(&self, force_wait: bool) -> bool

Polls all devices.

If force_wait is true and this is not running on the web, then this function will block until all in-flight buffers have been mapped and all submitted commands have finished execution.

Return true if all devices’ queues are empty, or false if there are queue submissions still in flight. (Note that, unless access to all Queues associated with this [Instance] is coordinated somehow, this information could be out of date by the time the caller receives it. Queues can be shared between threads, and other threads could submit new work at any time.)

On the web, this is a no-op. Devices are automatically polled.

pub fn generate_report(&self) -> GlobalReport

Generates memory report.

Trait Implementations§

§

impl Deref for RenderInstance

§

type Target = Instance

The resulting type after dereferencing.
§

fn deref(&self) -> &<RenderInstance as Deref>::Target

Dereferences the value.
§

impl DerefMut for RenderInstance

§

fn deref_mut(&mut self) -> &mut <RenderInstance as Deref>::Target

Mutably dereferences the value.
§

impl Resource for RenderInstancewhere RenderInstance: Send + Sync + 'static,

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,

§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · 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

§

impl<T> Downcast for Twhere T: Any,

§

fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>

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 + 'static>

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 Twhere T: Any + Send + Sync,

§

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

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

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

source§

impl<T> Instrument for T

source§

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

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

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 Twhere U: From<T>,

const: unstable · 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, U> ToSample<U> for Twhere U: FromSample<T>,

§

fn to_sample_(self) -> U

source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · 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>

source§

impl<T> WithSubscriber for T

source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<S, T> Duplex<S> for Twhere T: FromSample<S> + ToSample<S>,

§

impl<T> Event for Twhere T: Send + Sync + 'static,