Module gfx::pso
[−]
[src]
A typed high-level graphics pipeline interface.
Overview
A PipelineState
holds all information needed to manage a graphics pipeline. It contains
information about the shaders used, and on how to bind variables to these shaders. A
PipelineState
manifests itself in the form of a Pipeline State Object, or PSO in short.
A Pipeline State Object exists out of different components. Every component represents a resource handle: a shader input or output/target. The types of these components can be found in this module's submodules, grouped by category.
Before all, a Pipeline State Object must be defined. This is done using the gfx_pipeline
macro. This macro creates three different structures:
- The
Init
structure contains the location of every PSO component. During shader linking, this is used to construct theMeta
structure. - The
Meta
structure contains the layout of every PSO. Using theMeta
structure, the right data is mapped to the right components. - The
Data
structure contains the data of all components, to be sent to the GPU.
Construction and Handling
A Pipeline State Object is constructed by a factory, from its Init
structure, a Rasterizer
,
a primitive type and a shader program.
After construction an Encoder
can use the PSO along with a Data
structure matching that
PSO to process the shader pipeline, for instance, using the draw
method.
Modules
buffer |
Buffer components for a PSO. |
bundle |
Combine slice data with pipeline state. |
resource |
Resource components for a PSO. |
target |
Render target components for a PSO. |
Structs
Descriptor |
All the information surrounding a shader program that is required for PSO creation, including the formats of vertex buffers and pixel targets; |
PipelineState |
A strongly typed Pipleline State Object. See the module documentation for more information. |
RawDataSet |
A complete set of raw data that needs to be specified at run-time
whenever we draw something with a PSO. This is what "data" struct
gets transformed into when we call |
Enums
ElementError |
Error matching an element inside the constant buffer. |
InitError |
Failure to initilize the link between the shader and the data. |
Traits
DataBind |
The "bind" logic portion of the PSO component. Defines how the user data translates into the raw data set. |
DataLink |
The "link" logic portion of a PSO component. Defines the input data for the component. |
PipelineData |
a service trait implemented the "data" structure of PSO. |
PipelineInit |
A service trait implemented by the "init" structure of PSO. |