pub struct Instance { /* private fields */ }
wgpu
only.Expand description
Context for all other wgpu objects. Instance of wgpu.
This is the first thing you create when using wgpu.
Its primary use is to create Adapter
s and Surface
s.
Does not have to be kept alive.
Corresponds to WebGPU GPU
.
Implementations§
§impl Instance
impl Instance
pub const fn any_backend_feature_enabled() -> bool
pub const fn any_backend_feature_enabled() -> bool
Returns true
if any backend feature is enabled for the current build configuration.
Which feature makes this method return true depends on the target platform:
- MacOS/iOS:
metal
,vulkan-portability
orangle
- Wasm32:
webgpu
,webgl
or Emscripten target. - All other: Always returns true
TODO: Right now it’s otherwise not possible yet to opt-out of all features on most platforms. See https://github.com/gfx-rs/wgpu/issues/3514
- Windows: always enables Vulkan and GLES with no way to opt out
- Linux: always enables Vulkan and GLES with no way to opt out
pub fn new(_instance_desc: InstanceDescriptor) -> Instance
pub fn new(_instance_desc: InstanceDescriptor) -> Instance
Create an new instance of wgpu.
Arguments
-
instance_desc
- Has fields for which backends wgpu will choose during instantiation, and which DX12 shader compiler wgpu will use.Backends::BROWSER_WEBGPU
takes a special role: If it is set and WebGPU support is detected, this instance will only be able to create WebGPU adapters. If you instead want to force use of WebGL, either disable thewebgpu
compile-time feature or do add theBackends::BROWSER_WEBGPU
flag to the theinstance_desc
’sbackends
field. If it is set and WebGPU support is not detected, the instance will use wgpu-core to create adapters. Meaning that if thewebgl
feature is enabled, it is able to create a WebGL adapter.
Panics
If no backend feature for the active target platform is enabled,
this method will panic, see Instance::any_backend_feature_enabled()
.
pub unsafe fn from_hal<A>(hal_instance: <A as Api>::Instance) -> Instancewhere
A: HalApi,
Available on wgpu_core
only.
pub unsafe fn from_hal<A>(hal_instance: <A as Api>::Instance) -> Instancewhere
A: HalApi,
wgpu_core
only.pub unsafe fn as_hal<A>(&self) -> Option<&<A as Api>::Instance>where
A: HalApi,
Available on wgpu_core
only.
pub unsafe fn as_hal<A>(&self) -> Option<&<A as Api>::Instance>where
A: HalApi,
wgpu_core
only.pub fn enumerate_adapters(&self, backends: Backends) -> Vec<Adapter>
Available on wgpu_core
only.
pub fn enumerate_adapters(&self, backends: Backends) -> Vec<Adapter>
wgpu_core
only.pub fn request_adapter(
&self,
options: &RequestAdapterOptions<&Surface<'_>>
) -> impl Future<Output = Option<Adapter>> + WasmNotSend
pub fn request_adapter( &self, options: &RequestAdapterOptions<&Surface<'_>> ) -> impl Future<Output = Option<Adapter>> + WasmNotSend
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,
Available on wgpu_core
only.
pub unsafe fn create_adapter_from_hal<A>(
&self,
hal_adapter: ExposedAdapter<A>
) -> Adapterwhere
A: HalApi,
wgpu_core
only.pub fn create_surface<'window>(
&self,
target: impl Into<SurfaceTarget<'window>>
) -> Result<Surface<'window>, CreateSurfaceError>
pub fn create_surface<'window>( &self, target: impl Into<SurfaceTarget<'window>> ) -> Result<Surface<'window>, CreateSurfaceError>
Creates a new surface targeting a given window/canvas/surface/etc..
See SurfaceTarget
for what targets are supported.
See Instance::create_surface_unsafe
for surface creation with unsafe target variants.
Most commonly used are window handles (or provider of windows handles)
which can be passed directly as they’re automatically converted to SurfaceTarget
.
pub unsafe fn create_surface_unsafe<'window>(
&self,
target: SurfaceTargetUnsafe
) -> Result<Surface<'window>, CreateSurfaceError>
pub unsafe fn create_surface_unsafe<'window>( &self, target: SurfaceTargetUnsafe ) -> Result<Surface<'window>, CreateSurfaceError>
Creates a new surface targeting a given window/canvas/surface/etc. using an unsafe target.
See SurfaceTargetUnsafe
for what targets are supported.
See Instance::create_surface
for surface creation with safe target variants.
Safety
- See respective
SurfaceTargetUnsafe
variants for safety requirements.
pub fn poll_all(&self, force_wait: bool) -> bool
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
Queue
s associated with this Instance
is coordinated somehow,
this information could be out of date by the time the caller receives
it. Queue
s can be shared between threads, and other threads could
submit new work at any time.)
On the web, this is a no-op. Device
s are automatically polled.
pub fn generate_report(&self) -> Option<GlobalReport>
Available on wgpu_core
only.
pub fn generate_report(&self) -> Option<GlobalReport>
wgpu_core
only.Generates memory report.
Returns None
if the feature is not supported by the backend
which happens only when WebGPU is pre-selected by the instance creation.
Trait Implementations§
§impl Default for Instance
impl Default for Instance
§fn default() -> Instance
fn default() -> Instance
Creates a new instance of wgpu with default options.
Backends are set to Backends::all()
, and FXC is chosen as the dx12_shader_compiler
.
Panics
If no backend feature for the active target platform is enabled,
this method will panic, see Instance::any_backend_feature_enabled()
.
Auto Trait Implementations§
impl !RefUnwindSafe for Instance
impl Send for Instance
impl Sync for Instance
impl Unpin for Instance
impl !UnwindSafe for Instance
Blanket Implementations§
source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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
source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters
when converting.source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar> ) -> T
self
into C
, using the provided parameters.source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
impl<T> DowncastSync for T
source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle
.source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other
into Self
, while performing the appropriate scaling,
rounding and clamping.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
source§fn into_angle(self) -> U
fn into_angle(self) -> U
T
.source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters
when converting.source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar> ) -> T
self
into C
, using the provided parameters.source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
source§fn into_color(self) -> U
fn into_color(self) -> U
source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moresource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self
into T
, while performing the appropriate scaling,
rounding and clamping.§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors
fails to cast.source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds
error is returned which contains
the unclamped color. Read more