Open 3D Engine Atom Gem API Reference 23.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
AZ::RHI::PipelineState Class Reference

#include <PipelineState.h>

Inherits AZ::RHI::DeviceObject.

Inherited by AZ::DX12::PipelineState, AZ::Metal::PipelineState, AZ::Null::PipelineState, and AZ::Vulkan::PipelineState.

Public Member Functions

ResultCode Init (Device &device, const PipelineStateDescriptorForDraw &descriptor, PipelineLibrary *pipelineLibrary=nullptr)
 
ResultCode Init (Device &device, const PipelineStateDescriptorForDispatch &descriptor, PipelineLibrary *pipelineLibrary=nullptr)
 
ResultCode Init (Device &device, const PipelineStateDescriptorForRayTracing &descriptor, PipelineLibrary *pipelineLibrary=nullptr)
 
PipelineStateType GetType () const
 
- Public Member Functions inherited from AZ::RHI::DeviceObject
 AZ_RTTI (DeviceObject, "{17D34F71-944C-4AF5-9823-627474C4C0A6}", Object)
 
bool IsInitialized () const
 Returns whether the device object is initialized.
 
DeviceGetDevice () const
 
- Public Member Functions inherited from AZ::RHI::Object
 AZ_RTTI (Object, "{E43378F1-2331-4173-94B8-990ED20E6003}")
 
void SetName (const Name &name)
 Sets the name of the object.
 
const Name & GetName () const
 Returns the name set on the object by SetName.
 
uint32_t use_count ()
 Returns the current use count of the object.
 

Additional Inherited Members

- Protected Member Functions inherited from AZ::RHI::DeviceObject
void Init (Device &device)
 The derived class should call this method to assign the device.
 
void Shutdown () override
 Clears the current bound device to null.
 
- Protected Member Functions inherited from AZ::RHI::Object
void add_ref () const
 
void release () const
 
- Protected Attributes inherited from AZ::RHI::Object
AZStd::atomic_int m_useCount = 0
 

Detailed Description

The pipeline state object is an opaque data structure representing compiled graphics or compute state. Typically called a 'PSO', it holds the following platform-specific state:

  • The compiled shader byte code.
  • The compiled pipeline layout containing shader bindings and how they map to provided shader byte codes.
  • [Graphics Only] State to control the fixed function output-merger unit. This includes Blend, Raster, and Depth-Stencil state.
  • [Graphics Only] State to identify stream buffers to the fixed function input assembly unit.

Member Function Documentation

◆ Init() [1/3]

ResultCode AZ::RHI::PipelineState::Init ( Device device,
const PipelineStateDescriptorForDispatch descriptor,
PipelineLibrary pipelineLibrary = nullptr 
)

Initializes a compute pipeline state, associated with the provided device, using the provided descriptor. If successful, the PSO is valid to use with DispatchItems within scopes executing on device used for initialization.

Parameters
pipelineLibraryAn optional pipeline library used to de-duplicate and cache the internal platform pipeline state data, reducing compilation and memory cost. It can be left null.

◆ Init() [2/3]

ResultCode AZ::RHI::PipelineState::Init ( Device device,
const PipelineStateDescriptorForDraw descriptor,
PipelineLibrary pipelineLibrary = nullptr 
)

Initializes a graphics pipeline state, associated with the provided device, using the provided descriptor. If successful, the PSO is valid to use with DrawItems within scopes executing on device used for initialization.

Parameters
pipelineLibraryAn optional pipeline library used to de-duplicate and cache the internal platform pipeline state data, reducing compilation and memory cost. It can be left null.

◆ Init() [3/3]

ResultCode AZ::RHI::PipelineState::Init ( Device device,
const PipelineStateDescriptorForRayTracing descriptor,
PipelineLibrary pipelineLibrary = nullptr 
)

Initializes a ray tracing pipeline state, associated with the provided device, using the provided descriptor. If successful, the PSO is valid to use with DispatchRaysItems within scopes executing on device used for initialization.

Parameters
pipelineLibraryAn optional pipeline library used to de-duplicate and cache the internal platform pipeline state data, reducing compilation and memory cost. It can be left null.

The documentation for this class was generated from the following file: