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

332 lines
79 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="In-progress recording of a render pass: a list of render commands in a `CommandEncoder`."><title>RenderPass 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="#">Render<wbr>Pass</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.begin_occlusion_query" title="begin_occlusion_query">begin_occlusion_query</a></li><li><a href="#method.begin_pipeline_statistics_query" title="begin_pipeline_statistics_query">begin_pipeline_statistics_query</a></li><li><a href="#method.draw" title="draw">draw</a></li><li><a href="#method.draw_indexed" title="draw_indexed">draw_indexed</a></li><li><a href="#method.draw_indexed_indirect" title="draw_indexed_indirect">draw_indexed_indirect</a></li><li><a href="#method.draw_indirect" title="draw_indirect">draw_indirect</a></li><li><a href="#method.end_occlusion_query" title="end_occlusion_query">end_occlusion_query</a></li><li><a href="#method.end_pipeline_statistics_query" title="end_pipeline_statistics_query">end_pipeline_statistics_query</a></li><li><a href="#method.execute_bundles" title="execute_bundles">execute_bundles</a></li><li><a href="#method.forget_lifetime" title="forget_lifetime">forget_lifetime</a></li><li><a href="#method.insert_debug_marker" title="insert_debug_marker">insert_debug_marker</a></li><li><a href="#method.multi_draw_indexed_indirect" title="multi_draw_indexed_indirect">multi_draw_indexed_indirect</a></li><li><a href="#method.multi_draw_indexed_indirect_count" title="multi_draw_indexed_indirect_count">multi_draw_indexed_indirect_count</a></li><li><a href="#method.multi_draw_indirect" title="multi_draw_indirect">multi_draw_indirect</a></li><li><a href="#method.multi_draw_indirect_count" title="multi_draw_indirect_count">multi_draw_indirect_count</a></li><li><a href="#method.pop_debug_group" title="pop_debug_group">pop_debug_group</a></li><li><a href="#method.push_debug_group" title="push_debug_group">push_debug_group</a></li><li><a href="#method.set_bind_group" title="set_bind_group">set_bind_group</a></li><li><a href="#method.set_blend_constant" title="set_blend_constant">set_blend_constant</a></li><li><a href="#method.set_index_buffer" title="set_index_buffer">set_index_buffer</a></li><li><a href="#method.set_pipeline" title="set_pipeline">set_pipeline</a></li><li><a href="#method.set_push_constants" title="set_push_constants">set_push_constants</a></li><li><a href="#method.set_scissor_rect" title="set_scissor_rect">set_scissor_rect</a></li><li><a href="#method.set_stencil_reference" title="set_stencil_reference">set_stencil_reference</a></li><li><a href="#method.set_vertex_buffer" title="set_vertex_buffer">set_vertex_buffer</a></li><li><a href="#method.set_viewport" title="set_viewport">set_viewport</a></li><li><a href="#method.write_timestamp" title="write_timestamp">write_timestamp</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Debug-for-RenderPass%3C'encoder%3E" title="Debug">Debug</a></li><li><a href="#impl-RenderEncoder%3C'a%3E-for-RenderPass%3C'a%3E" title="RenderEncoder&#60;&#39;a&#62;">RenderEncoder&#60;&#39;a&#62;</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-RenderPass%3C'encoder%3E" title="!RefUnwindSafe">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-RenderPass%3C'encoder%3E" title="!UnwindSafe">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-RenderPass%3C'encoder%3E" title="Freeze">Freeze</a></li><li><a href="#impl-Send-for-RenderPass%3C'encoder%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-RenderPass%3C'encoder%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-RenderPass%3C'encoder%3E" 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">RenderPass</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/render_pass.rs.html#39-46">Source</a> </span></div><pre class="rust item-decl"><code>pub struct RenderPass&lt;'encoder&gt; { <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>In-progress recording of a render pass: a list of render commands in a <a href="struct.CommandEncoder.html" title="struct wgpu::CommandEncoder"><code>CommandEncoder</code></a>.</p>
<p>It can be created with <a href="struct.CommandEncoder.html#method.begin_render_pass" title="method wgpu::CommandEncoder::begin_render_pass"><code>CommandEncoder::begin_render_pass()</code></a>, whose <a href="struct.RenderPassDescriptor.html" title="struct wgpu::RenderPassDescriptor"><code>RenderPassDescriptor</code></a>
specifies the attachments (textures) that will be rendered to.</p>
<p>Most of the methods on <code>RenderPass</code> serve one of two purposes, identifiable by their names:</p>
<ul>
<li><code>draw_*()</code>: Drawing (that is, encoding a render command, which, when executed by the GPU, will
rasterize something and execute shaders).</li>
<li><code>set_*()</code>: Setting part of the <a href="https://gpuweb.github.io/gpuweb/#renderstate">render state</a>
for future drawing commands.</li>
</ul>
<p>A render pass may contain any number of drawing commands, and before/between each command the
render state may be updated however you wish; each drawing command will be executed using the
render state that has been set when the <code>draw_*()</code> function is called.</p>
<p>Corresponds to <a href="https://gpuweb.github.io/gpuweb/#render-pass-encoder">WebGPU <code>GPURenderPassEncoder</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-RenderPass%3C'encoder%3E" class="impl"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#48-357">Source</a><a href="#impl-RenderPass%3C'encoder%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <a class="struct" href="struct.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.forget_lifetime" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#61-66">Source</a><h4 class="code-header">pub fn <a href="#method.forget_lifetime" class="fn">forget_lifetime</a>(self) -&gt; <a class="struct" href="struct.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'static&gt;</h4></section></summary><div class="docblock"><p>Drops the lifetime relationship to the parent command encoder, making usage of
the encoder while this pass is recorded a run-time error instead.</p>
<p>Attention: As long as the render pass has not been ended, any mutating operation on the parent
command encoder will cause a run-time error and invalidate it!
By default, the lifetime constraint prevents this, but it can be useful
to handle this at run time, such as when storing the pass and encoder in the same
data structure.</p>
<p>This operation has no effect on pass recording.
Its a safe operation, since <a href="struct.CommandEncoder.html" title="struct wgpu::CommandEncoder"><code>CommandEncoder</code></a> is in a locked state as long as the pass is active
regardless of the lifetime constraint or its absence.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_bind_group" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#77-91">Source</a><h4 class="code-header">pub fn <a href="#method.set_bind_group" class="fn">set_bind_group</a>&lt;'a&gt;(
&amp;mut self,
index: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
bind_group: 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="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="struct" href="struct.BindGroup.html" title="struct wgpu::BindGroup">BindGroup</a>&gt;&gt;,
offsets: &amp;[<a class="type" href="type.DynamicOffset.html" title="type wgpu::DynamicOffset">DynamicOffset</a>],
)</h4></section></summary><div class="docblock"><p>Sets the active bind group for a given bind group index. The bind group layout
in the active pipeline when any <code>draw_*()</code> method is called must match the layout of
this bind group.</p>
<p>If the bind group have dynamic offsets, provide them in binding order.
These offsets have to be aligned to <a href="struct.Limits.html#structfield.min_uniform_buffer_offset_alignment" title="field wgpu::Limits::min_uniform_buffer_offset_alignment"><code>Limits::min_uniform_buffer_offset_alignment</code></a>
or <a href="struct.Limits.html#structfield.min_storage_buffer_offset_alignment" title="field wgpu::Limits::min_storage_buffer_offset_alignment"><code>Limits::min_storage_buffer_offset_alignment</code></a> appropriately.</p>
<p>Subsequent draw calls shader executions will be able to access data in these bind groups.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_pipeline" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#96-102">Source</a><h4 class="code-header">pub fn <a href="#method.set_pipeline" class="fn">set_pipeline</a>(&amp;mut self, pipeline: &amp;<a class="struct" href="struct.RenderPipeline.html" title="struct wgpu::RenderPipeline">RenderPipeline</a>)</h4></section></summary><div class="docblock"><p>Sets the active render pipeline.</p>
<p>Subsequent draw calls will exhibit the behavior defined by <code>pipeline</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_blend_constant" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#109-115">Source</a><h4 class="code-header">pub fn <a href="#method.set_blend_constant" class="fn">set_blend_constant</a>(&amp;mut self, color: <a class="struct" href="struct.Color.html" title="struct wgpu::Color">Color</a>)</h4></section></summary><div class="docblock"><p>Sets the blend color as used by some of the blending modes.</p>
<p>Subsequent blending tests will test against this value.
If this method has not been called, the blend constant defaults to <a href="struct.Color.html#associatedconstant.TRANSPARENT" title="associated constant wgpu::Color::TRANSPARENT"><code>Color::TRANSPARENT</code></a>
(all components zero).</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_index_buffer" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#121-130">Source</a><h4 class="code-header">pub fn <a href="#method.set_index_buffer" class="fn">set_index_buffer</a>(
&amp;mut self,
buffer_slice: <a class="struct" href="struct.BufferSlice.html" title="struct wgpu::BufferSlice">BufferSlice</a>&lt;'_&gt;,
index_format: <a class="enum" href="enum.IndexFormat.html" title="enum wgpu::IndexFormat">IndexFormat</a>,
)</h4></section></summary><div class="docblock"><p>Sets the active index buffer.</p>
<p>Subsequent calls to <a href="struct.RenderPass.html#method.draw_indexed" title="method wgpu::RenderPass::draw_indexed"><code>draw_indexed</code></a> on this <a href="struct.RenderPass.html" title="struct wgpu::RenderPass"><code>RenderPass</code></a> will
use <code>buffer</code> as the source index buffer.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_vertex_buffer" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#142-151">Source</a><h4 class="code-header">pub fn <a href="#method.set_vertex_buffer" class="fn">set_vertex_buffer</a>(&amp;mut self, slot: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>, buffer_slice: <a class="struct" href="struct.BufferSlice.html" title="struct wgpu::BufferSlice">BufferSlice</a>&lt;'_&gt;)</h4></section></summary><div class="docblock"><p>Assign a vertex buffer to a slot.</p>
<p>Subsequent calls to <a href="struct.RenderPass.html#method.draw" title="method wgpu::RenderPass::draw"><code>draw</code></a> and <a href="struct.RenderPass.html#method.draw_indexed" title="method wgpu::RenderPass::draw_indexed"><code>draw_indexed</code></a> on this
<a href="struct.RenderPass.html" title="struct wgpu::RenderPass"><code>RenderPass</code></a> will use <code>buffer</code> as one of the source vertex buffers.</p>
<p>The <code>slot</code> refers to the index of the matching descriptor in
<a href="struct.VertexState.html#structfield.buffers" title="field wgpu::VertexState::buffers"><code>VertexState::buffers</code></a>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_scissor_rect" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#162-171">Source</a><h4 class="code-header">pub fn <a href="#method.set_scissor_rect" class="fn">set_scissor_rect</a>(&amp;mut self, x: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>, y: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>, width: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>, height: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>)</h4></section></summary><div class="docblock"><p>Sets the scissor rectangle used during the rasterization stage.
After transformation into <a href="https://www.w3.org/TR/webgpu/#viewport-coordinates">viewport coordinates</a>.</p>
<p>Subsequent draw calls will discard any fragments which fall outside the scissor rectangle.
If this method has not been called, the scissor rectangle defaults to the entire bounds of
the render targets.</p>
<p>The function of the scissor rectangle resembles <a href="struct.RenderPass.html#method.set_viewport" title="method wgpu::RenderPass::set_viewport"><code>set_viewport()</code></a>,
but it does not affect the coordinate system, only which fragments are discarded.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_viewport" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#179-190">Source</a><h4 class="code-header">pub fn <a href="#method.set_viewport" class="fn">set_viewport</a>(
&amp;mut self,
x: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.f32.html">f32</a>,
y: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.f32.html">f32</a>,
w: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.f32.html">f32</a>,
h: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.f32.html">f32</a>,
min_depth: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.f32.html">f32</a>,
max_depth: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.f32.html">f32</a>,
)</h4></section></summary><div class="docblock"><p>Sets the viewport used during the rasterization stage to linearly map
from <a href="https://www.w3.org/TR/webgpu/#ndc">normalized device coordinates</a> to <a href="https://www.w3.org/TR/webgpu/#viewport-coordinates">viewport coordinates</a>.</p>
<p>Subsequent draw calls will only draw within this region.
If this method has not been called, the viewport defaults to the entire bounds of the render
targets.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_stencil_reference" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#196-202">Source</a><h4 class="code-header">pub fn <a href="#method.set_stencil_reference" class="fn">set_stencil_reference</a>(&amp;mut self, reference: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>)</h4></section></summary><div class="docblock"><p>Sets the stencil reference.</p>
<p>Subsequent stencil tests will test against this value.
If this method has not been called, the stencil reference value defaults to <code>0</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.insert_debug_marker" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#205-211">Source</a><h4 class="code-header">pub fn <a href="#method.insert_debug_marker" class="fn">insert_debug_marker</a>(&amp;mut self, label: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.str.html">str</a>)</h4></section></summary><div class="docblock"><p>Inserts debug marker.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.push_debug_group" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#214-220">Source</a><h4 class="code-header">pub fn <a href="#method.push_debug_group" class="fn">push_debug_group</a>(&amp;mut self, label: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.str.html">str</a>)</h4></section></summary><div class="docblock"><p>Start record commands and group it into debug marker group.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.pop_debug_group" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#223-225">Source</a><h4 class="code-header">pub fn <a href="#method.pop_debug_group" class="fn">pop_debug_group</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Stops command recording and creates debug group.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.draw" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#248-255">Source</a><h4 class="code-header">pub fn <a href="#method.draw" class="fn">draw</a>(&amp;mut self, vertices: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>&gt;, instances: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>&gt;)</h4></section></summary><div class="docblock"><p>Draws primitives from the active vertex buffer(s).</p>
<p>The active vertex buffer(s) can be set with <a href="struct.RenderPass.html#method.set_vertex_buffer" title="method wgpu::RenderPass::set_vertex_buffer"><code>RenderPass::set_vertex_buffer</code></a>.
Does not use an Index Buffer. If you need this see <a href="struct.RenderPass.html#method.draw_indexed" title="method wgpu::RenderPass::draw_indexed"><code>RenderPass::draw_indexed</code></a></p>
<p>Panics if vertices Range is outside of the range of the vertices range of any set vertex buffer.</p>
<p>vertices: The range of vertices to draw.
instances: Range of Instances to draw. Use 0..1 if instance buffers are not used.
E.g.of how its used internally</p>
<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested"></a><pre class="rust rust-example-rendered"><code><span class="kw">for </span>instance_id <span class="kw">in </span>instance_range {
<span class="kw">for </span>vertex_id <span class="kw">in </span>vertex_range {
<span class="kw">let </span>vertex = vertex[vertex_id];
vertex_shader(vertex, vertex_id, instance_id);
}
}</code></pre></div>
<p>This drawing command uses the current render state, as set by preceding <code>set_*()</code> methods.
It is not affected by changes to the state that are performed after it is called.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.draw_indexed" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#281-289">Source</a><h4 class="code-header">pub fn <a href="#method.draw_indexed" class="fn">draw_indexed</a>(
&amp;mut self,
indices: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>&gt;,
base_vertex: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.i32.html">i32</a>,
instances: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>&gt;,
)</h4></section></summary><div class="docblock"><p>Draws indexed primitives using the active index buffer and the active vertex buffers.</p>
<p>The active index buffer can be set with <a href="struct.RenderPass.html#method.set_index_buffer" title="method wgpu::RenderPass::set_index_buffer"><code>RenderPass::set_index_buffer</code></a>
The active vertex buffers can be set with <a href="struct.RenderPass.html#method.set_vertex_buffer" title="method wgpu::RenderPass::set_vertex_buffer"><code>RenderPass::set_vertex_buffer</code></a>.</p>
<p>Panics if indices Range is outside of the range of the indices range of any set index buffer.</p>
<p>indices: The range of indices to draw.
base_vertex: value added to each index value before indexing into the vertex buffers.
instances: Range of Instances to draw. Use 0..1 if instance buffers are not used.
E.g.of how its used internally</p>
<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested"></a><pre class="rust rust-example-rendered"><code><span class="kw">for </span>instance_id <span class="kw">in </span>instance_range {
<span class="kw">for </span>index_index <span class="kw">in </span>index_range {
<span class="kw">let </span>vertex_id = index_buffer[index_index];
<span class="kw">let </span>adjusted_vertex_id = vertex_id + base_vertex;
<span class="kw">let </span>vertex = vertex[adjusted_vertex_id];
vertex_shader(vertex, adjusted_vertex_id, instance_id);
}
}</code></pre></div>
<p>This drawing command uses the current render state, as set by preceding <code>set_*()</code> methods.
It is not affected by changes to the state that are performed after it is called.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.draw_indirect" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#304-311">Source</a><h4 class="code-header">pub fn <a href="#method.draw_indirect" class="fn">draw_indirect</a>(
&amp;mut self,
indirect_buffer: &amp;<a class="struct" href="struct.Buffer.html" title="struct wgpu::Buffer">Buffer</a>,
indirect_offset: <a class="type" href="type.BufferAddress.html" title="type wgpu::BufferAddress">BufferAddress</a>,
)</h4></section></summary><div class="docblock"><p>Draws primitives from the active vertex buffer(s) based on the contents of the <code>indirect_buffer</code>.</p>
<p>This is like calling <a href="struct.RenderPass.html#method.draw" title="method wgpu::RenderPass::draw"><code>RenderPass::draw</code></a> but the contents of the call are specified in the <code>indirect_buffer</code>.
The structure expected in <code>indirect_buffer</code> must conform to <a href="util/struct.DrawIndirectArgs.html" title="struct wgpu::util::DrawIndirectArgs"><code>DrawIndirectArgs</code></a>.</p>
<p>Indirect drawing has some caveats depending on the features available. We are not currently able to validate
these and issue an error.</p>
<ul>
<li>If <a href="struct.Features.html#associatedconstant.INDIRECT_FIRST_INSTANCE" title="associated constant wgpu::Features::INDIRECT_FIRST_INSTANCE"><code>Features::INDIRECT_FIRST_INSTANCE</code></a> is not present on the adapter,
<a href="util/struct.DrawIndirectArgs.html#structfield.first_instance" title="field wgpu::util::DrawIndirectArgs::first_instance"><code>DrawIndirect::first_instance</code></a> will be ignored.</li>
<li>If <a href="struct.DownlevelFlags.html#associatedconstant.VERTEX_AND_INSTANCE_INDEX_RESPECTS_RESPECTIVE_FIRST_VALUE_IN_INDIRECT_DRAW" title="associated constant wgpu::DownlevelFlags::VERTEX_AND_INSTANCE_INDEX_RESPECTS_RESPECTIVE_FIRST_VALUE_IN_INDIRECT_DRAW"><code>DownlevelFlags::VERTEX_AND_INSTANCE_INDEX_RESPECTS_RESPECTIVE_FIRST_VALUE_IN_INDIRECT_DRAW</code></a> is not present on the adapter,
any use of <code>@builtin(vertex_index)</code> or <code>@builtin(instance_index)</code> in the vertex shader will have different values.</li>
</ul>
<p>See details on the individual flags for more information.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.draw_indexed_indirect" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#327-338">Source</a><h4 class="code-header">pub fn <a href="#method.draw_indexed_indirect" class="fn">draw_indexed_indirect</a>(
&amp;mut self,
indirect_buffer: &amp;<a class="struct" href="struct.Buffer.html" title="struct wgpu::Buffer">Buffer</a>,
indirect_offset: <a class="type" href="type.BufferAddress.html" title="type wgpu::BufferAddress">BufferAddress</a>,
)</h4></section></summary><div class="docblock"><p>Draws indexed primitives using the active index buffer and the active vertex buffers,
based on the contents of the <code>indirect_buffer</code>.</p>
<p>This is like calling <a href="struct.RenderPass.html#method.draw_indexed" title="method wgpu::RenderPass::draw_indexed"><code>RenderPass::draw_indexed</code></a> but the contents of the call are specified in the <code>indirect_buffer</code>.
The structure expected in <code>indirect_buffer</code> must conform to <a href="util/struct.DrawIndexedIndirectArgs.html" title="struct wgpu::util::DrawIndexedIndirectArgs"><code>DrawIndexedIndirectArgs</code></a>.</p>
<p>Indirect drawing has some caveats depending on the features available. We are not currently able to validate
these and issue an error.</p>
<ul>
<li>If <a href="struct.Features.html#associatedconstant.INDIRECT_FIRST_INSTANCE" title="associated constant wgpu::Features::INDIRECT_FIRST_INSTANCE"><code>Features::INDIRECT_FIRST_INSTANCE</code></a> is not present on the adapter,
<a href="util/struct.DrawIndexedIndirectArgs.html#structfield.first_instance" title="field wgpu::util::DrawIndexedIndirectArgs::first_instance"><code>DrawIndexedIndirect::first_instance</code></a> will be ignored.</li>
<li>If <a href="struct.DownlevelFlags.html#associatedconstant.VERTEX_AND_INSTANCE_INDEX_RESPECTS_RESPECTIVE_FIRST_VALUE_IN_INDIRECT_DRAW" title="associated constant wgpu::DownlevelFlags::VERTEX_AND_INSTANCE_INDEX_RESPECTS_RESPECTIVE_FIRST_VALUE_IN_INDIRECT_DRAW"><code>DownlevelFlags::VERTEX_AND_INSTANCE_INDEX_RESPECTS_RESPECTIVE_FIRST_VALUE_IN_INDIRECT_DRAW</code></a> is not present on the adapter,
any use of <code>@builtin(vertex_index)</code> or <code>@builtin(instance_index)</code> in the vertex shader will have different values.</li>
</ul>
<p>See details on the individual flags for more information.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.execute_bundles" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#345-356">Source</a><h4 class="code-header">pub fn <a href="#method.execute_bundles" class="fn">execute_bundles</a>&lt;'a, I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = &amp;'a <a class="struct" href="struct.RenderBundle.html" title="struct wgpu::RenderBundle">RenderBundle</a>&gt;&gt;(
&amp;mut self,
render_bundles: I,
)</h4></section></summary><div class="docblock"><p>Execute a <a href="struct.RenderBundle.html" title="struct wgpu::RenderBundle">render bundle</a>, which is a set of pre-recorded commands
that can be run together.</p>
<p>Commands in the bundle do not inherit this render passs current render state, and after the
bundle has executed, the state is <strong>cleared</strong> (reset to defaults, not the previous state).</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-RenderPass%3C'encoder%3E-1" class="impl"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#360-411">Source</a><a href="#impl-RenderPass%3C'encoder%3E-1" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <a class="struct" href="struct.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section></summary><div class="docblock"><p><a href="struct.Features.html#associatedconstant.MULTI_DRAW_INDIRECT" title="associated constant wgpu::Features::MULTI_DRAW_INDIRECT"><code>Features::MULTI_DRAW_INDIRECT</code></a> must be enabled on the device in order to call these functions.</p>
</div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.multi_draw_indirect" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#371-384">Source</a><h4 class="code-header">pub fn <a href="#method.multi_draw_indirect" class="fn">multi_draw_indirect</a>(
&amp;mut self,
indirect_buffer: &amp;<a class="struct" href="struct.Buffer.html" title="struct wgpu::Buffer">Buffer</a>,
indirect_offset: <a class="type" href="type.BufferAddress.html" title="type wgpu::BufferAddress">BufferAddress</a>,
count: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
)</h4></section></summary><div class="docblock"><p>Dispatches multiple draw calls from the active vertex buffer(s) based on the contents of the <code>indirect_buffer</code>.
<code>count</code> draw calls are issued.</p>
<p>The active vertex buffers can be set with <a href="struct.RenderPass.html#method.set_vertex_buffer" title="method wgpu::RenderPass::set_vertex_buffer"><code>RenderPass::set_vertex_buffer</code></a>.</p>
<p>The structure expected in <code>indirect_buffer</code> must conform to <a href="util/struct.DrawIndirectArgs.html" title="struct wgpu::util::DrawIndirectArgs"><code>DrawIndirectArgs</code></a>.
These draw structures are expected to be tightly packed.</p>
<p>This drawing command uses the current render state, as set by preceding <code>set_*()</code> methods.
It is not affected by changes to the state that are performed after it is called.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.multi_draw_indexed_indirect" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#397-410">Source</a><h4 class="code-header">pub fn <a href="#method.multi_draw_indexed_indirect" class="fn">multi_draw_indexed_indirect</a>(
&amp;mut self,
indirect_buffer: &amp;<a class="struct" href="struct.Buffer.html" title="struct wgpu::Buffer">Buffer</a>,
indirect_offset: <a class="type" href="type.BufferAddress.html" title="type wgpu::BufferAddress">BufferAddress</a>,
count: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
)</h4></section></summary><div class="docblock"><p>Dispatches multiple draw calls from the active index buffer and the active vertex buffers,
based on the contents of the <code>indirect_buffer</code>. <code>count</code> draw calls are issued.</p>
<p>The active index buffer can be set with <a href="struct.RenderPass.html#method.set_index_buffer" title="method wgpu::RenderPass::set_index_buffer"><code>RenderPass::set_index_buffer</code></a>, while the active
vertex buffers can be set with <a href="struct.RenderPass.html#method.set_vertex_buffer" title="method wgpu::RenderPass::set_vertex_buffer"><code>RenderPass::set_vertex_buffer</code></a>.</p>
<p>The structure expected in <code>indirect_buffer</code> must conform to <a href="util/struct.DrawIndexedIndirectArgs.html" title="struct wgpu::util::DrawIndexedIndirectArgs"><code>DrawIndexedIndirectArgs</code></a>.
These draw structures are expected to be tightly packed.</p>
<p>This drawing command uses the current render state, as set by preceding <code>set_*()</code> methods.
It is not affected by changes to the state that are performed after it is called.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-RenderPass%3C'encoder%3E-2" class="impl"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#414-499">Source</a><a href="#impl-RenderPass%3C'encoder%3E-2" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <a class="struct" href="struct.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section></summary><div class="docblock"><p><a href="struct.Features.html#associatedconstant.MULTI_DRAW_INDIRECT_COUNT" title="associated constant wgpu::Features::MULTI_DRAW_INDIRECT_COUNT"><code>Features::MULTI_DRAW_INDIRECT_COUNT</code></a> must be enabled on the device in order to call these functions.</p>
</div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.multi_draw_indirect_count" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#437-454">Source</a><h4 class="code-header">pub fn <a href="#method.multi_draw_indirect_count" class="fn">multi_draw_indirect_count</a>(
&amp;mut self,
indirect_buffer: &amp;<a class="struct" href="struct.Buffer.html" title="struct wgpu::Buffer">Buffer</a>,
indirect_offset: <a class="type" href="type.BufferAddress.html" title="type wgpu::BufferAddress">BufferAddress</a>,
count_buffer: &amp;<a class="struct" href="struct.Buffer.html" title="struct wgpu::Buffer">Buffer</a>,
count_offset: <a class="type" href="type.BufferAddress.html" title="type wgpu::BufferAddress">BufferAddress</a>,
max_count: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
)</h4></section></summary><div class="docblock"><p>Dispatches multiple draw calls from the active vertex buffer(s) based on the contents of the <code>indirect_buffer</code>.
The count buffer is read to determine how many draws to issue.</p>
<p>The indirect buffer must be long enough to account for <code>max_count</code> draws, however only <code>count</code>
draws will be read. If <code>count</code> is greater than <code>max_count</code>, <code>max_count</code> will be used.</p>
<p>The active vertex buffers can be set with <a href="struct.RenderPass.html#method.set_vertex_buffer" title="method wgpu::RenderPass::set_vertex_buffer"><code>RenderPass::set_vertex_buffer</code></a>.</p>
<p>The structure expected in <code>indirect_buffer</code> must conform to <a href="util/struct.DrawIndirectArgs.html" title="struct wgpu::util::DrawIndirectArgs"><code>DrawIndirectArgs</code></a>.
These draw structures are expected to be tightly packed.</p>
<p>The structure expected in <code>count_buffer</code> is the following:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#[repr(C)]
</span><span class="kw">struct </span>DrawIndirectCount {
count: u32, <span class="comment">// Number of draw calls to issue.
</span>}</code></pre></div>
<p>This drawing command uses the current render state, as set by preceding <code>set_*()</code> methods.
It is not affected by changes to the state that are performed after it is called.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.multi_draw_indexed_indirect_count" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#481-498">Source</a><h4 class="code-header">pub fn <a href="#method.multi_draw_indexed_indirect_count" class="fn">multi_draw_indexed_indirect_count</a>(
&amp;mut self,
indirect_buffer: &amp;<a class="struct" href="struct.Buffer.html" title="struct wgpu::Buffer">Buffer</a>,
indirect_offset: <a class="type" href="type.BufferAddress.html" title="type wgpu::BufferAddress">BufferAddress</a>,
count_buffer: &amp;<a class="struct" href="struct.Buffer.html" title="struct wgpu::Buffer">Buffer</a>,
count_offset: <a class="type" href="type.BufferAddress.html" title="type wgpu::BufferAddress">BufferAddress</a>,
max_count: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
)</h4></section></summary><div class="docblock"><p>Dispatches multiple draw calls from the active index buffer and the active vertex buffers,
based on the contents of the <code>indirect_buffer</code>. The count buffer is read to determine how many draws to issue.</p>
<p>The indirect buffer must be long enough to account for <code>max_count</code> draws, however only <code>count</code>
draws will be read. If <code>count</code> is greater than <code>max_count</code>, <code>max_count</code> will be used.</p>
<p>The active index buffer can be set with <a href="struct.RenderPass.html#method.set_index_buffer" title="method wgpu::RenderPass::set_index_buffer"><code>RenderPass::set_index_buffer</code></a>, while the active
vertex buffers can be set with <a href="struct.RenderPass.html#method.set_vertex_buffer" title="method wgpu::RenderPass::set_vertex_buffer"><code>RenderPass::set_vertex_buffer</code></a>.</p>
<p>The structure expected in <code>indirect_buffer</code> must conform to <a href="util/struct.DrawIndexedIndirectArgs.html" title="struct wgpu::util::DrawIndexedIndirectArgs"><code>DrawIndexedIndirectArgs</code></a>.</p>
<p>These draw structures are expected to be tightly packed.</p>
<p>The structure expected in <code>count_buffer</code> is the following:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#[repr(C)]
</span><span class="kw">struct </span>DrawIndexedIndirectCount {
count: u32, <span class="comment">// Number of draw calls to issue.
</span>}</code></pre></div>
<p>This drawing command uses the current render state, as set by preceding <code>set_*()</code> methods.
It is not affected by changes to the state that are performed after it is called.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-RenderPass%3C'encoder%3E-3" class="impl"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#502-552">Source</a><a href="#impl-RenderPass%3C'encoder%3E-3" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <a class="struct" href="struct.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section></summary><div class="docblock"><p><a href="struct.Features.html#associatedconstant.PUSH_CONSTANTS" title="associated constant wgpu::Features::PUSH_CONSTANTS"><code>Features::PUSH_CONSTANTS</code></a> must be enabled on the device in order to call these functions.</p>
</div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.set_push_constants" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#543-551">Source</a><h4 class="code-header">pub fn <a href="#method.set_push_constants" class="fn">set_push_constants</a>(
&amp;mut self,
stages: <a class="struct" href="struct.ShaderStages.html" title="struct wgpu::ShaderStages">ShaderStages</a>,
offset: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u8.html">u8</a>],
)</h4></section></summary><div class="docblock"><p>Set push constant data for subsequent draw calls.</p>
<p>Write the bytes in <code>data</code> at offset <code>offset</code> within push constant
storage, all of which are accessible by all the pipeline stages in
<code>stages</code>, and no others. Both <code>offset</code> and the length of <code>data</code> must be
multiples of <a href="constant.PUSH_CONSTANT_ALIGNMENT.html" title="constant wgpu::PUSH_CONSTANT_ALIGNMENT"><code>PUSH_CONSTANT_ALIGNMENT</code></a>, which is always 4.</p>
<p>For example, if <code>offset</code> is <code>4</code> and <code>data</code> is eight bytes long, this
call will write <code>data</code> to bytes <code>4..12</code> of push constant storage.</p>
<h5 id="stage-matching"><a class="doc-anchor" href="#stage-matching">§</a>Stage matching</h5>
<p>Every byte in the affected range of push constant storage must be
accessible to exactly the same set of pipeline stages, which must match
<code>stages</code>. If there are two bytes of storage that are accessible by
different sets of pipeline stages - say, one is accessible by fragment
shaders, and the other is accessible by both fragment shaders and vertex
shaders - then no single <code>set_push_constants</code> call may affect both of
them; to write both, you must make multiple calls, each with the
appropriate <code>stages</code> value.</p>
<p>Which pipeline stages may access a given byte is determined by the
pipelines <a href="https://docs.rs/naga/latest/naga/enum.StorageClass.html#variant.PushConstant"><code>PushConstant</code></a> global variable and (if it is a struct) its
members offsets.</p>
<p>For example, suppose you have twelve bytes of push constant storage,
where bytes <code>0..8</code> are accessed by the vertex shader, and bytes <code>4..12</code>
are accessed by the fragment shader. This means there are three byte
ranges each accessed by a different set of stages:</p>
<ul>
<li>
<p>Bytes <code>0..4</code> are accessed only by the fragment shader.</p>
</li>
<li>
<p>Bytes <code>4..8</code> are accessed by both the fragment shader and the vertex shader.</p>
</li>
<li>
<p>Bytes <code>8..12</code> are accessed only by the vertex shader.</p>
</li>
</ul>
<p>To write all twelve bytes requires three <code>set_push_constants</code> calls, one
for each range, each passing the matching <code>stages</code> mask.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-RenderPass%3C'encoder%3E-4" class="impl"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#555-571">Source</a><a href="#impl-RenderPass%3C'encoder%3E-4" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <a class="struct" href="struct.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section></summary><div class="docblock"><p><a href="struct.Features.html#associatedconstant.TIMESTAMP_QUERY_INSIDE_PASSES" title="associated constant wgpu::Features::TIMESTAMP_QUERY_INSIDE_PASSES"><code>Features::TIMESTAMP_QUERY_INSIDE_PASSES</code></a> must be enabled on the device in order to call these functions.</p>
</div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.write_timestamp" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#563-570">Source</a><h4 class="code-header">pub fn <a href="#method.write_timestamp" class="fn">write_timestamp</a>(&amp;mut self, query_set: &amp;<a class="struct" href="struct.QuerySet.html" title="struct wgpu::QuerySet">QuerySet</a>, query_index: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>)</h4></section></summary><div class="docblock"><p>Issue a timestamp command at this point in the queue. The
timestamp will be written to the specified query set, at the specified index.</p>
<p>Must be multiplied by <a href="struct.Queue.html#method.get_timestamp_period" title="method wgpu::Queue::get_timestamp_period"><code>Queue::get_timestamp_period</code></a> to get
the value in nanoseconds. Absolute values have no meaning,
but timestamps can be subtracted to get the time it takes
for a string of operations to complete.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-RenderPass%3C'encoder%3E-5" class="impl"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#573-589">Source</a><a href="#impl-RenderPass%3C'encoder%3E-5" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <a class="struct" href="struct.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.begin_occlusion_query" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#576-582">Source</a><h4 class="code-header">pub fn <a href="#method.begin_occlusion_query" class="fn">begin_occlusion_query</a>(&amp;mut self, query_index: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>)</h4></section></summary><div class="docblock"><p>Start a occlusion query on this render pass. It can be ended with
<code>end_occlusion_query</code>. Occlusion queries may not be nested.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.end_occlusion_query" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#586-588">Source</a><h4 class="code-header">pub fn <a href="#method.end_occlusion_query" class="fn">end_occlusion_query</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>End the occlusion query on this render pass. It can be started with
<code>begin_occlusion_query</code>. Occlusion queries may not be nested.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-RenderPass%3C'encoder%3E-6" class="impl"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#592-612">Source</a><a href="#impl-RenderPass%3C'encoder%3E-6" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <a class="struct" href="struct.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section></summary><div class="docblock"><p><a href="struct.Features.html#associatedconstant.PIPELINE_STATISTICS_QUERY" title="associated constant wgpu::Features::PIPELINE_STATISTICS_QUERY"><code>Features::PIPELINE_STATISTICS_QUERY</code></a> must be enabled on the device in order to call these functions.</p>
</div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.begin_pipeline_statistics_query" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#595-602">Source</a><h4 class="code-header">pub fn <a href="#method.begin_pipeline_statistics_query" class="fn">begin_pipeline_statistics_query</a>(
&amp;mut self,
query_set: &amp;<a class="struct" href="struct.QuerySet.html" title="struct wgpu::QuerySet">QuerySet</a>,
query_index: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
)</h4></section></summary><div class="docblock"><p>Start a pipeline statistics query on this render pass. It can be ended with
<code>end_pipeline_statistics_query</code>. Pipeline statistics queries may not be nested.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.end_pipeline_statistics_query" class="method"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#606-611">Source</a><h4 class="code-header">pub fn <a href="#method.end_pipeline_statistics_query" class="fn">end_pipeline_statistics_query</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>End the pipeline statistics query on this render pass. It can be started with
<code>begin_pipeline_statistics_query</code>. Pipeline statistics queries may not be nested.</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-RenderPass%3C'encoder%3E" class="impl"><a class="src rightside" href="../src/wgpu/api/render_pass.rs.html#38">Source</a><a href="#impl-Debug-for-RenderPass%3C'encoder%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <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.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</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/render_pass.rs.html#38">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-RenderEncoder%3C'a%3E-for-RenderPass%3C'a%3E" class="impl"><a class="src rightside" href="../src/wgpu/util/encoder.rs.html#107-161">Source</a><a href="#impl-RenderEncoder%3C'a%3E-for-RenderPass%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="util/trait.RenderEncoder.html" title="trait wgpu::util::RenderEncoder">RenderEncoder</a>&lt;'a&gt; for <a class="struct" href="struct.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.set_bind_group-1" class="method trait-impl"><a class="src rightside" href="../src/wgpu/util/encoder.rs.html#109-116">Source</a><a href="#method.set_bind_group-1" class="anchor">§</a><h4 class="code-header">fn <a href="util/trait.RenderEncoder.html#tymethod.set_bind_group" class="fn">set_bind_group</a>(
&amp;mut self,
index: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
bind_group: <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="struct" href="struct.BindGroup.html" title="struct wgpu::BindGroup">BindGroup</a>&gt;,
offsets: &amp;[<a class="type" href="type.DynamicOffset.html" title="type wgpu::DynamicOffset">DynamicOffset</a>],
)</h4></section></summary><div class='docblock'>Sets the active bind group for a given bind group index. The bind group layout
in the active pipeline when any <code>draw()</code> function is called must match the layout of this bind group. <a href="util/trait.RenderEncoder.html#tymethod.set_bind_group">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.set_pipeline-1" class="method trait-impl"><a class="src rightside" href="../src/wgpu/util/encoder.rs.html#119-121">Source</a><a href="#method.set_pipeline-1" class="anchor">§</a><h4 class="code-header">fn <a href="util/trait.RenderEncoder.html#tymethod.set_pipeline" class="fn">set_pipeline</a>(&amp;mut self, pipeline: &amp;'a <a class="struct" href="struct.RenderPipeline.html" title="struct wgpu::RenderPipeline">RenderPipeline</a>)</h4></section></summary><div class='docblock'>Sets the active render pipeline. <a href="util/trait.RenderEncoder.html#tymethod.set_pipeline">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.set_index_buffer-1" class="method trait-impl"><a class="src rightside" href="../src/wgpu/util/encoder.rs.html#124-126">Source</a><a href="#method.set_index_buffer-1" class="anchor">§</a><h4 class="code-header">fn <a href="util/trait.RenderEncoder.html#tymethod.set_index_buffer" class="fn">set_index_buffer</a>(
&amp;mut self,
buffer_slice: <a class="struct" href="struct.BufferSlice.html" title="struct wgpu::BufferSlice">BufferSlice</a>&lt;'a&gt;,
index_format: <a class="enum" href="enum.IndexFormat.html" title="enum wgpu::IndexFormat">IndexFormat</a>,
)</h4></section></summary><div class='docblock'>Sets the active index buffer. <a href="util/trait.RenderEncoder.html#tymethod.set_index_buffer">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.set_vertex_buffer-1" class="method trait-impl"><a class="src rightside" href="../src/wgpu/util/encoder.rs.html#129-131">Source</a><a href="#method.set_vertex_buffer-1" class="anchor">§</a><h4 class="code-header">fn <a href="util/trait.RenderEncoder.html#tymethod.set_vertex_buffer" class="fn">set_vertex_buffer</a>(&amp;mut self, slot: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>, buffer_slice: <a class="struct" href="struct.BufferSlice.html" title="struct wgpu::BufferSlice">BufferSlice</a>&lt;'a&gt;)</h4></section></summary><div class='docblock'>Assign a vertex buffer to a slot. <a href="util/trait.RenderEncoder.html#tymethod.set_vertex_buffer">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.draw-1" class="method trait-impl"><a class="src rightside" href="../src/wgpu/util/encoder.rs.html#134-136">Source</a><a href="#method.draw-1" class="anchor">§</a><h4 class="code-header">fn <a href="util/trait.RenderEncoder.html#tymethod.draw" class="fn">draw</a>(&amp;mut self, vertices: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>&gt;, instances: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>&gt;)</h4></section></summary><div class='docblock'>Draws primitives from the active vertex buffer(s). <a href="util/trait.RenderEncoder.html#tymethod.draw">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.draw_indexed-1" class="method trait-impl"><a class="src rightside" href="../src/wgpu/util/encoder.rs.html#139-141">Source</a><a href="#method.draw_indexed-1" class="anchor">§</a><h4 class="code-header">fn <a href="util/trait.RenderEncoder.html#tymethod.draw_indexed" class="fn">draw_indexed</a>(
&amp;mut self,
indices: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>&gt;,
base_vertex: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.i32.html">i32</a>,
instances: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>&gt;,
)</h4></section></summary><div class='docblock'>Draws indexed primitives using the active index buffer and the active vertex buffers. <a href="util/trait.RenderEncoder.html#tymethod.draw_indexed">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.draw_indirect-1" class="method trait-impl"><a class="src rightside" href="../src/wgpu/util/encoder.rs.html#144-146">Source</a><a href="#method.draw_indirect-1" class="anchor">§</a><h4 class="code-header">fn <a href="util/trait.RenderEncoder.html#tymethod.draw_indirect" class="fn">draw_indirect</a>(
&amp;mut self,
indirect_buffer: &amp;'a <a class="struct" href="struct.Buffer.html" title="struct wgpu::Buffer">Buffer</a>,
indirect_offset: <a class="type" href="type.BufferAddress.html" title="type wgpu::BufferAddress">BufferAddress</a>,
)</h4></section></summary><div class='docblock'>Draws primitives from the active vertex buffer(s) based on the contents of the <code>indirect_buffer</code>. <a href="util/trait.RenderEncoder.html#tymethod.draw_indirect">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.draw_indexed_indirect-1" class="method trait-impl"><a class="src rightside" href="../src/wgpu/util/encoder.rs.html#149-155">Source</a><a href="#method.draw_indexed_indirect-1" class="anchor">§</a><h4 class="code-header">fn <a href="util/trait.RenderEncoder.html#tymethod.draw_indexed_indirect" class="fn">draw_indexed_indirect</a>(
&amp;mut self,
indirect_buffer: &amp;'a <a class="struct" href="struct.Buffer.html" title="struct wgpu::Buffer">Buffer</a>,
indirect_offset: <a class="type" href="type.BufferAddress.html" title="type wgpu::BufferAddress">BufferAddress</a>,
)</h4></section></summary><div class='docblock'>Draws indexed primitives using the active index buffer and the active vertex buffers,
based on the contents of the <code>indirect_buffer</code>. <a href="util/trait.RenderEncoder.html#tymethod.draw_indexed_indirect">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.set_push_constants-1" class="method trait-impl"><a class="src rightside" href="../src/wgpu/util/encoder.rs.html#158-160">Source</a><a href="#method.set_push_constants-1" class="anchor">§</a><h4 class="code-header">fn <a href="util/trait.RenderEncoder.html#tymethod.set_push_constants" class="fn">set_push_constants</a>(&amp;mut self, stages: <a class="struct" href="struct.ShaderStages.html" title="struct wgpu::ShaderStages">ShaderStages</a>, offset: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u8.html">u8</a>])</h4></section></summary><div class='docblock'><a href="struct.Features.html#associatedconstant.PUSH_CONSTANTS" title="associated constant wgpu::Features::PUSH_CONSTANTS"><code>wgt::Features::PUSH_CONSTANTS</code></a> must be enabled on the device in order to call this function. <a href="util/trait.RenderEncoder.html#tymethod.set_push_constants">Read more</a></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-RenderPass%3C'encoder%3E" class="impl"><a href="#impl-Freeze-for-RenderPass%3C'encoder%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <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.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section><section id="impl-RefUnwindSafe-for-RenderPass%3C'encoder%3E" class="impl"><a href="#impl-RefUnwindSafe-for-RenderPass%3C'encoder%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; !<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.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section><section id="impl-Send-for-RenderPass%3C'encoder%3E" class="impl"><a href="#impl-Send-for-RenderPass%3C'encoder%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <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.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section><section id="impl-Sync-for-RenderPass%3C'encoder%3E" class="impl"><a href="#impl-Sync-for-RenderPass%3C'encoder%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <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.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section><section id="impl-Unpin-for-RenderPass%3C'encoder%3E" class="impl"><a href="#impl-Unpin-for-RenderPass%3C'encoder%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; <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.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</h3></section><section id="impl-UnwindSafe-for-RenderPass%3C'encoder%3E" class="impl"><a href="#impl-UnwindSafe-for-RenderPass%3C'encoder%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'encoder&gt; !<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.RenderPass.html" title="struct wgpu::RenderPass">RenderPass</a>&lt;'encoder&gt;</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>