You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
12 KiB

5 years ago
<!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="API documentation for the Rust `pipeline_layout` mod in crate `vulkano`."><meta name="keywords" content="rust, rustlang, rust-lang, pipeline_layout"><title>vulkano::descriptor::pipeline_layout - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../vulkano/index.html'><div class='logo-container'><img src='https://raw.githubusercontent.com/vulkano-rs/vulkano/master/logo.png' alt='logo'></div></a><p class='location'>Module pipeline_layout</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li></ul></div><p class='location'><a href='../../index.html'>vulkano</a>::<wbr><a href='../index.html'>descriptor</a></p><script>window.sidebarCurrent = {name: 'pipeline_layout', ty: 'mod', relpath: '../'};</script><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/vulkano/descriptor/pipeline_layout/mod.rs.html#10-76' title='goto source code'>[src]</a></span><span class='in-band'>Module <a href='../../index.html'>vulkano</a>::<wbr><a href='../index.html'>descriptor</a>::<wbr><a class="mod" href=''>pipeline_layout</a></span></h1><div class='docblock'><p>A pipeline layout describes the layout of descriptors and push constants used by a graphics
pipeline or a compute pipeline.</p>
<p>The layout itself only <em>describes</em> the descriptors and push constants, and does not contain
the content of the push constants or the actual list of resources that are going to be
available through the descriptors. Push constants are set when you submit a draw command, and
the list of resources is set by creating <em>descriptor set</em> objects and passing these sets when
you submit a draw command.</p>
<h1 id="pipeline-layout-objects" class="section-header"><a href="#pipeline-layout-objects">Pipeline layout objects</a></h1>
<p>A pipeline layout is something that you must describe to the Vulkan implementation by creating
a <strong>pipeline layout object</strong>, represented by the <code>PipelineLayout</code> struct in vulkano.</p>
<p>Each graphics pipeline or compute pipeline that you create therefore holds a
<strong>pipeline layout object</strong> By default, creating a pipeline automatically builds a new pipeline
layout object describing the union of all the descriptors and push constants of all the shaders
used by the pipeline.</p>
<p>The <code>PipelineLayout</code> struct describes the pipeline layout to both the Vulkan implementation and
to vulkano. It holds a template parameter whose type must implement the <code>PipelineLayoutDesc</code>
trait.</p>
<h1 id="the-pipelinelayoutabstract-trait" class="section-header"><a href="#the-pipelinelayoutabstract-trait">The PipelineLayoutAbstract trait</a></h1>
<p>All the functions in vulkano that operate on pipeline layout objects (for example, creating a
descriptor set) do not take directly a <code>PipelineLayout</code> struct as parameter. Instead they can
take any object that implements the <code>PipelineLayoutAbstract</code> trait.</p>
<p>This trait represents any object that holds a <code>PipelineLayout</code>. It is implemented on the
<code>PipelineLayout</code> struct itself (obviously), but also notably on <code>GraphicsPipeline</code> and
<code>ComputePipeline</code>. In other words, you can for example create a descriptor set by passing a
graphics pipeline as parameter.</p>
<h1 id="custom-pipeline-layouts" class="section-header"><a href="#custom-pipeline-layouts">Custom pipeline layouts</a></h1>
<p>In some situations, it is better (as in, faster) to share the same descriptor set or sets
between multiple pipelines that each use different descriptors. To do so, you have to create a
pipeline layout object in advance and pass it when you create the pipelines.</p>
<p>TODO: write this section</p>
</div><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table><tr class='module-item'><td><a class="struct" href="struct.EmptyPipelineDesc.html" title='vulkano::descriptor::pipeline_layout::EmptyPipelineDesc struct'>EmptyPipelineDesc</a></td><td class='docblock-short'><p>Description of an empty pipeline layout.</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.PipelineLayout.html" title='vulkano::descriptor::pipeline_layout::PipelineLayout struct'>PipelineLayout</a></td><td class='docblock-short'><p>Wrapper around the <code>PipelineLayout</code> Vulkan object. Describes to the Vulkan implementation the
descriptor sets and push constants available to your shaders</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.PipelineLayoutDescPcRange.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutDescPcRange struct'>PipelineLayoutDescPcRange</a></td><td class='docblock-short'><p>Description of a range of the push constants of a pipeline layout.</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.PipelineLayoutDescUnion.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutDescUnion struct'>PipelineLayoutDescUnion</a></td><td class='docblock-short'><p>Contains the union of two pipeline layout description.</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.PipelineLayoutSys.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutSys struct'>PipelineLayoutSys</a></td><td class='docblock-short'><p>Opaque object that is borrowed from a <code>PipelineLayout</code>.</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.RuntimePipelineDesc.html" title='vulkano::descriptor::pipeline_layout::RuntimePipelineDesc struct'>RuntimePipelineDesc</a></td><td class='docblock-short'><p>Runtime description of a pipeline layout.</p>
</td></tr></table><h2 id='enums' class='section-header'><a href="#enums">Enums</a></h2>
<table><tr class='module-item'><td><a class="enum" href="enum.PipelineLayoutCreationError.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutCreationError enum'>PipelineLayoutCreationError</a></td><td class='docblock-short'><p>Error that can happen when creating a pipeline layout.</p>
</td></tr><tr class='module-item'><td><a class="enum" href="enum.PipelineLayoutLimitsError.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutLimitsError enum'>PipelineLayoutLimitsError</a></td><td class='docblock-short'><p>The pipeline layout description isn't compatible with the hardware limits.</p>
</td></tr><tr class='module-item'><td><a class="enum" href="enum.PipelineLayoutNotSupersetError.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutNotSupersetError enum'>PipelineLayoutNotSupersetError</a></td><td class='docblock-short'><p>Error that can happen when creating a graphics pipeline.</p>
</td></tr><tr class='module-item'><td><a class="enum" href="enum.RuntimePipelineDescError.html" title='vulkano::descriptor::pipeline_layout::RuntimePipelineDescError enum'>RuntimePipelineDescError</a></td><td class='docblock-short'><p>Error when building a persistent descriptor set.</p>
</td></tr></table><h2 id='traits' class='section-header'><a href="#traits">Traits</a></h2>
<table><tr class='module-item'><td><a class="trait" href="trait.PipelineLayoutAbstract.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutAbstract trait'>PipelineLayoutAbstract</a></td><td class='docblock-short'><p>Trait for objects that describe the layout of the descriptors and push constants of a pipeline.</p>
</td></tr><tr class='module-item'><td><a class="trait" href="trait.PipelineLayoutDesc.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutDesc trait'>PipelineLayoutDesc</a></td><td class='docblock-short'><p>Trait for objects that describe the layout of the descriptors and push constants of a pipeline.</p>
</td></tr><tr class='module-item'><td><a class="trait" href="trait.PipelineLayoutPushConstantsCompatible.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutPushConstantsCompatible trait'>PipelineLayoutPushConstantsCompatible</a></td><td class='docblock-short'><p>Traits that allow determining whether</p>
</td></tr><tr class='module-item'><td><a class="trait" href="trait.PipelineLayoutSetsCompatible.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutSetsCompatible trait'>PipelineLayoutSetsCompatible</a></td><td class='docblock-short'><p>Traits that allow determining whether</p>
</td></tr><tr class='module-item'><td><a class="trait" href="trait.PipelineLayoutSuperset.html" title='vulkano::descriptor::pipeline_layout::PipelineLayoutSuperset trait'>PipelineLayoutSuperset</a></td><td class='docblock-short'><p>Traits that allow determining whether a pipeline layout is a superset of another one.</p>
</td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../../";window.currentCrate = "vulkano";</script><script src="../../../aliases.js"></script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>