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::Vulkan::MergedShaderResourceGroup Class Referencefinal

#include <MergedShaderResourceGroup.h>

Inherits AZ::Vulkan::ShaderResourceGroup.

Public Types

using ShaderResourceGroupArray = AZStd::array< const ShaderResourceGroup *, RHI::Limits::Pipeline::ShaderResourceGroupCountMax >
 
- Public Types inherited from AZ::RHI::ShaderResourceGroup
enum class  CompileMode : uint8_t { Async , Sync }
 Defines the compilation modes for an SRG.
 

Public Member Functions

 AZ_CLASS_ALLOCATOR (MergedShaderResourceGroup, AZ::SystemAllocator)
 
 AZ_RTTI (MergedShaderResourceGroup, "{5A98B01F-E5AC-4648-B307-08371FD8AA56}", Base)
 
bool NeedsCompile () const
 Returns if the MergedShaderResourceGroup needs to be compiled (copy compile data from original SRGs) before it can be used.
 
void Compile ()
 Compile the MergedShaderResourceGroup synchronously using the compiled data of the ShaderResourceGroups instances.
 
- Public Member Functions inherited from AZ::Vulkan::ShaderResourceGroup
 AZ_CLASS_ALLOCATOR (ShaderResourceGroup, AZ::SystemAllocator)
 
 AZ_RTTI (ShaderResourceGroup, "DB59214E-57B4-4F7B-B273-CB5210826A57", Base)
 
void UpdateCompiledDataIndex (uint64_t frameIteration)
 
const DescriptorSetGetCompiledData () const
 
uint32_t GetCompileDataIndex () const
 
uint64_t GetLastCompileFrameIteration () const
 
- Public Member Functions inherited from AZ::RHI::ShaderResourceGroup
 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.
 

Static Public Member Functions

static AZ::Name GenerateMergedShaderInputName (const AZ::Name &shaderInputName, uint32_t bindinSlot)
 Generates the name of a merged Shader Input.
 
- Static Public Member Functions inherited from AZ::Vulkan::ShaderResourceGroup
static RHI::Ptr< ShaderResourceGroupCreate ()
 

Static Public Attributes

static const char * ConstantDataBufferName
 Suffix name used for a constant buffer that will contain the constant data of a merged SRG.
 

Friends

class MergedShaderResourceGroupPool
 

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

Represents a group of ShaderResourceGroups that were merged together due to device limitations. At submit time (the moment that we know all SRGs being used), a MergedShaderResourceGroup is created and the compiled data from the ShaderResourceGroups is copied (compiled) to the MergedShaderResourceGroup. This process is automatic and it happens transparent to the user. MergedShaderResourceGroup are cached in the MergedShaderResourceGroupPool so they can be reused as much as possible.


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