#include <Resource.h>
Inherits AZ::RHI::MultiDeviceObject.
Inherited by AZ::RHI::Buffer, AZ::RHI::Image, AZ::RHI::Query, and AZ::RHI::ShaderResourceGroup.
Public Member Functions | |
AZ_RTTI (Resource, "{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 ResourcePool * | GetPool () const |
ResourcePool * | GetPool () |
uint32_t | GetVersion () const |
const FrameAttachment * | GetFrameAttachment () const |
Returns the frame attachment associated with this image (if it exists). | |
void | InvalidateViews () |
![]() | |
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 |
![]() | |
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 | ResourcePool |
Additional Inherited Members | |
![]() | |
template<typename T > | |
static AZ_FORCE_INLINE void | IterateDevices (MultiDevice::DeviceMask deviceMask, T callback) |
![]() | |
void | Init (MultiDevice::DeviceMask deviceMask) |
The derived class should call this method to assign the device. | |
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 |
![]() | |
void | add_ref () const |
void | release () const |
![]() | |
AZStd::unordered_map< int, Ptr< DeviceObject > > | m_deviceObjects |
A map of all device-specific objects, indexed by the device index. | |
![]() | |
AZStd::atomic_int | m_useCount = 0 |
Resource is a base class for pooled, multi-device RHI resources (Image / Buffer / ShaderResourceGroup, etc). It provides some common lifecycle management semantics. Resource 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.
const ResourcePool * AZ::RHI::Resource::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.
uint32_t AZ::RHI::Resource::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.
void AZ::RHI::Resource::InvalidateViews | ( | ) |
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.
|
overridepure virtual |
Shuts down the resource by detaching it from its parent pool.
Reimplemented from AZ::RHI::MultiDeviceObject.
Implemented in AZ::RHI::Buffer, AZ::RHI::Image, AZ::RHI::Query, and AZ::RHI::ShaderResourceGroup.