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

#include <ShaderResourceGroup.h>

Inherits AZ::RHI::Resource.

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

Public Types

enum class  CompileMode : uint8_t { Async , Sync }
 Defines the compilation modes for an SRG.
 

Public Member Functions

 AZ_RTTI (ShaderResourceGroup, "{91B217A5-EFEC-46C5-82DA-B4C77931BC1A}", Resource)
 
void Compile (const ShaderResourceGroupData &shaderResourceGroupData, CompileMode compileMode=CompileMode::Async)
 
ShaderResourceGroupPoolGetPool ()
 Returns the shader resource group pool that this group is registered on.
 
const ShaderResourceGroupPoolGetPool () const
 
void ReportMemoryUsage (MemoryStatisticsBuilder &builder) const override
 
const ShaderResourceGroupDataGetData () const
 Returns the data currently bound on the shader resource group.
 
uint32_t GetBindingSlot () const
 Returns the binding slot specified by the layout associated to this shader resource group.
 
bool IsQueuedForCompile () const
 Returns whether the group is currently queued for compilation.
 
void DisableCompilationForAllResourceTypes ()
 Resets the update mask after m_updateMaskResetLatency number of compiles.
 
bool IsAnyResourceTypeUpdated () const
 Returns true if any of the resource type has been enabled for compilation.
 
bool IsResourceTypeEnabledForCompilation (uint32_t resourceTypeMask) const
 Returns true if a specific resource type has been enabled for compilation.
 
void EnableRhiResourceTypeCompilation (const ShaderResourceGroupData::ResourceTypeMask resourceTypeMask)
 Update the m_rhiUpdateMask for a given resource type which will ensure we will compile that type for the current frame.
 
void ResetResourceTypeIteration (const ShaderResourceGroupData::ResourceType resourceType)
 
HashValue64 GetViewHash (const AZ::Name &viewName)
 Return the view hash stored within m_viewHash.
 
void UpdateViewHash (const AZ::Name &viewName, const HashValue64 viewHash)
 Update the view hash within m_viewHash.
 
- Public Member Functions inherited from AZ::RHI::Resource
 AZ_RTTI (Resource, "{9D02CDAC-80EB-4B77-8E62-849AC6E69206}", DeviceObject)
 
bool IsAttachment () const
 Returns whether the resource is currently an attachment on a frame graph.
 
void Shutdown () override final
 Shuts down the buffer by detaching it from its parent pool.
 
const ResourcePoolGetPool () const
 
ResourcePoolGetPool ()
 
uint32_t GetVersion () const
 
virtual void ReportMemoryUsage (MemoryStatisticsBuilder &builder) const =0
 Reports memory usage of this image to the memory statistics builder.
 
const FrameAttachmentGetFrameAttachment () const
 Returns the frame attachment associated with this image (if it exists).
 
void InvalidateViews ()
 
bool IsInResourceCache (const ImageViewDescriptor &imageViewDescriptor)
 Returns true if the ResourceView is in the cache.
 
bool IsInResourceCache (const BufferViewDescriptor &bufferViewDescriptor)
 
void EraseResourceView (ResourceView *resourceView) const
 Removes the provided ResourceView from the cache.
 
- 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.
 

Friends

class ShaderResourceGroupPool
 

Additional Inherited Members

- Protected Member Functions inherited from AZ::RHI::Resource
Ptr< ImageViewGetResourceView (const ImageViewDescriptor &imageViewDescriptor) const
 Returns view based on the descriptor.
 
Ptr< BufferViewGetResourceView (const BufferViewDescriptor &bufferViewDescriptor) const
 
- 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
 
- Protected Attributes inherited from AZ::RHI::Object
AZStd::atomic_int m_useCount = 0
 

Detailed Description

This class is a platform-independent base class for a shader resource group. It has a pointer to the resource group pool, if the user initialized the group onto a pool.

Member Function Documentation

◆ Compile()

void AZ::RHI::ShaderResourceGroup::Compile ( const ShaderResourceGroupData shaderResourceGroupData,
CompileMode  compileMode = CompileMode::Async 
)

Compiles the SRG with the provided data. When using Async compile mode, it queues a request that the parent pool compile this group (compilation is deferred). When using Sync compile mode the SRG compilation will happen immediately.

◆ ReportMemoryUsage()

void AZ::RHI::ShaderResourceGroup::ReportMemoryUsage ( MemoryStatisticsBuilder builder) const
overridevirtual

This implementation does not report any memory usage. Platforms may override to report more accurate usage metrics.

Implements AZ::RHI::Resource.

◆ ResetResourceTypeIteration()

void AZ::RHI::ShaderResourceGroup::ResetResourceTypeIteration ( const ShaderResourceGroupData::ResourceType  resourceType)

Reset the iteration counter to 0 for a resource type which will ensure that the given type will be compiled for another m_updateMaskResetLatency number of Compile calls


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