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::AliasedHeap Class Reference

#include <AliasedHeap.h>

Inherits AZ::RHI::ResourcePool.

Inherited by AZ::DX12::AliasedHeap, AZ::Metal::AliasedHeap, AZ::Null::AliasedHeap, AZ::RHI::Internal::NoAllocationAliasedHeap, and AZ::Vulkan::AliasedHeap.

Public Member Functions

 AZ_CLASS_ALLOCATOR (AliasedHeap, AZ::SystemAllocator)
 
 AZ_RTTI (AliasedHeap, "{9C4BB24D-3B76-4584-BA68-600BC7E2A2AA}")
 
ResultCode Init (Device &device, const AliasedHeapDescriptor &descriptor)
 Initialize an Aliased Heap.
 
void Begin (const RHI::TransientAttachmentPoolCompileFlags compileFlags)
 
ResultCode ActivateBuffer (const TransientBufferDescriptor &descriptor, Scope &scope, Buffer **activatedBuffer)
 Begin the use of a buffer resource.
 
void DeactivateBuffer (const AttachmentId &bufferAttachment, Scope &scope)
 Ends the use of a previously activated buffer.
 
ResultCode ActivateImage (const TransientImageDescriptor &descriptor, Scope &scope, Image **activatedImage)
 Begin the use of an image resource.
 
void DeactivateImage (const AttachmentId &imageAttachment, Scope &scope)
 Ends the use of a previously activated image.
 
void End ()
 Ends the use of an Aliased Heap in a frame.
 
const AliasedHeapDescriptorGetDescriptor () const override
 Returns the descriptor.
 
const TransientAttachmentStatistics::HeapGetStatistics () const
 Returns the heap statistics of the frame when the Aliased Heap was began with the GatherStatistics flag.
 
void RemoveFromCache (RHI::AttachmentId attachmentId)
 Remove the entry related to the provided attachmentId from the cache as it is probably stale now.
 
- Public Member Functions inherited from AZ::RHI::ResourcePool
 AZ_RTTI (ResourcePool, "{757EB674-25DC-4D00-9808-D3DAF33A4EFE}", DeviceObject)
 
void Shutdown () override final
 Shuts down the pool. This method will shutdown all resources associated with the pool.
 
template<typename ResourceType >
void ForEach (AZStd::function< void(ResourceType &)> callback)
 
template<typename ResourceType >
void ForEach (AZStd::function< void(const ResourceType &)> callback) const
 
uint32_t GetResourceCount () const
 Returns the number of resources in the pool.
 
ResourcePoolResolverGetResolver ()
 Returns the resolver for this pool.
 
const ResourcePoolResolverGetResolver () const
 
virtual const ResourcePoolDescriptorGetDescriptor () const =0
 Returns the resource pool descriptor.
 
const HeapMemoryUsageGetHeapMemoryUsage (HeapMemoryLevel heapMemoryLevel) const
 Returns the memory used by this pool for a specific heap type.
 
const PoolMemoryUsageGetMemoryUsage () const
 Returns the memory used by this pool.
 
- Public Member Functions inherited from AZ::RHI::DeviceObject
 AZ_RTTI (DeviceObject, "{17D34F71-944C-4AF5-9823-627474C4C0A6}", Object)
 
bool IsInitialized () const
 Returns whether the device object is initialized.
 
DeviceGetDevice () 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

void ComputeFragmentation () const override
 
- Protected Member Functions inherited from AZ::RHI::ResourcePool
void OnFrameBegin () override
 
void OnFrameCompile () override
 
void OnFrameEnd () override
 
void SetResolver (AZStd::unique_ptr< ResourcePoolResolver > &&resolvePolicy)
 
virtual void ComputeFragmentation () const =0
 
ResultCode Init (Device &device, const ResourcePoolDescriptor &descriptor, const PlatformMethod &initMethod)
 
ResultCode InitResource (Resource *resource, const PlatformMethod &initResourceMethod)
 
bool ValidateIsRegistered (const Resource *resource) const
 
bool ValidateIsUnregistered (const Resource *resource) const
 
bool ValidateIsInitialized () const
 Validates that the resource pool is initialized and ready to service requests.
 
bool ValidateNotProcessingFrame () const
 Validates that we are not in the frame processing phase.
 
- Protected Member Functions inherited from AZ::RHI::DeviceObject
void Init (Device &device)
 The derived class should call this method to assign the device.
 
void Shutdown () override
 Clears the current bound device to null.
 
- Protected Member Functions inherited from AZ::RHI::Object
void add_ref () const
 
void release () const
 

Additional Inherited Members

- Protected Types inherited from AZ::RHI::ResourcePool
using PlatformMethod = AZStd::function< RHI::ResultCode()>
 A simple functor that returns a result code.
 
- Protected Attributes inherited from AZ::RHI::ResourcePool
PoolMemoryUsage m_memoryUsage
 
- Protected Attributes inherited from AZ::RHI::Object
AZStd::atomic_int m_useCount = 0
 

Detailed Description

An Aliased Heap is a resource pool that uses a heap of memory that allow aliasing of resources. Two resources are aliased when they use the same portion of memory. Aliased Heaps are used for allocating transient attachments (resources that are valid only during the duration of a frame). and they will reuse memory whenever possible, and will also track the necessary barriers that need to be inserted when aliasing happens. Aliased Heaps do not support aliased resources being used at the same time (even if the resources are compatible).

Member Function Documentation

◆ Begin()

void AZ::RHI::AliasedHeap::Begin ( const RHI::TransientAttachmentPoolCompileFlags  compileFlags)

Begin the use of an Aliased Heap in a frame. Resets all previous resource uses.

Parameters
compileFlagsFlags that modify behavior of the heap.

◆ ComputeFragmentation()

void AZ::RHI::AliasedHeap::ComputeFragmentation ( ) const
overrideprotectedvirtual

Compute the memory fragmentation for each constituent heap and store the results in m_memoryUsage. This method is invoked when memory statistics gathering is active.

Implements AZ::RHI::ResourcePool.

◆ GetDescriptor()

const AliasedHeapDescriptor & AZ::RHI::AliasedHeap::GetDescriptor ( ) const
overridevirtual

Returns the descriptor.

Implements AZ::RHI::ResourcePool.

Reimplemented in AZ::DX12::AliasedHeap, and AZ::Vulkan::AliasedHeap.


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