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::RHISystem Class Referencefinal

Inherits AZ::RHI::RHISystemInterface, and AZ::RHI::RHIMemoryStatisticsInterface.

Public Types

using FrameGraphCallback = AZStd::function< void(RHI::FrameGraphBuilder &)>
 An external callback to build the frame graph.
 

Public Member Functions

ResultCode InitDevices (InitDevicesFlags initializationVariant=InitDevicesFlags::SingleDevice)
 
void Init (RHI::Ptr< RHI::ShaderResourceGroupLayout > bindlessSrgLayout=nullptr)
 
void Shutdown ()
 
void FrameUpdate (FrameGraphCallback frameGraphCallback)
 Invokes the frame scheduler. The provided callback is invoked prior to compilation of the graph.
 
bool RegisterXRSystem (XRRenderingInterface *xrRenderingInterface)
 Register/Unregister xr system.
 
void UnregisterXRSystem ()
 
void SetNumActiveRenderPipelines (uint16_t numActiveRenderPipelines)
 Get/Set functions for the number of active pipelines in use in a frame.
 
uint16_t GetNumActiveRenderPipelines () const
 
RHI::DeviceGetDevice (int deviceIndex=MultiDevice::DefaultDeviceIndex) override
 
int GetDeviceCount () override
 
RHI::DrawListTagRegistryGetDrawListTagRegistry () override
 
RHI::PipelineStateCacheGetPipelineStateCache () override
 
void ModifyFrameSchedulerStatisticsFlags (RHI::FrameSchedulerStatisticsFlags statisticsFlags, bool enableFlags) override
 
double GetCpuFrameTime () const override
 
const RHI::TransientAttachmentPoolDescriptorGetTransientAttachmentPoolDescriptor () const override
 
ConstPtr< PlatformLimitsDescriptorGetPlatformLimitsDescriptor (int deviceIndex=MultiDevice::DefaultDeviceIndex) const override
 
void QueueRayTracingShaderTableForBuild (RayTracingShaderTable *rayTracingShaderTable) override
 
XRRenderingInterfaceGetXRSystem () const override
 
const RHI::TransientAttachmentStatisticsGetTransientAttachmentStatistics () const override
 
const RHI::MemoryStatisticsGetMemoryStatistics () const override
 
void WriteResourcePoolInfoToJson (const AZStd::vector< RHI::MemoryStatistics::Pool > &pools, rapidjson::Document &doc) const override
 
AZ::Outcome< void, AZStd::string > LoadResourcePoolInfoFromJson (AZStd::vector< RHI::MemoryStatistics::Pool > &pools, AZStd::vector< RHI::MemoryStatistics::Heap > &heaps, rapidjson::Document &doc, const AZStd::string &fileName) const override
 
void TriggerResourcePoolAllocInfoDump () const override
 
- Public Member Functions inherited from AZ::RHI::RHISystemInterface
 AZ_RTTI (RHISystemInterface, "{B70BB184-D7D5-4C15-9C82-C9459F552F13}")
 
 AZ_DISABLE_COPY_MOVE (RHISystemInterface)
 
virtual RHI::DeviceGetDevice (int deviceIndex=MultiDevice::DefaultDeviceIndex)=0
 
virtual int GetDeviceCount ()=0
 
virtual RHI::DrawListTagRegistryGetDrawListTagRegistry ()=0
 
virtual RHI::PipelineStateCacheGetPipelineStateCache ()=0
 
virtual void ModifyFrameSchedulerStatisticsFlags (RHI::FrameSchedulerStatisticsFlags statisticsFlags, bool enableFlags)=0
 
virtual double GetCpuFrameTime () const =0
 
virtual uint16_t GetNumActiveRenderPipelines () const =0
 
virtual const RHI::TransientAttachmentPoolDescriptorGetTransientAttachmentPoolDescriptor () const =0
 
virtual ConstPtr< PlatformLimitsDescriptorGetPlatformLimitsDescriptor (int deviceIndex=MultiDevice::DefaultDeviceIndex) const =0
 
virtual void QueueRayTracingShaderTableForBuild (RayTracingShaderTable *rayTracingShaderTable)=0
 
virtual XRRenderingInterfaceGetXRSystem () const =0
 
- Public Member Functions inherited from AZ::RHI::RHIMemoryStatisticsInterface
 AZ_RTTI (RHIMemoryStatisticsInterface, "{C3789EE2-7922-434D-AC19-8A2D80194C0E}")
 
 AZ_DISABLE_COPY_MOVE (RHIMemoryStatisticsInterface)
 
virtual const RHI::TransientAttachmentStatisticsGetTransientAttachmentStatistics () const =0
 
virtual const RHI::MemoryStatisticsGetMemoryStatistics () const =0
 
virtual void WriteResourcePoolInfoToJson (const AZStd::vector< RHI::MemoryStatistics::Pool > &pools, rapidjson::Document &doc) const =0
 
