#include <MultiDeviceFence.h>
Inherits AZ::RHI::MultiDeviceObject.
|
using | SignalCallback = AZStd::function< void()> |
|
|
| AZ_CLASS_ALLOCATOR (MultiDeviceFence, AZ::SystemAllocator, 0) |
|
| AZ_RTTI (MultiDeviceFence, "{5FF150A4-2C1E-4EC6-AE36-8EBD1CE22C31}", MultiDeviceObject) |
|
ResultCode | Init (MultiDevice::DeviceMask deviceMask, FenceState initialState) |
|
void | Shutdown () override final |
| Waits on m_waitThread and shuts down all device-specific fences.
|
|
RHI::ResultCode | SignalOnCpu () |
| Signals the device-specific fences managed by this class.
|
|
RHI::ResultCode | WaitOnCpu () const |
| Waits (blocks) for all device-specific fences managed by this class.
|
|
RHI::ResultCode | Reset () |
| Resets the device-specific fences.
|
|
ResultCode | WaitOnCpuAsync (SignalCallback callback) |
|
const Ptr< Fence > & | GetDeviceFence (int deviceIndex) |
| Returns the device-specific Fence for the given index.
|
|
| AZ_RTTI (MultiDeviceObject, "{17D34F71-944C-4AF5-9823-627474C4C0A6}", Object) |
|
bool | IsInitialized () const |
| Returns whether the device object is initialized.
|
|
MultiDevice::DeviceMask | GetDeviceMask () const |
|
| 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.
|
|
|
bool | ValidateIsInitialized () const |
|
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.
|
|
void | add_ref () const |
|
void | release () const |
|
|
AZStd::thread | m_waitThread |
| This can be used to asynchronously wait on all fences by calling WaitOnCpuAsync.
|
|
AZStd::unordered_map< int, Ptr< Fence > > | m_deviceFences |
| A map of all device-specific Fences, indexed by the device index.
|
|
AZStd::atomic_int | m_useCount = 0 |
|
A multi-device synchronization primitive, holding device-specific Fences, than can be used to insert dependencies between a queue and a host
◆ Init()
ResultCode AZ::RHI::MultiDeviceFence::Init |
( |
MultiDevice::DeviceMask |
deviceMask, |
|
|
FenceState |
initialState |
|
) |
| |
Initializes the multi-device fence using the provided deviceMask. It creates on device-specific fence for each bit set in the deviceMask and passes on the initial FenceState to each Fence
◆ Shutdown()
void AZ::RHI::MultiDeviceFence::Shutdown |
( |
| ) |
|
|
finaloverridevirtual |
Waits on m_waitThread and shuts down all device-specific fences.
Reimplemented from AZ::RHI::Object.
◆ WaitOnCpuAsync()
ResultCode AZ::RHI::MultiDeviceFence::WaitOnCpuAsync |
( |
SignalCallback |
callback | ) |
|
Spawns a dedicated thread to wait on all device-specific fences. The provided callback is invoked when the fences complete.
The documentation for this class was generated from the following file:
- Gems/Atom/RHI/Code/Include/Atom/RHI/MultiDeviceFence.h