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

#include <Fence.h>

Inherits AZ::RHI::MultiDeviceObject.

Public Types

using SignalCallback = AZStd::function< void()>
 

Public Member Functions

 AZ_CLASS_ALLOCATOR (Fence, AZ::SystemAllocator, 0)
 
 AZ_RTTI (Fence, "{5FF150A4-2C1E-4EC6-AE36-8EBD1CE22C31}", MultiDeviceObject)
 
 AZ_RHI_MULTI_DEVICE_OBJECT_GETTER (Fence)
 
ResultCode Init (MultiDevice::DeviceMask deviceMask, FenceState initialState, bool usedForWaitingOnDevice=false, AZStd::optional< int > ownerDeviceIndex={})
 
void Shutdown () override final
 Shuts down all device-specific fences.
 
RHI::ResultCode SignalOnCpu ()
 Signals the device-specific fences managed by this class.
 
RHI::ResultCode Reset ()
 Resets the device-specific fences.
 
- 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.
 
AZ_FORCE_INLINE bool IsDeviceSet (int deviceIndex) const
 
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.
 

Protected Member Functions

bool ValidateIsInitialized () const
 
- 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 >
AZ_FORCE_INLINE void IterateDevices (T callback)
 Helper method that will iterate over all selected devices and call the provided callback.
 
template<typename T , typename U >
AZ_FORCE_INLINE decltype(auto) IterateObjects (U callback)
 
template<typename T , typename U >
AZ_FORCE_INLINE decltype(auto) IterateObjects (U callback) const
 
template<typename T >
AZ_FORCE_INLINE Ptr< T > GetDeviceObject (int deviceIndex) const
 
- Protected Member Functions inherited from AZ::RHI::Object
void add_ref () const
 
void release () const
 

Protected Attributes

AZStd::optional< int > m_ownerDeviceIndex
 
- Protected Attributes inherited from AZ::RHI::MultiDeviceObject
AZStd::unordered_map< int, Ptr< DeviceObject > > m_deviceObjects
 A map of all device-specific objects, indexed by the device index.
 
- Protected Attributes inherited from AZ::RHI::Object
AZStd::atomic_int m_useCount = 0
 

Additional Inherited Members

- Static Public Member Functions inherited from AZ::RHI::MultiDeviceObject
template<typename T >
static AZ_FORCE_INLINE void IterateDevices (MultiDevice::DeviceMask deviceMask, T callback)
 

Detailed Description

A multi-device synchronization primitive, holding device-specific Fences, than can be used to insert dependencies between a queue and a host

Member Function Documentation

◆ Init()

ResultCode AZ::RHI::Fence::Init ( MultiDevice::DeviceMask  deviceMask,
FenceState  initialState,
bool  usedForWaitingOnDevice = false,
AZStd::optional< int >  ownerDeviceIndex = {} 
)

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 DeviceFence. Set usedForWaitingOnDevice to true if the Fence shoud be signaled on the CPU and waited for on the device. ownerDeviceIndex: If set the Fence will be only created on the specific device. All other device Fences export the Fence of the owner device and import it again on their device Setting the owner device is only supported if the DeviceFeatures::m_crossDeviceFences is set for all devices in deviceMask

◆ Shutdown()

void AZ::RHI::Fence::Shutdown ( )
finaloverridevirtual

Shuts down all device-specific fences.

Reimplemented from AZ::RHI::Object.


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