virtual AZ::Outcome< void, AZStd::string > LoadResourcePoolInfoFromJson (AZStd::vector< RHI::MemoryStatistics::Pool > &pools, AZStd::vector< RHI::MemoryStatistics::Heap > &heaps, rapidjson::Document &doc, const AZStd::string &fileName) const =0
 
virtual void TriggerResourcePoolAllocInfoDump () const =0
 

Additional Inherited Members

- Static Public Member Functions inherited from AZ::RHI::RHISystemInterface
static RHISystemInterfaceGet ()
 
- Static Public Member Functions inherited from AZ::RHI::RHIMemoryStatisticsInterface
static RHIMemoryStatisticsInterfaceGet ()
 

Member Function Documentation

◆ GetCpuFrameTime()

double AZ::RHI::RHISystem::GetCpuFrameTime ( ) const
overridevirtual

◆ GetDevice()

RHI::Device * AZ::RHI::RHISystem::GetDevice ( int  deviceIndex = MultiDevice::DefaultDeviceIndex)
overridevirtual

◆ GetDeviceCount()

int AZ::RHI::RHISystem::GetDeviceCount ( )
overridevirtual

◆ GetDrawListTagRegistry()

RHI::DrawListTagRegistry * AZ::RHI::RHISystem::GetDrawListTagRegistry ( )
overridevirtual

◆ GetMemoryStatistics()

const RHI::MemoryStatistics * AZ::RHI::RHISystem::GetMemoryStatistics ( ) const
overridevirtual

◆ GetNumActiveRenderPipelines()

uint16_t AZ::RHI::RHISystem::GetNumActiveRenderPipelines ( ) const
virtual

◆ GetPipelineStateCache()

RHI::PipelineStateCache * AZ::RHI::RHISystem::GetPipelineStateCache ( )
overridevirtual

◆ GetPlatformLimitsDescriptor()

ConstPtr< PlatformLimitsDescriptor > AZ::RHI::RHISystem::GetPlatformLimitsDescriptor ( int  deviceIndex = MultiDevice::DefaultDeviceIndex) const
overridevirtual

◆ GetTransientAttachmentPoolDescriptor()

const RHI::TransientAttachmentPoolDescriptor * AZ::RHI::RHISystem::GetTransientAttachmentPoolDescriptor ( ) const
overridevirtual

◆ GetTransientAttachmentStatistics()

const RHI::TransientAttachmentStatistics * AZ::RHI::RHISystem::GetTransientAttachmentStatistics ( ) const
overridevirtual

◆ GetXRSystem()

XRRenderingInterface * AZ::RHI::RHISystem::GetXRSystem ( ) const
overridevirtual

◆ Init()

void AZ::RHI::RHISystem::Init ( RHI::Ptr< RHI::ShaderResourceGroupLayout bindlessSrgLayout = nullptr)

This function initializes the rest of the RHI/RHI backend. bindlessSrgLayout in this case is layout associated with the bindless srg (Bindless.azsli).

◆ InitDevices()

ResultCode AZ::RHI::RHISystem::InitDevices ( InitDevicesFlags  initializationVariant = InitDevicesFlags::SingleDevice)

This function just initializes the native device and RHI::Device as a result. We can use this device to then query for device capabilities.

◆ LoadResourcePoolInfoFromJson()

AZ::Outcome< void, AZStd::string > AZ::RHI::RHISystem::LoadResourcePoolInfoFromJson ( AZStd::vector< RHI::MemoryStatistics::Pool > &  pools,
AZStd::vector< RHI::MemoryStatistics::Heap > &  heaps,
rapidjson::Document &  doc,
const AZStd::string &  fileName 
) const
overridevirtual

Utility function to load previously captured pool statistics from json. The function clears the passed pools and heaps vectors.

Implements AZ::RHI::RHIMemoryStatisticsInterface.

◆ ModifyFrameSchedulerStatisticsFlags()

void AZ::RHI::RHISystem::ModifyFrameSchedulerStatisticsFlags ( RHI::FrameSchedulerStatisticsFlags  statisticsFlags,
bool  enableFlags 
)
overridevirtual

◆ QueueRayTracingShaderTableForBuild()

void AZ::RHI::RHISystem::QueueRayTracingShaderTableForBuild ( RayTracingShaderTable rayTracingShaderTable)
overridevirtual

◆ TriggerResourcePoolAllocInfoDump()

void AZ::RHI::RHISystem::TriggerResourcePoolAllocInfoDump ( ) const
overridevirtual

Utility function to write the current state of all resource pools to a json file Useful for programmatically triggered dumps.

Implements AZ::RHI::RHIMemoryStatisticsInterface.

◆ WriteResourcePoolInfoToJson()

void AZ::RHI::RHISystem::WriteResourcePoolInfoToJson ( const AZStd::vector< RHI::MemoryStatistics::Pool > &  pools,
rapidjson::Document &  doc 
) const
overridevirtual

Utility function to write the state of the provided pool statistics to json. The function assumes the pool data will not be modified while it is being converted.

Implements AZ::RHI::RHIMemoryStatisticsInterface.


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