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::MultiDevicePipelineState Class Reference

#include <MultiDevicePipelineState.h>

Inherits AZ::RHI::MultiDeviceObject.

Public Member Functions

 AZ_CLASS_ALLOCATOR (MultiDevicePipelineState, AZ::SystemAllocator, 0)
 
 AZ_RTTI (MultiDevicePipelineState, "77B85640-C2E2-4312-AD67-68FED421F84E", MultiDeviceObject)
 
ResultCode Init (MultiDevice::DeviceMask deviceMask, const PipelineStateDescriptor &descriptor, MultiDevicePipelineLibrary *pipelineLibrary=nullptr)
 
Ptr< PipelineStateGetDevicePipelineState (int deviceIndex) const
 Returns the device-specific PipelineState for the given index.
 
PipelineStateType GetType () const
 
- Public Member Functions inherited from AZ::RHI::MultiDeviceObject
 AZ_RTTI (MultiDeviceObject, "{17D34F71-944C-4AF5-9823-627474C4C0A6}", Object)
 
bool IsInitialized () const
 Returns whether the device object is initialized.
 
MultiDevice::DeviceMask GetDeviceMask () 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::MultiDeviceObject
void Init (MultiDevice::DeviceMask deviceMask)
 The derived class should call this method to assign the device.
 
void Shutdown () override
 Clears the current bound device to null.
 
template<typename T >
void IterateDevices (T callback)
 Helper method that will iterate over all selected devices and call the provided callback.
 
- 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

MultiDevicePipelineState is a multi-device class (representing a PipelineState on multiple devices). It holds a map of device-specific PipelineState objects, which can be addressed with a device index. The class is initialized with a device mask (1 bit per device), which initializes one PipelineState for each bit set and stores them in a map. The API then forwards all calls to the all device-specific PipelineState objects by iterating over them and forwarding the call. A device-specific PipelineState can be accessed by calling GetDevicePipelineState with the corresponding device index

Member Function Documentation

◆ Init()

ResultCode AZ::RHI::MultiDevicePipelineState::Init ( MultiDevice::DeviceMask  deviceMask,
const PipelineStateDescriptor descriptor,
MultiDevicePipelineLibrary pipelineLibrary = nullptr 
)

Initializes a pipeline state (either graphics, compute or ray tracing), associated with the all devices selected in the deviceMask, using the provided descriptor. The initialization call is forwarded to the respective device- and descriptor-specific method.

Parameters
descriptorCan be either PipeLineStateDescriptorForDraw, PipeLineStateDescriptorForDispatch or PipeLineStateDescriptorForRayTracing
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: