#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< PipelineState > | GetDevicePipelineState (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 |
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
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.
descriptor | Can be either PipeLineStateDescriptorForDraw, PipeLineStateDescriptorForDispatch or PipeLineStateDescriptorForRayTracing |
pipelineLibrary | An 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. |