Files
phy/wgpu/struct.Instance.html
Orion Kindel 0ce894e6b0 doc
2025-03-18 10:30:23 -05:00

129 lines
44 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Context for all other wgpu objects. Instance of wgpu."><title>Instance in wgpu - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-42caa33d.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="wgpu" data-themes="" data-resource-suffix="" data-rustdoc-version="1.84.0 (9fc6b4312 2025-01-07)" data-channel="1.84.0" data-search-js="search-92e6798f.js" data-settings-js="settings-0f613d39.js" ><script src="../static.files/storage-59e33391.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-5f194d8c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-893ab5e7.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-6580c154.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button><a class="logo-container" href="../wgpu/index.html"><img src="https://raw.githubusercontent.com/gfx-rs/wgpu/trunk/logo.png" alt=""></a></nav><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="../wgpu/index.html"><img src="https://raw.githubusercontent.com/gfx-rs/wgpu/trunk/logo.png" alt="logo"></a><h2><a href="../wgpu/index.html">wgpu</a><span class="version">23.0.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Instance</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.as_hal" title="as_hal">as_hal</a></li><li><a href="#method.create_adapter_from_hal" title="create_adapter_from_hal">create_adapter_from_hal</a></li><li><a href="#method.create_surface" title="create_surface">create_surface</a></li><li><a href="#method.create_surface_unsafe" title="create_surface_unsafe">create_surface_unsafe</a></li><li><a href="#method.enabled_backend_features" title="enabled_backend_features">enabled_backend_features</a></li><li><a href="#method.enumerate_adapters" title="enumerate_adapters">enumerate_adapters</a></li><li><a href="#method.from_core" title="from_core">from_core</a></li><li><a href="#method.from_hal" title="from_hal">from_hal</a></li><li><a href="#method.generate_report" title="generate_report">generate_report</a></li><li><a href="#method.new" title="new">new</a></li><li><a href="#method.poll_all" title="poll_all">poll_all</a></li><li><a href="#method.request_adapter" title="request_adapter">request_adapter</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Debug-for-Instance" title="Debug">Debug</a></li><li><a href="#impl-Default-for-Instance" title="Default">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-Instance" title="!RefUnwindSafe">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-Instance" title="!UnwindSafe">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-Instance" title="Freeze">Freeze</a></li><li><a href="#impl-Send-for-Instance" title="Send">Send</a></li><li><a href="#impl-Sync-for-Instance" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-Instance" title="Unpin">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-Downcast%3CT%3E-for-T" title="Downcast&#60;T&#62;">Downcast&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li><li><a href="#impl-Upcast%3CT%3E-for-T" title="Upcast&#60;T&#62;">Upcast&#60;T&#62;</a></li><li><a href="#impl-WasmNotSend-for-T" title="WasmNotSend">WasmNotSend</a></li><li><a href="#impl-WasmNotSendSync-for-T" title="WasmNotSendSync">WasmNotSendSync</a></li><li><a href="#impl-WasmNotSync-for-T" title="WasmNotSync">WasmNotSync</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate wgpu</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="index.html">wgpu</a></span><h1>Struct <span class="struct">Instance</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/wgpu/api/instance.rs.html#16-18">Source</a> </span></div><pre class="rust item-decl"><code>pub struct Instance { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Context for all other wgpu objects. Instance of wgpu.</p>
<p>This is the first thing you create when using wgpu.
Its primary use is to create <a href="struct.Adapter.html" title="struct wgpu::Adapter"><code>Adapter</code></a>s and <a href="struct.Surface.html" title="struct wgpu::Surface"><code>Surface</code></a>s.</p>
<p>Does not have to be kept alive.</p>
<p>Corresponds to <a href="https://gpuweb.github.io/gpuweb/#gpu-interface">WebGPU <code>GPU</code></a>.</p>
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Instance" class="impl"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#36-396">Source</a><a href="#impl-Instance" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Instance.html" title="struct wgpu::Instance">Instance</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.enabled_backend_features" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#48-86">Source</a><h4 class="code-header">pub const fn <a href="#method.enabled_backend_features" class="fn">enabled_backend_features</a>() -&gt; <a class="struct" href="struct.Backends.html" title="struct wgpu::Backends">Backends</a></h4></section></summary><div class="docblock"><p>Returns which backends can be picked for the current build configuration.</p>
<p>The returned set depends on a combination of target platform and enabled features.
This does <em>not</em> do any runtime checks and is exclusively based on compile time information.</p>
<p><code>InstanceDescriptor::backends</code> does not need to be a subset of this,
but any backend that is not in this set, will not be picked.</p>
<p>TODO: Right now its otherwise not possible yet to opt-out of all features on some platforms.
See <a href="https://github.com/gfx-rs/wgpu/issues/3514">https://github.com/gfx-rs/wgpu/issues/3514</a></p>
<ul>
<li>Windows/Linux/Android: always enables Vulkan and GLES with no way to opt out</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#114-147">Source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(_instance_desc: <a class="struct" href="struct.InstanceDescriptor.html" title="struct wgpu::InstanceDescriptor">InstanceDescriptor</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Create an new instance of wgpu.</p>
<h5 id="arguments"><a class="doc-anchor" href="#arguments">§</a>Arguments</h5>
<ul>
<li>
<p><code>instance_desc</code> - Has fields for which <a href="struct.Backends.html" title="struct wgpu::Backends">backends</a> wgpu will choose
during instantiation, and which <a href="enum.Dx12Compiler.html" title="enum wgpu::Dx12Compiler">DX12 shader compiler</a> wgpu will use.</p>
<p><a href="struct.Backends.html#associatedconstant.BROWSER_WEBGPU" title="associated constant wgpu::Backends::BROWSER_WEBGPU"><code>Backends::BROWSER_WEBGPU</code></a> takes a special role:
If it is set and a <a href="https://developer.mozilla.org/en-US/docs/Web/API/Navigator/gpu"><code>navigator.gpu</code></a>
object is present, this instance will <em>only</em> be able to create WebGPU adapters.</p>
<p>⚠️ On some browsers this check is insufficient to determine whether WebGPU is supported,
as the browser may define the <code>navigator.gpu</code> object, but be unable to create any WebGPU adapters.
For targeting <em>both</em> WebGPU &amp; WebGL is recommended to use <a href="util/fn.new_instance_with_webgpu_detection.html" title="fn wgpu::util::new_instance_with_webgpu_detection"><code>crate::util::new_instance_with_webgpu_detection</code></a>.</p>
<p>If you instead want to force use of WebGL, either disable the <code>webgpu</code> compile-time feature
or dont add the <a href="struct.Backends.html#associatedconstant.BROWSER_WEBGPU" title="associated constant wgpu::Backends::BROWSER_WEBGPU"><code>Backends::BROWSER_WEBGPU</code></a> flag to the the <code>instance_desc</code>s <code>backends</code> field.
If it is set and WebGPU support is <em>not</em> detected, the instance will use wgpu-core
to create adapters. Meaning that if the <code>webgl</code> feature is enabled, it is able to create
a WebGL adapter.</p>
</li>
</ul>
<h5 id="panics"><a class="doc-anchor" href="#panics">§</a>Panics</h5>
<p>If no backend feature for the active target platform is enabled,
this method will panic, see <a href="struct.Instance.html#method.enabled_backend_features" title="associated function wgpu::Instance::enabled_backend_features"><code>Instance::enabled_backend_features()</code></a>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.from_hal" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#159-165">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.from_hal" class="fn">from_hal</a>&lt;A: <a class="trait" href="../wgpu_core/hal_api/trait.HalApi.html" title="trait wgpu_core::hal_api::HalApi">HalApi</a>&gt;(hal_instance: A::<a class="associatedtype" href="../wgpu_hal/trait.Api.html#associatedtype.Instance" title="type wgpu_hal::Api::Instance">Instance</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Create an new instance of wgpu from a wgpu-hal instance.</p>
<h5 id="arguments-1"><a class="doc-anchor" href="#arguments-1">§</a>Arguments</h5>
<ul>
<li><code>hal_instance</code> - wgpu-hal instance.</li>
</ul>
<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
<p>Refer to the creation of wgpu-hal Instance for every backend.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_hal" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#178-184">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.as_hal" class="fn">as_hal</a>&lt;A: <a class="trait" href="../wgpu_core/hal_api/trait.HalApi.html" title="trait wgpu_core::hal_api::HalApi">HalApi</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;A::<a class="associatedtype" href="../wgpu_hal/trait.Api.html#associatedtype.Instance" title="type wgpu_hal::Api::Instance">Instance</a>&gt;</h4></section></summary><div class="docblock"><p>Return a reference to a specific backend instance, if available.</p>
<p>If this <code>Instance</code> has a wgpu-hal <a href="../wgpu_hal/trait.Api.html#associatedtype.Instance" title="associated type wgpu_hal::Api::Instance"><code>Instance</code></a> for backend
<code>A</code>, return a reference to it. Otherwise, return <code>None</code>.</p>
<h5 id="safety-1"><a class="doc-anchor" href="#safety-1">§</a>Safety</h5>
<ul>
<li>The raw instance handle returned must not be manually destroyed.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.from_core" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#196-202">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.from_core" class="fn">from_core</a>(core_instance: <a class="struct" href="../wgpu_core/instance/struct.Instance.html" title="struct wgpu_core::instance::Instance">Instance</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Create an new instance of wgpu from a wgpu-core instance.</p>
<h5 id="arguments-2"><a class="doc-anchor" href="#arguments-2">§</a>Arguments</h5>
<ul>
<li><code>core_instance</code> - wgpu-core instance.</li>
</ul>
<h5 id="safety-2"><a class="doc-anchor" href="#safety-2">§</a>Safety</h5>
<p>Refer to the creation of wgpu-core Instance.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.enumerate_adapters" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#210-225">Source</a><h4 class="code-header">pub fn <a href="#method.enumerate_adapters" class="fn">enumerate_adapters</a>(&amp;self, backends: <a class="struct" href="struct.Backends.html" title="struct wgpu::Backends">Backends</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Adapter.html" title="struct wgpu::Adapter">Adapter</a>&gt;</h4></section></summary><div class="docblock"><p>Retrieves all available <a href="struct.Adapter.html" title="struct wgpu::Adapter"><code>Adapter</code></a>s that match the given <a href="struct.Backends.html" title="struct wgpu::Backends"><code>Backends</code></a>.</p>
<h5 id="arguments-3"><a class="doc-anchor" href="#arguments-3">§</a>Arguments</h5>
<ul>
<li><code>backends</code> - Backends from which to enumerate adapters.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.request_adapter" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#234-241">Source</a><h4 class="code-header">pub fn <a href="#method.request_adapter" class="fn">request_adapter</a>(
&amp;self,
options: &amp;<a class="type" href="type.RequestAdapterOptions.html" title="type wgpu::RequestAdapterOptions">RequestAdapterOptions</a>&lt;'_, '_&gt;,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Adapter.html" title="struct wgpu::Adapter">Adapter</a>&gt;&gt; + <a class="trait" href="trait.WasmNotSend.html" title="trait wgpu::WasmNotSend">WasmNotSend</a></h4></section></summary><div class="docblock"><p>Retrieves an <a href="struct.Adapter.html" title="struct wgpu::Adapter"><code>Adapter</code></a> which matches the given <a href="type.RequestAdapterOptions.html" title="type wgpu::RequestAdapterOptions"><code>RequestAdapterOptions</code></a>.</p>
<p>Some options are “soft”, so treated as non-mandatory. Others are “hard”.</p>
<p>If no adapters are found that suffice all the “hard” options, <code>None</code> is returned.</p>
<p>A <code>compatible_surface</code> is required when targeting WebGL2.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.create_adapter_from_hal" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#249-265">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.create_adapter_from_hal" class="fn">create_adapter_from_hal</a>&lt;A: <a class="trait" href="../wgpu_core/hal_api/trait.HalApi.html" title="trait wgpu_core::hal_api::HalApi">HalApi</a>&gt;(
&amp;self,
hal_adapter: <a class="struct" href="../wgpu_hal/struct.ExposedAdapter.html" title="struct wgpu_hal::ExposedAdapter">ExposedAdapter</a>&lt;A&gt;,
) -&gt; <a class="struct" href="struct.Adapter.html" title="struct wgpu::Adapter">Adapter</a></h4></section></summary><div class="docblock"><p>Converts a wgpu-hal <code>ExposedAdapter</code> to a wgpu <a href="struct.Adapter.html" title="struct wgpu::Adapter"><code>Adapter</code></a>.</p>
<h5 id="safety-3"><a class="doc-anchor" href="#safety-3">§</a>Safety</h5>
<p><code>hal_adapter</code> must be created from this instance internal handle.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.create_surface" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#276-339">Source</a><h4 class="code-header">pub fn <a href="#method.create_surface" class="fn">create_surface</a>&lt;'window&gt;(
&amp;self,
target: impl <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="enum" href="enum.SurfaceTarget.html" title="enum wgpu::SurfaceTarget">SurfaceTarget</a>&lt;'window&gt;&gt;,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.Surface.html" title="struct wgpu::Surface">Surface</a>&lt;'window&gt;, <a class="struct" href="struct.CreateSurfaceError.html" title="struct wgpu::CreateSurfaceError">CreateSurfaceError</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a new surface targeting a given window/canvas/surface/etc..</p>
<p>Internally, this creates surfaces for all backends that are enabled for this instance.</p>
<p>See <a href="enum.SurfaceTarget.html" title="enum wgpu::SurfaceTarget"><code>SurfaceTarget</code></a> for what targets are supported.
See <a href="struct.Instance.html#method.create_surface_unsafe" title="method wgpu::Instance::create_surface_unsafe"><code>Instance::create_surface_unsafe</code></a> for surface creation with unsafe target variants.</p>
<p>Most commonly used are window handles (or provider of windows handles)
which can be passed directly as theyre automatically converted to <a href="enum.SurfaceTarget.html" title="enum wgpu::SurfaceTarget"><code>SurfaceTarget</code></a>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.create_surface_unsafe" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#351-363">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.create_surface_unsafe" class="fn">create_surface_unsafe</a>&lt;'window&gt;(
&amp;self,
target: <a class="enum" href="enum.SurfaceTargetUnsafe.html" title="enum wgpu::SurfaceTargetUnsafe">SurfaceTargetUnsafe</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.Surface.html" title="struct wgpu::Surface">Surface</a>&lt;'window&gt;, <a class="struct" href="struct.CreateSurfaceError.html" title="struct wgpu::CreateSurfaceError">CreateSurfaceError</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a new surface targeting a given window/canvas/surface/etc. using an unsafe target.</p>
<p>Internally, this creates surfaces for all backends that are enabled for this instance.</p>
<p>See <a href="enum.SurfaceTargetUnsafe.html" title="enum wgpu::SurfaceTargetUnsafe"><code>SurfaceTargetUnsafe</code></a> for what targets are supported.
See <a href="struct.Instance.html#method.create_surface" title="method wgpu::Instance::create_surface"><code>Instance::create_surface</code></a> for surface creation with safe target variants.</p>
<h5 id="safety-4"><a class="doc-anchor" href="#safety-4">§</a>Safety</h5>
<ul>
<li>See respective <a href="enum.SurfaceTargetUnsafe.html" title="enum wgpu::SurfaceTargetUnsafe"><code>SurfaceTargetUnsafe</code></a> variants for safety requirements.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.poll_all" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#381-383">Source</a><h4 class="code-header">pub fn <a href="#method.poll_all" class="fn">poll_all</a>(&amp;self, force_wait: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Polls all devices.</p>
<p>If <code>force_wait</code> 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.</p>
<p>Return <code>true</code> if all devices queues are empty, or <code>false</code> if there are
queue submissions still in flight. (Note that, unless access to all
<a href="struct.Queue.html" title="struct wgpu::Queue"><code>Queue</code>s</a> associated with this <a href="struct.Instance.html" title="struct wgpu::Instance"><code>Instance</code></a> is coordinated somehow,
this information could be out of date by the time the caller receives
it. <code>Queue</code>s can be shared between threads, and other threads could
submit new work at any time.)</p>
<p>On the web, this is a no-op. <code>Device</code>s are automatically polled.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.generate_report" class="method"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#390-395">Source</a><h4 class="code-header">pub fn <a href="#method.generate_report" class="fn">generate_report</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../wgpu_core/global/struct.GlobalReport.html" title="struct wgpu_core::global::GlobalReport">GlobalReport</a>&gt;</h4></section></summary><div class="docblock"><p>Generates memory report.</p>
<p>Returns <code>None</code> if the feature is not supported by the backend
which happens only when WebGPU is pre-selected by the instance creation.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Instance" class="impl"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#15">Source</a><a href="#impl-Debug-for-Instance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Instance.html" title="struct wgpu::Instance">Instance</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#15">Source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/1.84.0/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-Instance" class="impl"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#22-34">Source</a><a href="#impl-Default-for-Instance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Instance.html" title="struct wgpu::Instance">Instance</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/wgpu/api/instance.rs.html#31-33">Source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new instance of wgpu with default options.</p>
<p>Backends are set to <code>Backends::all()</code>, and FXC is chosen as the <code>dx12_shader_compiler</code>.</p>
<h5 id="panics-1"><a class="doc-anchor" href="#panics-1">§</a>Panics</h5>
<p>If no backend feature for the active target platform is enabled,
this method will panic, see <a href="struct.Instance.html#method.enabled_backend_features" title="associated function wgpu::Instance::enabled_backend_features"><code>Instance::enabled_backend_features()</code></a>.</p>
</div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Instance" class="impl"><a href="#impl-Freeze-for-Instance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Instance.html" title="struct wgpu::Instance">Instance</a></h3></section><section id="impl-RefUnwindSafe-for-Instance" class="impl"><a href="#impl-RefUnwindSafe-for-Instance" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Instance.html" title="struct wgpu::Instance">Instance</a></h3></section><section id="impl-Send-for-Instance" class="impl"><a href="#impl-Send-for-Instance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Instance.html" title="struct wgpu::Instance">Instance</a></h3></section><section id="impl-Sync-for-Instance" class="impl"><a href="#impl-Sync-for-Instance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Instance.html" title="struct wgpu::Instance">Instance</a></h3></section><section id="impl-Unpin-for-Instance" class="impl"><a href="#impl-Unpin-for-Instance" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Instance.html" title="struct wgpu::Instance">Instance</a></h3></section><section id="impl-UnwindSafe-for-Instance" class="impl"><a href="#impl-UnwindSafe-for-Instance" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Instance.html" title="struct wgpu::Instance">Instance</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/any.rs.html#139">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#209">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#211">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#217">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#218">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Downcast%3CT%3E-for-T" class="impl"><a class="src rightside" href="../src/khronos_egl/lib.rs.html#148">Source</a><a href="#impl-Downcast%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="../khronos_egl/trait.Downcast.html" title="trait khronos_egl::Downcast">Downcast</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><section id="method.downcast" class="method trait-impl"><a class="src rightside" href="../src/khronos_egl/lib.rs.html#149">Source</a><a href="#method.downcast" class="anchor">§</a><h4 class="code-header">fn <a href="../khronos_egl/trait.Downcast.html#tymethod.downcast" class="fn">downcast</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;T</a></h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#765">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#768">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#748-750">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#758">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#805-807">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#809">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#812">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#790-792">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#794">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#797">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Upcast%3CT%3E-for-T" class="impl"><a class="src rightside" href="../src/khronos_egl/lib.rs.html#158">Source</a><a href="#impl-Upcast%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="../khronos_egl/trait.Upcast.html" title="trait khronos_egl::Upcast">Upcast</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><section id="method.upcast" class="method trait-impl"><a class="src rightside" href="../src/khronos_egl/lib.rs.html#159">Source</a><a href="#method.upcast" class="anchor">§</a><h4 class="code-header">fn <a href="../khronos_egl/trait.Upcast.html#tymethod.upcast" class="fn">upcast</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;T</a>&gt;</h4></section></div></details><section id="impl-WasmNotSend-for-T" class="impl"><a class="src rightside" href="../src/wgpu_types/lib.rs.html#7477">Source</a><a href="#impl-WasmNotSend-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.WasmNotSend.html" title="trait wgpu::WasmNotSend">WasmNotSend</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</div></h3></section><section id="impl-WasmNotSendSync-for-T" class="impl"><a class="src rightside" href="../src/wgpu_types/lib.rs.html#7461">Source</a><a href="#impl-WasmNotSendSync-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.WasmNotSendSync.html" title="trait wgpu::WasmNotSendSync">WasmNotSendSync</a> for T<div class="where">where
T: <a class="trait" href="trait.WasmNotSend.html" title="trait wgpu::WasmNotSend">WasmNotSend</a> + <a class="trait" href="trait.WasmNotSync.html" title="trait wgpu::WasmNotSync">WasmNotSync</a>,</div></h3></section><section id="impl-WasmNotSync-for-T" class="impl"><a class="src rightside" href="../src/wgpu_types/lib.rs.html#7510">Source</a><a href="#impl-WasmNotSync-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.WasmNotSync.html" title="trait wgpu::WasmNotSync">WasmNotSync</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</div></h3></section></div></section></div></main></body></html>