Open 3D Engine Atom Gem API Reference 25.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::ShaderResourceGroupPool Class Reference

#include <ShaderResourceGroupPool.h>

Inherits AZ::RHI::ResourcePool.

Public Member Functions

 AZ_CLASS_ALLOCATOR (ShaderResourceGroupPool, AZ::SystemAllocator, 0)
 
 AZ_RTTI (ShaderResourceGroupPool, "{5F10711E-C47A-40CC-8BEB-8AC161206A1E}", ResourcePool)
 
 AZ_RHI_MULTI_DEVICE_OBJECT_GETTER (ShaderResourceGroupPool)
 
ResultCode Init (const ShaderResourceGroupPoolDescriptor &descriptor)
 Initializes the shader resource group pool for all devices noted in the deviceMask.
 
ResultCode InitGroup (ShaderResourceGroup &srg)
 
ResultCode CompileGroup (ShaderResourceGroup &shaderResourceGroup, const ShaderResourceGroupData &shaderResourceGroupData)
 Compile Shader Resource Group with the associated ShaderResourceGroupData.
 
const ShaderResourceGroupPoolDescriptorGetDescriptor () const override
 Returns the descriptor passed at initialization time.
 
const ShaderResourceGroupLayoutGetLayout () const
 Returns the SRG layout used when initializing the pool.
 
void CompileGroupsBegin ()
 
void CompileGroupsEnd ()
 Ends compilation of the pool. Must be preceeded by a CompileGroupsBegin() call.
 
void CompileGroupsForInterval (Interval interval)
 Compiles an interval [min, max) of groups.
 
uint32_t GetGroupsToCompileCount () const
 Returns the total number of groups that need to be compiled.
 
bool HasConstants () const
 Returns whether layout in this pool has constants.
 
bool HasImageGroup () const
 Returns whether groups in this pool have an image table.
 
bool HasBufferGroup () const
 Returns whether groups in this pool have a buffer table.
 
bool HasSamplerGroup () const
 Returns whether groups in this pool have a sampler table.
 
void Shutdown () override final
 Shuts down the pool. This method will shutdown all resources associated with the pool.
 
- Public Member Functions inherited from AZ::RHI::ResourcePool
 AZ_RTTI (ResourcePool, "{BAE5442C-A312-4133-AE80-1200753A7C3E}", MultiDeviceObject)
 
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.
 
- 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.
 

Friends

class ShaderResourceGroup
 

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)
 
- Protected Types inherited from AZ::RHI::ResourcePool
using PlatformMethod = AZStd::function< RHI::ResultCode()>
 //!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//
 
- Protected Member Functions inherited from AZ::RHI::ResourcePool
ResultCode Init (MultiDevice::DeviceMask deviceMask, 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.
 
- Protected Member Functions inherited from AZ::RHI::MultiDeviceObject
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
 
- Protected Member Functions inherited from AZ::RHI::Object
void add_ref () const
 
void release () const
 
- 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
 

Detailed Description

The platform-independent base class for ShaderResourceGroupPools. Platforms should inherit from this class to implement platform-dependent pooling of multi-device shader resource groups.

Member Function Documentation

◆ CompileGroupsBegin()

void AZ::RHI::ShaderResourceGroupPool::CompileGroupsBegin ( )

Begins compilation of the pool. Cannot be called recursively.

Parameters
groupsToCompileCountif non-null, is assigned to the number of groups needing to be compiled.

◆ GetDescriptor()

const ShaderResourceGroupPoolDescriptor & AZ::RHI::ShaderResourceGroupPool::GetDescriptor ( ) const
overridevirtual

Returns the descriptor passed at initialization time.

Implements AZ::RHI::ResourcePool.

◆ InitGroup()

ResultCode AZ::RHI::ShaderResourceGroupPool::InitGroup ( ShaderResourceGroup srg)

Initializes the resource group and associates it with the pool. The resource group must be updated on this pool.

◆ Shutdown()

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

Shuts down the pool. This method will shutdown all resources associated with the pool.

Implements AZ::RHI::ResourcePool.


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