[−][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 |
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 |
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. |