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

Inherits AZ::RHI::ImagePoolBase.

Inherited by AZ::DX12::StreamingImagePool, AZ::Metal::StreamingImagePool, AZ::Null::StreamingImagePool, and AZ::Vulkan::StreamingImagePool.

Public Types

using LowMemoryCallback = AZStd::function< bool(size_t targetMemoryUsage)>

Public Member Functions

 AZ_RTTI (StreamingImagePool, "{C9F1E40E-D852-4515-ADCC-E2D3AB4B56AB}", ImagePoolBase)
ResultCode Init (Device &device, const StreamingImagePoolDescriptor &descriptor)
 Initializes the pool. The pool must be initialized before images can be registered with it.
ResultCode InitImage (const StreamingImageInitRequest &request)
 Initializes the backing resources of an image.
ResultCode ExpandImage (const StreamingImageExpandRequest &request)
ResultCode TrimImage (Image &image, uint32_t targetMipLevel)
const StreamingImagePoolDescriptorGetDescriptor () const override final
 Returns the resource pool descriptor.
void SetLowMemoryCallback (LowMemoryCallback callback)
bool SetMemoryBudget (size_t newBudget)
bool SupportTiledImage () const
 Return if it supports tiled image feature.
- Public Member Functions inherited from AZ::RHI::ImagePoolBase
 AZ_RTTI (ImagePoolBase, "{6353E390-C5D2-42FF-8AA9-9AFCD1F2F1B5}", ResourcePool)
- 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.

Static Public Attributes

static const uint64_t ImagePoolMininumSizeInBytes = 16ul * 1024 * 1024

Protected Attributes

LowMemoryCallback m_memoryReleaseCallback = nullptr
- Protected Attributes inherited from AZ::RHI::ResourcePool
PoolMemoryUsage m_memoryUsage
- Protected Attributes inherited from AZ::RHI::Object
AZStd::atomic_int m_useCount = 0

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 Member Functions inherited from AZ::RHI::ImagePoolBase
ResultCode InitImage (Image *image, const ImageDescriptor &descriptor, PlatformMethod platformInitResourceMethod)
- 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

Member Typedef Documentation

◆ LowMemoryCallback

using AZ::RHI::StreamingImagePool::LowMemoryCallback = AZStd::function<bool(size_t targetMemoryUsage)>

Set a callback function that is called when the pool is out of memory for new allocations User could provide such a callback function which releases some resources from the pool If some resources are released, the function may return true. If nothing is released, the function should return false.

Member Function Documentation

◆ ExpandImage()

ResultCode AZ::RHI::StreamingImagePool::ExpandImage ( const StreamingImageExpandRequest request)

Expands a streaming image with new mip chain data. The expansion can be performed asynchronously or synchronously depends on @m_waitForUpload in @StreamingImageExpandRequest. Upon completion, the views will be invalidated and map to the newly streamed mip levels.

◆ GetDescriptor()

const StreamingImagePoolDescriptor & AZ::RHI::StreamingImagePool::GetDescriptor ( ) const

Returns the resource pool descriptor.

Implements AZ::RHI::ResourcePool.

◆ SetMemoryBudget()

bool AZ::RHI::StreamingImagePool::SetMemoryBudget ( size_t  newBudget)

Set memory budget Return true if the pool was set to new memory budget successfully

◆ TrimImage()

ResultCode AZ::RHI::StreamingImagePool::TrimImage ( Image image,
uint32_t  targetMipLevel 

Trims a streaming image down to (and including) the target mip level. This occurs immediately. The newly evicted mip levels are no longer accessible by image views and the contents are considered undefined.

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