[][src]Module vulkano::descriptor::pipeline_layout

A pipeline layout describes the layout of descriptors and push constants used by a graphics pipeline or a compute pipeline.

The layout itself only describes 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 descriptor set objects and passing these sets when you submit a draw command.

Pipeline layout objects

A pipeline layout is something that you must describe to the Vulkan implementation by creating a pipeline layout object, represented by the PipelineLayout struct in vulkano.

Each graphics pipeline or compute pipeline that you create therefore holds a pipeline layout object 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.

The PipelineLayout struct describes the pipeline layout to both the Vulkan implementation and to vulkano. It holds a template parameter whose type must implement the PipelineLayoutDesc trait.

The PipelineLayoutAbstract trait

All the functions in vulkano that operate on pipeline layout objects (for example, creating a descriptor set) do not take directly a PipelineLayout struct as parameter. Instead they can take any object that implements the PipelineLayoutAbstract trait.

This trait represents any object that holds a PipelineLayout. It is implemented on the PipelineLayout struct itself (obviously), but also notably on GraphicsPipeline and ComputePipeline. In other words, you can for example create a descriptor set by passing a graphics pipeline as parameter.

Custom pipeline layouts

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.

TODO: write this section

Structs

EmptyPipelineDesc

Description of an empty pipeline layout.

PipelineLayout

Wrapper around the PipelineLayout Vulkan object. Describes to the Vulkan implementation the descriptor sets and push constants available to your shaders

PipelineLayoutDescPcRange

Description of a range of the push constants of a pipeline layout.

PipelineLayoutDescUnion

Contains the union of two pipeline layout description.

PipelineLayoutSys

Opaque object that is borrowed from a PipelineLayout.

RuntimePipelineDesc

Runtime description of a pipeline layout.

Enums

PipelineLayoutCreationError

Error that can happen when creating a pipeline layout.

PipelineLayoutLimitsError

The pipeline layout description isn't compatible with the hardware limits.

PipelineLayoutNotSupersetError

Error that can happen when creating a graphics pipeline.

RuntimePipelineDescError

Error when building a persistent descriptor set.

Traits

PipelineLayoutAbstract

Trait for objects that describe the layout of the descriptors and push constants of a pipeline.

PipelineLayoutDesc

Trait for objects that describe the layout of the descriptors and push constants of a pipeline.

PipelineLayoutPushConstantsCompatible

Traits that allow determining whether

PipelineLayoutSetsCompatible

Traits that allow determining whether

PipelineLayoutSuperset

Traits that allow determining whether a pipeline layout is a superset of another one.