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::MultiDeviceResource Class Referenceabstract

#include <MultiDeviceResource.h>

Inherits AZ::RHI::MultiDeviceObject.

Inherited by AZ::RHI::MultiDeviceQuery.

Public Member Functions

 AZ_RTTI (MultiDeviceResource, "{613AED98-48FD-4453-98F8-6956D2133489}", MultiDeviceObject)
 
bool IsAttachment () const
 Returns whether the resource is currently an attachment on a frame graph.
 
virtual void Shutdown () override=0
 Shuts down the resource by detaching it from its parent pool.
 
const MultiDeviceResourcePoolGetPool () const
 
MultiDeviceResourcePoolGetPool ()
 
uint32_t GetVersion () const
 
const FrameAttachmentGetFrameAttachment () const
 Returns the frame attachment associated with this image (if it exists).
 
virtual void InvalidateViews ()=0
 
- 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.
 

Friends

class FrameAttachment
 
class MultiDeviceResourcePool
 

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

MultiDeviceResource is a base class for pooled, multi-device RHI resources (MultiDeviceImage / MultiDeviceBuffer / MultiDeviceShaderResourceGroup, etc). It provides some common lifecycle management semantics. MultiDeviceResource creation is separate from initialization. Resources are created separate from any pool, but its backing platform data is associated at initialization time on a specific pool.

Member Function Documentation

◆ GetPool()

const MultiDeviceResourcePool * AZ::RHI::MultiDeviceResource::GetPool ( ) const

Returns the parent pool this resource is registered on. Since resource creation is separate from initialization, this will be null until the resource is registered on a pool.

◆ GetVersion()

uint32_t AZ::RHI::MultiDeviceResource::GetVersion ( ) const

Returns the version number. This number is monotonically increased anytime new platform memory is assigned to the resource. Any dependent resource is valid so long as the version numbers match.

◆ InvalidateViews()

virtual void AZ::RHI::MultiDeviceResource::InvalidateViews ( )
pure virtual

Invalidates all views referencing this resource. Invalidation is handled implicitly on a Shutdown / Init cycle from the pool. For example, it is safe to create a resource, create a view to that resource, and then Shutdown / Re-Init the resource. InvalidateViews is called to synchronize views (and shader resource groups which hold them) to the new data.

Platform back-ends which invalidate GPU-specific data on the resource without an explicit shutdown / re-initialization will need to call this method explicitly.

Implemented in AZ::RHI::MultiDeviceQuery.

◆ Shutdown()

virtual void AZ::RHI::MultiDeviceResource::Shutdown ( )
overridepure virtual

Shuts down the resource by detaching it from its parent pool.

Reimplemented from AZ::RHI::MultiDeviceObject.

Implemented in AZ::RHI::MultiDeviceQuery.


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