UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FDynamicRHI Class Referenceabstract

#include <DynamicRHI.h>

+ Inheritance diagram for FDynamicRHI:

Classes

struct  FRHIEndFrameArgs
 
struct  FRHIFinalizeContextArgs
 
struct  FRHISubmitCommandListsArgs
 

Public Types

using FRHICalcTextureSizeResult = ::FRHICalcTextureSizeResult
 

Public Member Functions

virtual RHI_API ~FDynamicRHI ()
 
virtual void Init ()=0
 
virtual void PostInit ()
 
virtual void Shutdown ()=0
 
virtual const TCHARGetName ()=0
 
virtual ERHIInterfaceType GetInterfaceType () const
 
virtual FDynamicRHIGetNonValidationRHI ()
 
void InitPixelFormatInfo (const TArray< uint32 > &PixelFormatBlockBytesIn)
 
virtual RHI_API void RHIEndFrame_RenderThread (FRHICommandListImmediate &RHICmdList)
 
virtual void RHIEndFrame (const FRHIEndFrameArgs &Args)=0
 
virtual FSamplerStateRHIRef RHICreateSamplerState (const FSamplerStateInitializerRHI &Initializer)=0
 
virtual FRasterizerStateRHIRef RHICreateRasterizerState (const FRasterizerStateInitializerRHI &Initializer)=0
 
virtual FDepthStencilStateRHIRef RHICreateDepthStencilState (const FDepthStencilStateInitializerRHI &Initializer)=0
 
virtual FBlendStateRHIRef RHICreateBlendState (const FBlendStateInitializerRHI &Initializer)=0
 
virtual FVertexDeclarationRHIRef RHICreateVertexDeclaration (const FVertexDeclarationElementList &Elements)=0
 
virtual FPixelShaderRHIRef RHICreatePixelShader (TArrayView< const uint8 > Code, const FSHAHash &Hash)=0
 
virtual FVertexShaderRHIRef RHICreateVertexShader (TArrayView< const uint8 > Code, const FSHAHash &Hash)=0
 
virtual FGeometryShaderRHIRef RHICreateGeometryShader (TArrayView< const uint8 > Code, const FSHAHash &Hash)=0
 
virtual FMeshShaderRHIRef RHICreateMeshShader (TArrayView< const uint8 > Code, const FSHAHash &Hash)
 
virtual FAmplificationShaderRHIRef RHICreateAmplificationShader (TArrayView< const uint8 > Code, const FSHAHash &Hash)
 
virtual void FlushPendingLogs ()
 
virtual FComputeShaderRHIRef RHICreateComputeShader (TArrayView< const uint8 > Code, const FSHAHash &Hash)=0
 
virtual FWorkGraphShaderRHIRef RHICreateWorkGraphShader (TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency)
 
virtual FRHIShaderLibraryRef RHICreateShaderLibrary (EShaderPlatform Platform, FString const &FilePath, FString const &Name)
 
virtual FGPUFenceRHIRef RHICreateGPUFence (const FName &Name)=0
 
virtual RHI_API void RHIWriteGPUFence_TopOfPipe (FRHICommandListBase &RHICmdList, FRHIGPUFence *FenceRHI)
 
virtual void RHICreateTransition (FRHITransition *Transition, const FRHITransitionCreateInfo &CreateInfo)
 
virtual void RHIReleaseTransition (FRHITransition *Transition)
 
virtual IRHITransientResourceAllocatorRHICreateTransientResourceAllocator ()
 
virtual FStagingBufferRHIRef RHICreateStagingBuffer ()
 
virtual RHI_API voidRHILockStagingBuffer (FRHIStagingBuffer *StagingBuffer, FRHIGPUFence *Fence, uint32 Offset, uint32 SizeRHI)
 
virtual RHI_API void RHIUnlockStagingBuffer (FRHIStagingBuffer *StagingBuffer)
 
virtual RHI_API voidLockStagingBuffer_RenderThread (class FRHICommandListImmediate &RHICmdList, FRHIStagingBuffer *StagingBuffer, FRHIGPUFence *Fence, uint32 Offset, uint32 SizeRHI)
 
virtual RHI_API void UnlockStagingBuffer_RenderThread (class FRHICommandListImmediate &RHICmdList, FRHIStagingBuffer *StagingBuffer)
 
virtual FBoundShaderStateRHIRef RHICreateBoundShaderState (FRHIVertexDeclaration *VertexDeclaration, FRHIVertexShader *VertexShader, FRHIPixelShader *PixelShader, FRHIGeometryShader *GeometryShader)=0
 
virtual FGraphicsPipelineStateRHIRef RHICreateGraphicsPipelineState (const FGraphicsPipelineStateInitializer &Initializer)=0
 
virtual FComputePipelineStateRHIRef RHICreateComputePipelineState (const FComputePipelineStateInitializer &Initializer)=0
 
virtual FWorkGraphPipelineStateRHIRef RHICreateWorkGraphPipelineState (const FWorkGraphPipelineStateInitializer &Initializer)
 
virtual FUniformBufferRHIRef RHICreateUniformBuffer (const void *Contents, const FRHIUniformBufferLayout *Layout, EUniformBufferUsage Usage, EUniformBufferValidation Validation)=0
 
virtual void RHIUpdateUniformBuffer (FRHICommandListBase &RHICmdList, FRHIUniformBuffer *UniformBufferRHI, const void *Contents)=0
 
virtual void RHIReplaceResources (FRHICommandListBase &RHICmdList, TArray< FRHIResourceReplaceInfo > &&ReplaceInfos)=0
 
virtual FRHIBufferInitializer RHICreateBufferInitializer (FRHICommandListBase &RHICmdList, const FRHIBufferCreateDesc &CreateDesc)=0
 
virtual RHI_API voidRHILockBuffer (FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 Offset, uint32 Size, EResourceLockMode LockMode)
 
virtual RHI_API voidRHILockBufferMGPU (FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 GPUIndex, uint32 Offset, uint32 Size, EResourceLockMode LockMode)
 
virtual RHI_API void RHIUnlockBuffer (FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer)
 
virtual RHI_API void RHIUnlockBufferMGPU (FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 GPUIndex)
 
virtual RHI_API void RHIUpdateTextureReference (FRHICommandListBase &RHICmdList, FRHITextureReference *TextureRef, FRHITexture *NewTexture)
 
virtual FRHICalcTextureSizeResult RHICalcTexturePlatformSize (FRHITextureDesc const &Desc, uint32 FirstMipIndex)=0
 
virtual RHI_API uint64 RHIGetMinimumAlignmentForBufferBackedSRV (EPixelFormat Format)
 
virtual void RHIGetTextureMemoryStats (FTextureMemoryStats &OutStats)=0
 
virtual bool RHIGetTextureMemoryVisualizeData (FColor *TextureData, int32 SizeX, int32 SizeY, int32 Pitch, int32 PixelSize)=0
 
virtual FRHITextureInitializer RHICreateTextureInitializer (FRHICommandListBase &RHICmdList, const FRHITextureCreateDesc &CreateDesc)=0
 
virtual FTextureRHIRef RHIAsyncCreateTexture2D (uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags Flags, ERHIAccess InResourceState, void **InitialMipData, uint32 NumInitialMips, const TCHAR *DebugName, FGraphEventRef &OutCompletionEvent)=0
 
virtual RHI_API FTextureReferenceRHIRef RHICreateTextureReference (FRHICommandListBase &RHICmdList, FRHITexture *InReferencedTexture)
 
virtual FShaderResourceViewRHIRef RHICreateShaderResourceView (class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc)=0
 
virtual FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView (class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc)=0
 
virtual FRHIResourceCollectionRef RHICreateResourceCollection (FRHICommandListBase &RHICmdList, TConstArrayView< FRHIResourceCollectionMember > InMembers)
 
virtual void RHIUpdateResourceCollection (FRHICommandListBase &RHICmdList, FRHIResourceCollection *InResourceCollection, uint32 InStartIndex, TConstArrayView< FRHIResourceCollectionMember > InMemberUpdates)
 
virtual uint32 RHIComputeMemorySize (FRHITexture *TextureRHI)=0
 
virtual FTextureRHIRef RHIAsyncReallocateTexture2D (FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus)=0
 
virtual FRHILockTextureResult RHILockTexture (FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments)=0
 
virtual void RHIUnlockTexture (FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments)=0
 
virtual void RHIUpdateTexture2D (FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, const uint8 *SourceData)=0
 
virtual void RHIUpdateFromBufferTexture2D (FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, FRHIBuffer *Buffer, uint32 BufferOffset)
 
virtual void RHIUpdateTexture3D (FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8 *SourceData)=0
 
virtual RHI_API void RHIBindDebugLabelName (FRHICommandListBase &RHICmdList, FRHITexture *Texture, const TCHAR *Name)
 
virtual RHI_API void RHIBindDebugLabelName (FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, const TCHAR *Name)
 
virtual RHI_API void RHIBindDebugLabelName (FRHICommandListBase &RHICmdList, FRHIUnorderedAccessView *UnorderedAccessViewRHI, const TCHAR *Name)
 
virtual void RHIReadSurfaceData (FRHITexture *Texture, FIntRect Rect, TArray< FColor > &OutData, FReadSurfaceDataFlags InFlags)=0
 
virtual RHI_API void RHIReadSurfaceData (FRHITexture *Texture, FIntRect Rect, TArray< FLinearColor > &OutData, FReadSurfaceDataFlags InFlags)
 
virtual void RHIMapStagingSurface (FRHITexture *Texture, FRHIGPUFence *Fence, void *&OutData, int32 &OutWidth, int32 &OutHeight, uint32 GPUIndex=0)=0
 
virtual void RHIUnmapStagingSurface (FRHITexture *Texture, uint32 GPUIndex=0)=0
 
virtual void RHIReadSurfaceFloatData (FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex)=0
 
virtual RHI_API void RHIReadSurfaceFloatData (FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, FReadSurfaceDataFlags InFlags)
 
virtual void RHIRead3DSurfaceFloatData (FRHITexture *Texture, FIntRect Rect, FIntPoint ZMinMax, TArray< FFloat16Color > &OutData)=0
 
virtual RHI_API void RHIRead3DSurfaceFloatData (FRHITexture *Texture, FIntRect Rect, FIntPoint ZMinMax, TArray< FFloat16Color > &OutData, FReadSurfaceDataFlags InFlags)
 
virtual FRenderQueryRHIRef RHICreateRenderQuery (ERenderQueryType QueryType)=0
 
virtual void RHIBeginRenderQueryBatch_TopOfPipe (FRHICommandListBase &RHICmdList, ERenderQueryType QueryType)
 
virtual void RHIEndRenderQueryBatch_TopOfPipe (FRHICommandListBase &RHICmdList, ERenderQueryType QueryType)
 
virtual RHI_API void RHIBeginRenderQuery_TopOfPipe (FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery)
 
virtual RHI_API void RHIEndRenderQuery_TopOfPipe (FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery)
 
virtual bool RHIGetRenderQueryResult (FRHIRenderQuery *RenderQuery, uint64 &OutResult, bool bWait, uint32 GPUIndex=INDEX_NONE)=0
 
virtual uint32 RHIGetViewportNextPresentGPUIndex (FRHIViewport *Viewport)
 
virtual FTextureRHIRef RHIGetViewportBackBuffer (FRHIViewport *Viewport)=0
 
virtual FUnorderedAccessViewRHIRef RHIGetViewportBackBufferUAV (FRHIViewport *ViewportRHI)
 
virtual uint32 RHIGetHTilePlatformConfig (uint32 DepthWidth, uint32 DepthHeight) const
 
virtual uint32 RHIGetHTilePlatformConfig (const FRHITextureDesc &DepthDesc) const
 
virtual void RHIAliasTextureResources (FTextureRHIRef &DestTexture, FTextureRHIRef &SrcTexture)
 
virtual FTextureRHIRef RHICreateAliasedTexture (FTextureRHIRef &SourceTexture)
 
virtual void RHIGetDisplaysInformation (FDisplayInformationArray &OutDisplayInformation)
 
virtual RHI_API uint64 RHIComputeStatePrecachePSOHash (const FGraphicsPipelineStateInitializer &Initializer)
 
virtual RHI_API uint64 RHIComputePrecachePSOHash (const FGraphicsPipelineStateInitializer &Initializer)
 
virtual RHI_API bool RHIMatchPrecachePSOInitializers (const FGraphicsPipelineStateInitializer &LHS, const FGraphicsPipelineStateInitializer &RHS)
 
virtual void RHIAdvanceFrameForGetViewportBackBuffer (FRHIViewport *Viewport, bool bPresent)=0
 
virtual void RHIAcquireThreadOwnership ()
 
virtual void RHIReleaseThreadOwnership ()
 
virtual void RHIFlushResources ()=0
 
virtual FViewportRHIRef RHICreateViewport (void *WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)=0
 
virtual void RHIResizeViewport (FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen)=0
 
virtual void RHIResizeViewport (FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)
 
virtual EPixelFormat RHIPreferredPixelFormatHint (EPixelFormat PreferredPixelFormat)
 
virtual RHI_API void RHICheckViewportHDRStatus (FRHIViewport *Viewport)
 
virtual void RHIHandleDisplayChange ()
 
virtual void RHITick (float DeltaTime)=0
 
virtual void RHIBlockUntilGPUIdle ()=0
 
virtual void RHIBeginSuspendRendering ()
 
virtual void RHISuspendRendering ()
 
virtual void RHIResumeRendering ()
 
virtual bool RHIIsRenderingSuspended ()
 
virtual bool RHIGetAvailableResolutions (FScreenResolutionArray &Resolutions, bool bIgnoreRefreshRate)=0
 
virtual void RHIGetSupportedResolution (uint32 &Width, uint32 &Height)=0
 
virtual RHI_API void RHIVirtualTextureSetFirstMipInMemory (class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, uint32 FirstMip)
 
virtual RHI_API void RHIVirtualTextureSetFirstMipVisible (class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, uint32 FirstMip)
 
virtual voidRHIGetNativeDevice ()=0
 
virtual voidRHIGetNativePhysicalDevice ()
 
virtual voidRHIGetNativeGraphicsQueue ()
 
virtual voidRHIGetNativeComputeQueue ()
 
virtual voidRHIGetNativeInstance ()=0
 
virtual voidRHIGetNativeCommandBuffer ()
 
virtual IRHICommandContextRHIGetDefaultContext ()=0
 
virtual IRHIComputeContextRHIGetCommandContext (ERHIPipeline Pipeline, FRHIGPUMask GPUMask)=0
 
virtual IRHIComputeContextRHIGetParallelCommandContext (FRHIParallelRenderPassInfo const &ParallelRenderPass, FRHIGPUMask GPUMask)
 
virtual IRHIUploadContextRHIGetUploadContext ()
 
void RHICloseTranslateChain (FRHIFinalizeContextArgs &&Args, TRHIPipelineArray< IRHIPlatformCommandList * > &Output, bool bShouldFinalize)
 
virtual void RHIFinalizeContext (FRHIFinalizeContextArgs &&Args, TRHIPipelineArray< IRHIPlatformCommandList * > &Output)=0
 
virtual IRHIPlatformCommandListRHIFinalizeParallelContext (IRHIComputeContext *Context)
 
virtual void RHISubmitCommandLists (FRHISubmitCommandListsArgs &&Args)=0
 
virtual void RHIProcessDeleteQueue ()
 
virtual RHI_API FTextureRHIRef AsyncReallocateTexture2D_RenderThread (class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus)
 
virtual RHI_API FUpdateTexture3DData RHIBeginUpdateTexture3D (FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion)
 
virtual RHI_API void RHIEndUpdateTexture3D (FRHICommandListBase &RHICmdList, FUpdateTexture3DData &UpdateData)
 
virtual RHI_API void RHIEndMultiUpdateTexture3D (FRHICommandListBase &RHICmdList, TArray< FUpdateTexture3DData > &UpdateDataArray)
 
virtual RHI_API FRHIShaderLibraryRef RHICreateShaderLibrary_RenderThread (class FRHICommandListImmediate &RHICmdList, EShaderPlatform Platform, FString FilePath, FString Name)
 
virtual RHI_API void RHIMapStagingSurface_RenderThread (class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, uint32 GPUIndex, FRHIGPUFence *Fence, void *&OutData, int32 &OutWidth, int32 &OutHeight)
 
virtual RHI_API void RHIUnmapStagingSurface_RenderThread (class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, uint32 GPUIndex)
 
virtual RHI_API void RHIReadSurfaceFloatData_RenderThread (class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex)
 
virtual RHI_API void RHIReadSurfaceFloatData_RenderThread (class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, FReadSurfaceDataFlags Flags)
 
virtual voidLockBuffer_BottomOfPipe (class FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 Offset, uint32 SizeRHI, EResourceLockMode LockMode)
 
virtual void UnlockBuffer_BottomOfPipe (class FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer)
 
virtual FRHIFlipDetails RHIWaitForFlip (double TimeoutInSeconds)
 
virtual void RHISignalFlipEvent ()
 
virtual uint16 RHIGetPlatformTextureMaxSampleCount ()
 
virtual FRayTracingAccelerationStructureSize RHICalcRayTracingSceneSize (const FRayTracingSceneInitializer &Initializer)
 
virtual FRayTracingAccelerationStructureSize RHICalcRayTracingGeometrySize (const FRayTracingGeometryInitializer &Initializer)
 
virtual FRayTracingClusterOperationSize RHICalcRayTracingClusterOperationSize (const FRayTracingClusterOperationInitializer &Initializer)
 
virtual FRayTracingAccelerationStructureOfflineMetadata RHIGetRayTracingGeometryOfflineMetadata (const FRayTracingGeometryOfflineDataHeader &OfflineDataHeader)
 
virtual FRayTracingGeometryRHIRef RHICreateRayTracingGeometry (FRHICommandListBase &RHICmdList, const FRayTracingGeometryInitializer &Initializer)
 
virtual FRayTracingSceneRHIRef RHICreateRayTracingScene (FRayTracingSceneInitializer Initializer)
 
virtual FRayTracingShaderRHIRef RHICreateRayTracingShader (TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency)
 
virtual FRayTracingPipelineStateRHIRef RHICreateRayTracingPipelineState (const FRayTracingPipelineStateInitializer &Initializer)
 
virtual FShaderBindingTableRHIRef RHICreateShaderBindingTable (FRHICommandListBase &RHICmdList, const FRayTracingShaderBindingTableInitializer &Initializer)
 
virtual void RHISerializeAccelerationStructure (FRHICommandListImmediate &RHICmdList, FRHIRayTracingScene *Scene, const TCHAR *Path)
 
virtual FShaderBundleRHIRef RHICreateShaderBundle (const FShaderBundleCreateInfo &CreateInfo)
 

Static Public Member Functions

static RHI_API void EnableIdealGPUCaptureOptions (bool bEnable)
 

Protected Attributes

TArray< uint32PixelFormatBlockBytes
 

Friends

class FValidationRHI
 

Detailed Description

The interface which is implemented by the dynamically bound RHI.

Member Typedef Documentation

◆ FRHICalcTextureSizeResult

Constructor & Destructor Documentation

◆ ~FDynamicRHI()

FDynamicRHI::~FDynamicRHI ( )
virtualdefault

Declare a virtual destructor, so the dynamic RHI can be deleted without knowing its type.

Member Function Documentation

◆ AsyncReallocateTexture2D_RenderThread()

FTextureRHIRef FDynamicRHI::AsyncReallocateTexture2D_RenderThread ( class FRHICommandListImmediate RHICmdList,
FRHITexture Texture2D,
int32  NewMipCount,
int32  NewSizeX,
int32  NewSizeY,
FThreadSafeCounter RequestStatus 
)
virtual

◆ EnableIdealGPUCaptureOptions()

void FDynamicRHI::EnableIdealGPUCaptureOptions ( bool  bEnable)
static

◆ FlushPendingLogs()

virtual void FDynamicRHI::FlushPendingLogs ( )
inlinevirtual

Reimplemented in FD3D11DynamicRHI.

◆ GetInterfaceType()

virtual ERHIInterfaceType FDynamicRHI::GetInterfaceType ( ) const
inlinevirtual

◆ GetName()

virtual const TCHAR * FDynamicRHI::GetName ( )
pure virtual

◆ GetNonValidationRHI()

virtual FDynamicRHI * FDynamicRHI::GetNonValidationRHI ( )
inlinevirtual

◆ Init()

virtual void FDynamicRHI::Init ( )
pure virtual

Initializes the RHI; separate from IDynamicRHIModule::CreateRHI so that GDynamicRHI is set when it is called.

Implemented in FMetalDynamicRHI, FNullDynamicRHI, FVulkanDynamicRHI, FD3D12DynamicRHI, FOpenGLDynamicRHI, and FD3D11DynamicRHI.

◆ InitPixelFormatInfo()

void FDynamicRHI::InitPixelFormatInfo ( const TArray< uint32 > &  PixelFormatBlockBytesIn)
inline

Called after PostInit to initialize the pixel format info, which is needed for some commands default implementations

◆ LockBuffer_BottomOfPipe()

virtual void * FDynamicRHI::LockBuffer_BottomOfPipe ( class FRHICommandListBase RHICmdList,
FRHIBuffer Buffer,
uint32  Offset,
uint32  SizeRHI,
EResourceLockMode  LockMode 
)
inlinevirtual

◆ LockStagingBuffer_RenderThread()

void * FDynamicRHI::LockStagingBuffer_RenderThread ( class FRHICommandListImmediate RHICmdList,
FRHIStagingBuffer StagingBuffer,
FRHIGPUFence Fence,
uint32  Offset,
uint32  SizeRHI 
)
virtual

Lock a staging buffer to read contents on the CPU that were written by the GPU, without having to stall. @discussion This function requires that you have issued an CopyToStagingBuffer invocation and verified that the FRHIGPUFence has been signaled before calling.

Parameters
RHICmdListThe command-list to execute on or synchronize with.
StagingBufferThe buffer to lock.
FenceAn optional fence synchronized with the last buffer update.
OffsetThe offset in the buffer to return.
SizeRHIThe length of the region in the buffer to lock.
Returns
A pointer to the data starting at 'Offset' and of length 'SizeRHI' from 'StagingBuffer', or nullptr when there is an error.

Reimplemented in FOpenGLDynamicRHI.

◆ PostInit()

virtual void FDynamicRHI::PostInit ( )
inlinevirtual

Called after the RHI is initialized; before the render thread is started.

Reimplemented in FVulkanDynamicRHI, and FD3D12DynamicRHI.

◆ RHIAcquireThreadOwnership()

virtual void FDynamicRHI::RHIAcquireThreadOwnership ( )
inlinevirtual

Reimplemented in FOpenGLDynamicRHI.

◆ RHIAdvanceFrameForGetViewportBackBuffer()

virtual void FDynamicRHI::RHIAdvanceFrameForGetViewportBackBuffer ( FRHIViewport Viewport,
bool  bPresent 
)
pure virtual

◆ RHIAliasTextureResources()

virtual void FDynamicRHI::RHIAliasTextureResources ( FTextureRHIRef DestTexture,
FTextureRHIRef SrcTexture 
)
inlinevirtual

◆ RHIAsyncCreateTexture2D()

virtual FTextureRHIRef FDynamicRHI::RHIAsyncCreateTexture2D ( uint32  SizeX,
uint32  SizeY,
uint8  Format,
uint32  NumMips,
ETextureCreateFlags  Flags,
ERHIAccess  InResourceState,
void **  InitialMipData,
uint32  NumInitialMips,
const TCHAR DebugName,
FGraphEventRef OutCompletionEvent 
)
pure virtual

Thread-safe function that can be used to create a texture outside of the rendering thread. This function can ONLY be called if GRHISupportsAsyncTextureCreation is true. Cannot create rendertargets with this method.

Parameters
SizeX- width of the texture to create
SizeY- height of the texture to create
Format- EPixelFormat texture format
NumMips- number of mips to generate or 0 for full mip pyramid
Flags- ETextureCreateFlags creation flags
InitialMipData- pointers to mip data with which to create the texture
NumInitialMips- how many mips are provided in InitialMipData
OutCompletionEvent- An event signaled on operation completion. Can return null. Operation can still be pending after function returns (e.g. initial data upload in-flight)
Returns
a reference to a 2D texture resource

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIAsyncReallocateTexture2D()

virtual FTextureRHIRef FDynamicRHI::RHIAsyncReallocateTexture2D ( FRHITexture Texture2D,
int32  NewMipCount,
int32  NewSizeX,
int32  NewSizeY,
FThreadSafeCounter RequestStatus 
)
pure virtual

Starts an asynchronous texture reallocation. It may complete immediately if the reallocation could be performed without any reshuffling of texture memory, or if there isn't enough memory. The specified status counter will be decremented by 1 when the reallocation is complete (success or failure).

Returns a new reference to the texture, which will represent the new mip count when the reallocation is complete. RHIFinalizeAsyncReallocateTexture2D() must be called to complete the reallocation.

Parameters
Texture2D- Texture to reallocate
NewMipCount- New number of mip-levels
NewSizeX- New width, in pixels
NewSizeY- New height, in pixels
RequestStatus- Will be decremented by 1 when the reallocation is complete (success or failure).
Returns
- New reference to the texture, or an invalid reference upon failure

Implemented in FMetalDynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, FD3D11DynamicRHI, and FD3D12DynamicRHI.

◆ RHIBeginRenderQuery_TopOfPipe()

void FDynamicRHI::RHIBeginRenderQuery_TopOfPipe ( FRHICommandListBase RHICmdList,
FRHIRenderQuery RenderQuery 
)
virtual

Reimplemented in FMetalDynamicRHI, and FOpenGLDynamicRHI.

◆ RHIBeginRenderQueryBatch_TopOfPipe()

virtual void FDynamicRHI::RHIBeginRenderQueryBatch_TopOfPipe ( FRHICommandListBase RHICmdList,
ERenderQueryType  QueryType 
)
inlinevirtual

◆ RHIBeginSuspendRendering()

virtual void FDynamicRHI::RHIBeginSuspendRendering ( )
inlinevirtual

◆ RHIBeginUpdateTexture3D()

FUpdateTexture3DData FDynamicRHI::RHIBeginUpdateTexture3D ( FRHICommandListBase RHICmdList,
FRHITexture Texture,
uint32  MipIndex,
const struct FUpdateTextureRegion3D UpdateRegion 
)
virtual

◆ RHIBindDebugLabelName() [1/3]

void FDynamicRHI::RHIBindDebugLabelName ( FRHICommandListBase RHICmdList,
FRHIBuffer Buffer,
const TCHAR Name 
)
virtual

Reimplemented in FD3D12DynamicRHI, and FD3D11DynamicRHI.

◆ RHIBindDebugLabelName() [2/3]

void FDynamicRHI::RHIBindDebugLabelName ( FRHICommandListBase RHICmdList,
FRHITexture Texture,
const TCHAR Name 
)
virtual

◆ RHIBindDebugLabelName() [3/3]

void FDynamicRHI::RHIBindDebugLabelName ( FRHICommandListBase RHICmdList,
FRHIUnorderedAccessView UnorderedAccessViewRHI,
const TCHAR Name 
)
virtual

Reimplemented in FD3D11DynamicRHI.

◆ RHIBlockUntilGPUIdle()

virtual void FDynamicRHI::RHIBlockUntilGPUIdle ( )
pure virtual

◆ RHICalcRayTracingClusterOperationSize()

virtual FRayTracingClusterOperationSize FDynamicRHI::RHICalcRayTracingClusterOperationSize ( const FRayTracingClusterOperationInitializer Initializer)
inlinevirtual

◆ RHICalcRayTracingGeometrySize()

virtual FRayTracingAccelerationStructureSize FDynamicRHI::RHICalcRayTracingGeometrySize ( const FRayTracingGeometryInitializer Initializer)
inlinevirtual

Reimplemented in FVulkanDynamicRHI.

◆ RHICalcRayTracingSceneSize()

virtual FRayTracingAccelerationStructureSize FDynamicRHI::RHICalcRayTracingSceneSize ( const FRayTracingSceneInitializer Initializer)
inlinevirtual

Reimplemented in FVulkanDynamicRHI.

◆ RHICalcTexturePlatformSize()

virtual FRHICalcTextureSizeResult FDynamicRHI::RHICalcTexturePlatformSize ( FRHITextureDesc const &  Desc,
uint32  FirstMipIndex 
)
pure virtual

Computes the total GPU memory a texture resource with the specified parameters will occupy on the current RHI platform. Also returns the required alignment for the resource.

Parameters
Desc- The texture descriptor (width, height, format etc)
FirstMipIndex- The index of the most detailed mip to consider in the memory size calculation.
Returns
- The computed size and alignment of the platform texture resource.

Implemented in FD3D12DynamicRHI, FMetalDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, FD3D11DynamicRHI, and FNullDynamicRHI.

◆ RHICheckViewportHDRStatus()

void FDynamicRHI::RHICheckViewportHDRStatus ( FRHIViewport Viewport)
virtual

Reimplemented in FNullDynamicRHI.

◆ RHICloseTranslateChain()

void FDynamicRHI::RHICloseTranslateChain ( FRHIFinalizeContextArgs &&  Args,
TRHIPipelineArray< IRHIPlatformCommandList * > &  Output,
bool  bShouldFinalize 
)
inline

◆ RHIComputeMemorySize()

virtual uint32 FDynamicRHI::RHIComputeMemorySize ( FRHITexture TextureRHI)
pure virtual

Computes the size in memory required by a given texture.

Parameters
TextureRHI- Texture we want to know the size of, 0 is safely ignored
Returns
- Size in Bytes

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIComputePrecachePSOHash()

uint64 FDynamicRHI::RHIComputePrecachePSOHash ( const FGraphicsPipelineStateInitializer Initializer)
virtual

◆ RHIComputeStatePrecachePSOHash()

uint64 FDynamicRHI::RHIComputeStatePrecachePSOHash ( const FGraphicsPipelineStateInitializer Initializer)
virtual

◆ RHICreateAliasedTexture()

virtual FTextureRHIRef FDynamicRHI::RHICreateAliasedTexture ( FTextureRHIRef SourceTexture)
inlinevirtual

◆ RHICreateAmplificationShader()

virtual FAmplificationShaderRHIRef FDynamicRHI::RHICreateAmplificationShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
inlinevirtual

Reimplemented in FD3D12DynamicRHI, and FVulkanDynamicRHI.

◆ RHICreateBlendState()

virtual FBlendStateRHIRef FDynamicRHI::RHICreateBlendState ( const FBlendStateInitializerRHI Initializer)
pure virtual

◆ RHICreateBoundShaderState()

virtual FBoundShaderStateRHIRef FDynamicRHI::RHICreateBoundShaderState ( FRHIVertexDeclaration VertexDeclaration,
FRHIVertexShader VertexShader,
FRHIPixelShader PixelShader,
FRHIGeometryShader GeometryShader 
)
pure virtual

Creates a bound shader state instance which encapsulates a decl, vertex shader and pixel shader CAUTION: Even though this is marked as threadsafe, it is only valid to call from the render thread or the RHI thread. It need not be threadsafe unless the RHI support parallel translation. CAUTION: Platforms that support RHIThread but don't actually have a threadsafe implementation must flush internally with FScopedRHIThreadStaller StallRHIThread(FRHICommandListExecutor::GetImmediateCommandList()); when the call is from the render thread

Parameters
VertexDeclaration- existing vertex decl
VertexShader- existing vertex shader
GeometryShader- existing geometry shader
PixelShader- existing pixel shader

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FVulkanDynamicRHI, FD3D11DynamicRHI, and FOpenGLDynamicRHI.

◆ RHICreateBufferInitializer()

virtual FRHIBufferInitializer FDynamicRHI::RHICreateBufferInitializer ( FRHICommandListBase RHICmdList,
const FRHIBufferCreateDesc CreateDesc 
)
pure virtual

◆ RHICreateComputePipelineState()

virtual FComputePipelineStateRHIRef FDynamicRHI::RHICreateComputePipelineState ( const FComputePipelineStateInitializer Initializer)
pure virtual

◆ RHICreateComputeShader()

virtual FComputeShaderRHIRef FDynamicRHI::RHICreateComputeShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
pure virtual

◆ RHICreateDepthStencilState()

virtual FDepthStencilStateRHIRef FDynamicRHI::RHICreateDepthStencilState ( const FDepthStencilStateInitializerRHI Initializer)
pure virtual

◆ RHICreateGeometryShader()

virtual FGeometryShaderRHIRef FDynamicRHI::RHICreateGeometryShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
pure virtual

◆ RHICreateGPUFence()

virtual FGPUFenceRHIRef FDynamicRHI::RHICreateGPUFence ( const FName Name)
pure virtual

◆ RHICreateGraphicsPipelineState()

virtual FGraphicsPipelineStateRHIRef FDynamicRHI::RHICreateGraphicsPipelineState ( const FGraphicsPipelineStateInitializer Initializer)
pure virtual

Creates a graphics pipeline state object (PSO) that represents a complete gpu pipeline for rendering. This function should be considered expensive to call at runtime and may cause hitches as pipelines are compiled.

Parameters
Initializer- Descriptor object defining all the information needed to create the PSO, as well as behavior hints to the RHI.
Returns
FGraphicsPipelineStateRHIRef that can be bound for rendering; nullptr if the compilation fails. CAUTION: On certain RHI implementations (eg, ones that do not support runtime compilation) a compilation failure is a Fatal error and this function will not return. CAUTION: Even though this is marked as threadsafe, it is only valid to call from the render thread or the RHI thread. It need not be threadsafe unless the RHI support parallel translation. CAUTION: Platforms that support RHIThread but don't actually have a threadsafe implementation must flush internally with FScopedRHIThreadStaller StallRHIThread(FRHICommandListExecutor::GetImmediateCommandList()); when the call is from the render thread

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FVulkanDynamicRHI, FOpenGLDynamicRHI, and FDynamicRHIPSOFallback.

◆ RHICreateMeshShader()

virtual FMeshShaderRHIRef FDynamicRHI::RHICreateMeshShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
inlinevirtual

Reimplemented in FD3D12DynamicRHI, and FVulkanDynamicRHI.

◆ RHICreatePixelShader()

virtual FPixelShaderRHIRef FDynamicRHI::RHICreatePixelShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
pure virtual

◆ RHICreateRasterizerState()

virtual FRasterizerStateRHIRef FDynamicRHI::RHICreateRasterizerState ( const FRasterizerStateInitializerRHI Initializer)
pure virtual

◆ RHICreateRayTracingGeometry()

virtual FRayTracingGeometryRHIRef FDynamicRHI::RHICreateRayTracingGeometry ( FRHICommandListBase RHICmdList,
const FRayTracingGeometryInitializer Initializer 
)
inlinevirtual

Reimplemented in FVulkanDynamicRHI.

◆ RHICreateRayTracingPipelineState()

virtual FRayTracingPipelineStateRHIRef FDynamicRHI::RHICreateRayTracingPipelineState ( const FRayTracingPipelineStateInitializer Initializer)
inlinevirtual

Reimplemented in FVulkanDynamicRHI.

◆ RHICreateRayTracingScene()

virtual FRayTracingSceneRHIRef FDynamicRHI::RHICreateRayTracingScene ( FRayTracingSceneInitializer  Initializer)
inlinevirtual

Reimplemented in FVulkanDynamicRHI.

◆ RHICreateRayTracingShader()

virtual FRayTracingShaderRHIRef FDynamicRHI::RHICreateRayTracingShader ( TArrayView< const uint8 Code,
const FSHAHash Hash,
EShaderFrequency  ShaderFrequency 
)
inlinevirtual

Reimplemented in FVulkanDynamicRHI.

◆ RHICreateRenderQuery()

virtual FRenderQueryRHIRef FDynamicRHI::RHICreateRenderQuery ( ERenderQueryType  QueryType)
pure virtual

◆ RHICreateResourceCollection()

virtual FRHIResourceCollectionRef FDynamicRHI::RHICreateResourceCollection ( FRHICommandListBase RHICmdList,
TConstArrayView< FRHIResourceCollectionMember InMembers 
)
inlinevirtual

◆ RHICreateSamplerState()

virtual FSamplerStateRHIRef FDynamicRHI::RHICreateSamplerState ( const FSamplerStateInitializerRHI Initializer)
pure virtual

◆ RHICreateShaderBindingTable()

virtual FShaderBindingTableRHIRef FDynamicRHI::RHICreateShaderBindingTable ( FRHICommandListBase RHICmdList,
const FRayTracingShaderBindingTableInitializer Initializer 
)
inlinevirtual

Reimplemented in FVulkanDynamicRHI.

◆ RHICreateShaderBundle()

virtual FShaderBundleRHIRef FDynamicRHI::RHICreateShaderBundle ( const FShaderBundleCreateInfo CreateInfo)
inlinevirtual

Reimplemented in FD3D12DynamicRHI.

◆ RHICreateShaderLibrary()

virtual FRHIShaderLibraryRef FDynamicRHI::RHICreateShaderLibrary ( EShaderPlatform  Platform,
FString const &  FilePath,
FString const &  Name 
)
inlinevirtual

Attempts to open a shader library for the given shader platform & name within the provided directory.

Parameters
PlatformThe shader platform for shaders withing the library.
FilePathThe directory in which the library should exist.
NameThe name of the library, i.e. "Global" or "Unreal" without shader-platform or file-extension qualification.
Returns
The new library if one exists and can be constructed, otherwise nil.

Reimplemented in FMetalDynamicRHI.

◆ RHICreateShaderLibrary_RenderThread()

FRHIShaderLibraryRef FDynamicRHI::RHICreateShaderLibrary_RenderThread ( class FRHICommandListImmediate RHICmdList,
EShaderPlatform  Platform,
FString  FilePath,
FString  Name 
)
virtual

Reimplemented in FMetalDynamicRHI.

◆ RHICreateShaderResourceView()

virtual FShaderResourceViewRHIRef FDynamicRHI::RHICreateShaderResourceView ( class FRHICommandListBase RHICmdList,
FRHIViewableResource Resource,
FRHIViewDesc const &  ViewDesc 
)
pure virtual

◆ RHICreateStagingBuffer()

virtual FStagingBufferRHIRef FDynamicRHI::RHICreateStagingBuffer ( )
inlinevirtual

Creates a staging buffer, which is memory visible to the cpu without any locking.

Returns
The new staging-buffer.

Reimplemented in FMetalDynamicRHI, FD3D12DynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHICreateTextureInitializer()

virtual FRHITextureInitializer FDynamicRHI::RHICreateTextureInitializer ( FRHICommandListBase RHICmdList,
const FRHITextureCreateDesc CreateDesc 
)
pure virtual

◆ RHICreateTextureReference()

FTextureReferenceRHIRef FDynamicRHI::RHICreateTextureReference ( FRHICommandListBase RHICmdList,
FRHITexture InReferencedTexture 
)
virtual

Create a texture reference. InReferencedTexture can be null.

Reimplemented in FMetalDynamicRHI, FD3D12DynamicRHI, and FVulkanDynamicRHI.

◆ RHICreateTransientResourceAllocator()

virtual IRHITransientResourceAllocator * FDynamicRHI::RHICreateTransientResourceAllocator ( )
inlinevirtual

Create a new transient resource allocator

Reimplemented in FVulkanDynamicRHI, and FD3D12DynamicRHI.

◆ RHICreateTransition()

virtual void FDynamicRHI::RHICreateTransition ( FRHITransition Transition,
const FRHITransitionCreateInfo CreateInfo 
)
inlinevirtual

◆ RHICreateUniformBuffer()

virtual FUniformBufferRHIRef FDynamicRHI::RHICreateUniformBuffer ( const void Contents,
const FRHIUniformBufferLayout Layout,
EUniformBufferUsage  Usage,
EUniformBufferValidation  Validation 
)
pure virtual

Creates a uniform buffer. The contents of the uniform buffer are provided in a parameter, and are immutable. CAUTION: Even though this is marked as threadsafe, it is only valid to call from the render thread or the RHI thread. Thus is need not be threadsafe on platforms that do not support or aren't using an RHIThread

Parameters
Contents- A pointer to a memory block of size NumBytes that is copied into the new uniform buffer.
NumBytes- The number of bytes the uniform buffer should contain.
Returns
The new uniform buffer.

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHICreateUnorderedAccessView()

virtual FUnorderedAccessViewRHIRef FDynamicRHI::RHICreateUnorderedAccessView ( class FRHICommandListBase RHICmdList,
FRHIViewableResource Resource,
FRHIViewDesc const &  ViewDesc 
)
pure virtual

◆ RHICreateVertexDeclaration()

virtual FVertexDeclarationRHIRef FDynamicRHI::RHICreateVertexDeclaration ( const FVertexDeclarationElementList Elements)
pure virtual

◆ RHICreateVertexShader()

virtual FVertexShaderRHIRef FDynamicRHI::RHICreateVertexShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
pure virtual

◆ RHICreateViewport()

virtual FViewportRHIRef FDynamicRHI::RHICreateViewport ( void WindowHandle,
uint32  SizeX,
uint32  SizeY,
bool  bIsFullscreen,
EPixelFormat  PreferredPixelFormat 
)
pure virtual

◆ RHICreateWorkGraphPipelineState()

virtual FWorkGraphPipelineStateRHIRef FDynamicRHI::RHICreateWorkGraphPipelineState ( const FWorkGraphPipelineStateInitializer Initializer)
inlinevirtual

Reimplemented in FD3D12DynamicRHI.

◆ RHICreateWorkGraphShader()

virtual FWorkGraphShaderRHIRef FDynamicRHI::RHICreateWorkGraphShader ( TArrayView< const uint8 Code,
const FSHAHash Hash,
EShaderFrequency  ShaderFrequency 
)
inlinevirtual

Reimplemented in FD3D12DynamicRHI.

◆ RHIEndFrame()

virtual void FDynamicRHI::RHIEndFrame ( const FRHIEndFrameArgs Args)
pure virtual

◆ RHIEndFrame_RenderThread()

void FDynamicRHI::RHIEndFrame_RenderThread ( FRHICommandListImmediate RHICmdList)
virtual

◆ RHIEndMultiUpdateTexture3D()

void FDynamicRHI::RHIEndMultiUpdateTexture3D ( FRHICommandListBase RHICmdList,
TArray< FUpdateTexture3DData > &  UpdateDataArray 
)
virtual

Reimplemented in FD3D12DynamicRHI.

◆ RHIEndRenderQuery_TopOfPipe()

void FDynamicRHI::RHIEndRenderQuery_TopOfPipe ( FRHICommandListBase RHICmdList,
FRHIRenderQuery RenderQuery 
)
virtual

◆ RHIEndRenderQueryBatch_TopOfPipe()

virtual void FDynamicRHI::RHIEndRenderQueryBatch_TopOfPipe ( FRHICommandListBase RHICmdList,
ERenderQueryType  QueryType 
)
inlinevirtual

◆ RHIEndUpdateTexture3D()

void FDynamicRHI::RHIEndUpdateTexture3D ( FRHICommandListBase RHICmdList,
FUpdateTexture3DData UpdateData 
)
virtual

◆ RHIFinalizeContext()

virtual void FDynamicRHI::RHIFinalizeContext ( FRHIFinalizeContextArgs &&  Args,
TRHIPipelineArray< IRHIPlatformCommandList * > &  Output 
)
pure virtual

◆ RHIFinalizeParallelContext()

virtual IRHIPlatformCommandList * FDynamicRHI::RHIFinalizeParallelContext ( IRHIComputeContext Context)
inlinevirtual

◆ RHIFlushResources()

virtual void FDynamicRHI::RHIFlushResources ( )
pure virtual

◆ RHIGetAvailableResolutions()

virtual bool FDynamicRHI::RHIGetAvailableResolutions ( FScreenResolutionArray Resolutions,
bool  bIgnoreRefreshRate 
)
pure virtual

Retrieve available screen resolutions.

Parameters
ResolutionsTArray<FScreenResolutionRHI> parameter that will be filled in.
bIgnoreRefreshRateIf true, ignore refresh rates.
Returns
bool true if successfully filled the array

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIGetCommandContext()

virtual IRHIComputeContext * FDynamicRHI::RHIGetCommandContext ( ERHIPipeline  Pipeline,
FRHIGPUMask  GPUMask 
)
pure virtual

◆ RHIGetDefaultContext()

virtual IRHICommandContext * FDynamicRHI::RHIGetDefaultContext ( )
pure virtual

◆ RHIGetDisplaysInformation()

virtual void FDynamicRHI::RHIGetDisplaysInformation ( FDisplayInformationArray OutDisplayInformation)
inlinevirtual

Reimplemented in FD3D12DynamicRHI, and FD3D11DynamicRHI.

◆ RHIGetHTilePlatformConfig() [1/2]

virtual uint32 FDynamicRHI::RHIGetHTilePlatformConfig ( const FRHITextureDesc DepthDesc) const
inlinevirtual

◆ RHIGetHTilePlatformConfig() [2/2]

virtual uint32 FDynamicRHI::RHIGetHTilePlatformConfig ( uint32  DepthWidth,
uint32  DepthHeight 
) const
inlinevirtual

◆ RHIGetMinimumAlignmentForBufferBackedSRV()

uint64 FDynamicRHI::RHIGetMinimumAlignmentForBufferBackedSRV ( EPixelFormat  Format)
virtual

Gets the minimum alignment (in bytes) required for creating a shader resource view on a buffer-backed resource.

Parameters
Format- EPixelFormat texture format of the SRV.

Reimplemented in FMetalDynamicRHI, FOpenGLDynamicRHI, and FVulkanDynamicRHI.

◆ RHIGetNativeCommandBuffer()

virtual void * FDynamicRHI::RHIGetNativeCommandBuffer ( )
inlinevirtual

Provides access to the native command buffer. Generally this should be avoided but is useful for third party plugins.

Reimplemented in FD3D11DynamicRHI.

◆ RHIGetNativeComputeQueue()

virtual void * FDynamicRHI::RHIGetNativeComputeQueue ( )
inlinevirtual

Provides access to the native compute command queue. Generally this should be avoided but is useful for third party plugins.

Reimplemented in FMetalDynamicRHI, FD3D12DynamicRHI, and FVulkanDynamicRHI.

◆ RHIGetNativeDevice()

virtual void * FDynamicRHI::RHIGetNativeDevice ( )
pure virtual

Provides access to the native device. Generally this should be avoided but is useful for third party plugins.

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIGetNativeGraphicsQueue()

virtual void * FDynamicRHI::RHIGetNativeGraphicsQueue ( )
inlinevirtual

Provides access to the native graphics command queue. Generally this should be avoided but is useful for third party plugins.

Reimplemented in FMetalDynamicRHI, FD3D12DynamicRHI, and FVulkanDynamicRHI.

◆ RHIGetNativeInstance()

virtual void * FDynamicRHI::RHIGetNativeInstance ( )
pure virtual

Provides access to the native instance. Generally this should be avoided but is useful for third party plugins.

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIGetNativePhysicalDevice()

virtual void * FDynamicRHI::RHIGetNativePhysicalDevice ( )
inlinevirtual

Provides access to the native device. Generally this should be avoided but is useful for third party plugins.

Reimplemented in FVulkanDynamicRHI.

◆ RHIGetParallelCommandContext()

virtual IRHIComputeContext * FDynamicRHI::RHIGetParallelCommandContext ( FRHIParallelRenderPassInfo const &  ParallelRenderPass,
FRHIGPUMask  GPUMask 
)
inlinevirtual

◆ RHIGetPlatformTextureMaxSampleCount()

virtual uint16 FDynamicRHI::RHIGetPlatformTextureMaxSampleCount ( )
inlinevirtual

Reimplemented in FMetalDynamicRHI.

◆ RHIGetRayTracingGeometryOfflineMetadata()

virtual FRayTracingAccelerationStructureOfflineMetadata FDynamicRHI::RHIGetRayTracingGeometryOfflineMetadata ( const FRayTracingGeometryOfflineDataHeader OfflineDataHeader)
inlinevirtual

◆ RHIGetRenderQueryResult()

virtual bool FDynamicRHI::RHIGetRenderQueryResult ( FRHIRenderQuery RenderQuery,
uint64 OutResult,
bool  bWait,
uint32  GPUIndex = INDEX_NONE 
)
pure virtual

◆ RHIGetSupportedResolution()

virtual void FDynamicRHI::RHIGetSupportedResolution ( uint32 Width,
uint32 Height 
)
pure virtual

Returns a supported screen resolution that most closely matches input.

Parameters
Width- Input: Desired resolution width in pixels. Output: A width that the platform supports.
Height- Input: Desired resolution height in pixels. Output: A height that the platform supports.

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIGetTextureMemoryStats()

virtual void FDynamicRHI::RHIGetTextureMemoryStats ( FTextureMemoryStats OutStats)
pure virtual

Retrieves texture memory stats. safe to call on the main thread

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIGetTextureMemoryVisualizeData()

virtual bool FDynamicRHI::RHIGetTextureMemoryVisualizeData ( FColor TextureData,
int32  SizeX,
int32  SizeY,
int32  Pitch,
int32  PixelSize 
)
pure virtual

Fills a texture with to visualize the texture pool memory.

Parameters
TextureDataStart address
SizeXNumber of pixels along X
SizeYNumber of pixels along Y
PitchNumber of bytes between each row
PixelSizeNumber of bytes each pixel represents
Returns
true if successful, false otherwise

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIGetUploadContext()

virtual IRHIUploadContext * FDynamicRHI::RHIGetUploadContext ( )
inlinevirtual

Reimplemented in FMetalDynamicRHI, and FVulkanDynamicRHI.

◆ RHIGetViewportBackBuffer()

virtual FTextureRHIRef FDynamicRHI::RHIGetViewportBackBuffer ( FRHIViewport Viewport)
pure virtual

◆ RHIGetViewportBackBufferUAV()

virtual FUnorderedAccessViewRHIRef FDynamicRHI::RHIGetViewportBackBufferUAV ( FRHIViewport ViewportRHI)
inlinevirtual

◆ RHIGetViewportNextPresentGPUIndex()

virtual uint32 FDynamicRHI::RHIGetViewportNextPresentGPUIndex ( FRHIViewport Viewport)
inlinevirtual

Reimplemented in FD3D12DynamicRHI.

◆ RHIHandleDisplayChange()

virtual void FDynamicRHI::RHIHandleDisplayChange ( )
inlinevirtual

Reimplemented in FD3D11DynamicRHI.

◆ RHIIsRenderingSuspended()

virtual bool FDynamicRHI::RHIIsRenderingSuspended ( )
inlinevirtual

Reimplemented in FVulkanDynamicRHI.

◆ RHILockBuffer()

void * FDynamicRHI::RHILockBuffer ( FRHICommandListBase RHICmdList,
FRHIBuffer Buffer,
uint32  Offset,
uint32  Size,
EResourceLockMode  LockMode 
)
virtual

◆ RHILockBufferMGPU()

void * FDynamicRHI::RHILockBufferMGPU ( FRHICommandListBase RHICmdList,
FRHIBuffer Buffer,
uint32  GPUIndex,
uint32  Offset,
uint32  Size,
EResourceLockMode  LockMode 
)
virtual

Reimplemented in FD3D12DynamicRHI.

◆ RHILockStagingBuffer()

void * FDynamicRHI::RHILockStagingBuffer ( FRHIStagingBuffer StagingBuffer,
FRHIGPUFence Fence,
uint32  Offset,
uint32  SizeRHI 
)
virtual

Lock a staging buffer to read contents on the CPU that were written by the GPU, without having to stall. @discussion This function requires that you have issued an CopyToStagingBuffer invocation and verified that the FRHIGPUFence has been signaled before calling.

Parameters
StagingBufferThe buffer to lock.
FenceAn optional fence synchronized with the last buffer update.
OffsetThe offset in the buffer to return.
SizeRHIThe length of the region in the buffer to lock.
Returns
A pointer to the data starting at 'Offset' and of length 'SizeRHI' from 'StagingBuffer', or nullptr when there is an error.

Reimplemented in FMetalDynamicRHI, FD3D12DynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHILockTexture()

virtual FRHILockTextureResult FDynamicRHI::RHILockTexture ( FRHICommandListImmediate RHICmdList,
const FRHILockTextureArgs Arguments 
)
pure virtual

◆ RHIMapStagingSurface()

virtual void FDynamicRHI::RHIMapStagingSurface ( FRHITexture Texture,
FRHIGPUFence Fence,
void *&  OutData,
int32 OutWidth,
int32 OutHeight,
uint32  GPUIndex = 0 
)
pure virtual

Implemented by the platform to read directly from the texture. Useful for getting the last back buffer content after a crash. As the RHIReadSurfaceData implementation will copy the texture's content to a new temporary buffer, that won't work for an unknown crash state. Watch out for OutData to be 0 (can happen on DXGI_ERROR_DEVICE_REMOVED), don't call RHIUnmapStagingSurface in that case.

Implemented in FNullDynamicRHI, FMetalDynamicRHI, FD3D12DynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIMapStagingSurface_RenderThread()

void FDynamicRHI::RHIMapStagingSurface_RenderThread ( class FRHICommandListImmediate RHICmdList,
FRHITexture Texture,
uint32  GPUIndex,
FRHIGPUFence Fence,
void *&  OutData,
int32 OutWidth,
int32 OutHeight 
)
virtual

Reimplemented in FOpenGLDynamicRHI.

◆ RHIMatchPrecachePSOInitializers()

bool FDynamicRHI::RHIMatchPrecachePSOInitializers ( const FGraphicsPipelineStateInitializer LHS,
const FGraphicsPipelineStateInitializer RHS 
)
virtual

◆ RHIPreferredPixelFormatHint()

virtual EPixelFormat FDynamicRHI::RHIPreferredPixelFormatHint ( EPixelFormat  PreferredPixelFormat)
inlinevirtual

Reimplemented in FOpenGLDynamicRHI.

◆ RHIProcessDeleteQueue()

virtual void FDynamicRHI::RHIProcessDeleteQueue ( )
inlinevirtual

Reimplemented in FMetalDynamicRHI, and FD3D12DynamicRHI.

◆ RHIRead3DSurfaceFloatData() [1/2]

virtual void FDynamicRHI::RHIRead3DSurfaceFloatData ( FRHITexture Texture,
FIntRect  Rect,
FIntPoint  ZMinMax,
TArray< FFloat16Color > &  OutData 
)
pure virtual

◆ RHIRead3DSurfaceFloatData() [2/2]

void FDynamicRHI::RHIRead3DSurfaceFloatData ( FRHITexture Texture,
FIntRect  Rect,
FIntPoint  ZMinMax,
TArray< FFloat16Color > &  OutData,
FReadSurfaceDataFlags  InFlags 
)
virtual

Reimplemented in FD3D12DynamicRHI.

◆ RHIReadSurfaceData() [1/2]

virtual void FDynamicRHI::RHIReadSurfaceData ( FRHITexture Texture,
FIntRect  Rect,
TArray< FColor > &  OutData,
FReadSurfaceDataFlags  InFlags 
)
pure virtual

Reads the contents of a texture to an output buffer (non MSAA and MSAA) and returns it as a FColor array. If the format or texture type is unsupported the OutData array will be size 0

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIReadSurfaceData() [2/2]

void FDynamicRHI::RHIReadSurfaceData ( FRHITexture Texture,
FIntRect  Rect,
TArray< FLinearColor > &  OutData,
FReadSurfaceDataFlags  InFlags 
)
virtual

◆ RHIReadSurfaceFloatData() [1/2]

virtual void FDynamicRHI::RHIReadSurfaceFloatData ( FRHITexture Texture,
FIntRect  Rect,
TArray< FFloat16Color > &  OutData,
ECubeFace  CubeFace,
int32  ArrayIndex,
int32  MipIndex 
)
pure virtual

◆ RHIReadSurfaceFloatData() [2/2]

void FDynamicRHI::RHIReadSurfaceFloatData ( FRHITexture Texture,
FIntRect  Rect,
TArray< FFloat16Color > &  OutData,
FReadSurfaceDataFlags  InFlags 
)
virtual

Reimplemented in FD3D12DynamicRHI.

◆ RHIReadSurfaceFloatData_RenderThread() [1/2]

void FDynamicRHI::RHIReadSurfaceFloatData_RenderThread ( class FRHICommandListImmediate RHICmdList,
FRHITexture Texture,
FIntRect  Rect,
TArray< FFloat16Color > &  OutData,
ECubeFace  CubeFace,
int32  ArrayIndex,
int32  MipIndex 
)
virtual

◆ RHIReadSurfaceFloatData_RenderThread() [2/2]

void FDynamicRHI::RHIReadSurfaceFloatData_RenderThread ( class FRHICommandListImmediate RHICmdList,
FRHITexture Texture,
FIntRect  Rect,
TArray< FFloat16Color > &  OutData,
FReadSurfaceDataFlags  Flags 
)
virtual

◆ RHIReleaseThreadOwnership()

virtual void FDynamicRHI::RHIReleaseThreadOwnership ( )
inlinevirtual

Reimplemented in FOpenGLDynamicRHI.

◆ RHIReleaseTransition()

virtual void FDynamicRHI::RHIReleaseTransition ( FRHITransition Transition)
inlinevirtual

◆ RHIReplaceResources()

virtual void FDynamicRHI::RHIReplaceResources ( FRHICommandListBase RHICmdList,
TArray< FRHIResourceReplaceInfo > &&  ReplaceInfos 
)
pure virtual

Transfer metadata and underlying resource from src to dest and release any resource owned by dest.

Parameters
DestBuffer- the buffer to update
SrcBuffer- don't use after call. If null, will release any resource owned by DestBuffer

Implemented in FMetalDynamicRHI, FD3D12DynamicRHI, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIResizeViewport() [1/2]

virtual void FDynamicRHI::RHIResizeViewport ( FRHIViewport Viewport,
uint32  SizeX,
uint32  SizeY,
bool  bIsFullscreen 
)
pure virtual

◆ RHIResizeViewport() [2/2]

virtual void FDynamicRHI::RHIResizeViewport ( FRHIViewport Viewport,
uint32  SizeX,
uint32  SizeY,
bool  bIsFullscreen,
EPixelFormat  PreferredPixelFormat 
)
inlinevirtual

◆ RHIResumeRendering()

virtual void FDynamicRHI::RHIResumeRendering ( )
inlinevirtual

Reimplemented in FVulkanDynamicRHI.

◆ RHISerializeAccelerationStructure()

virtual void FDynamicRHI::RHISerializeAccelerationStructure ( FRHICommandListImmediate RHICmdList,
FRHIRayTracingScene Scene,
const TCHAR Path 
)
inlinevirtual

◆ RHISignalFlipEvent()

virtual void FDynamicRHI::RHISignalFlipEvent ( )
inlinevirtual

◆ RHISubmitCommandLists()

virtual void FDynamicRHI::RHISubmitCommandLists ( FRHISubmitCommandListsArgs &&  Args)
pure virtual

◆ RHISuspendRendering()

virtual void FDynamicRHI::RHISuspendRendering ( )
inlinevirtual

Reimplemented in FVulkanDynamicRHI.

◆ RHITick()

virtual void FDynamicRHI::RHITick ( float  DeltaTime)
pure virtual

◆ RHIUnlockBuffer()

void FDynamicRHI::RHIUnlockBuffer ( FRHICommandListBase RHICmdList,
FRHIBuffer Buffer 
)
virtual

◆ RHIUnlockBufferMGPU()

void FDynamicRHI::RHIUnlockBufferMGPU ( FRHICommandListBase RHICmdList,
FRHIBuffer Buffer,
uint32  GPUIndex 
)
virtual

Reimplemented in FD3D12DynamicRHI.

◆ RHIUnlockStagingBuffer()

void FDynamicRHI::RHIUnlockStagingBuffer ( FRHIStagingBuffer StagingBuffer)
virtual

Unlock a staging buffer previously locked with RHILockStagingBuffer.

Parameters
StagingBufferThe buffer that was previously locked.

Reimplemented in FMetalDynamicRHI, FD3D12DynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIUnlockTexture()

virtual void FDynamicRHI::RHIUnlockTexture ( FRHICommandListImmediate RHICmdList,
const FRHILockTextureArgs Arguments 
)
pure virtual

◆ RHIUnmapStagingSurface()

virtual void FDynamicRHI::RHIUnmapStagingSurface ( FRHITexture Texture,
uint32  GPUIndex = 0 
)
pure virtual

◆ RHIUnmapStagingSurface_RenderThread()

void FDynamicRHI::RHIUnmapStagingSurface_RenderThread ( class FRHICommandListImmediate RHICmdList,
FRHITexture Texture,
uint32  GPUIndex 
)
virtual

Reimplemented in FOpenGLDynamicRHI.

◆ RHIUpdateFromBufferTexture2D()

virtual void FDynamicRHI::RHIUpdateFromBufferTexture2D ( FRHICommandListBase RHICmdList,
FRHITexture Texture,
uint32  MipIndex,
const struct FUpdateTextureRegion2D UpdateRegion,
uint32  SourcePitch,
FRHIBuffer Buffer,
uint32  BufferOffset 
)
inlinevirtual

Updates a region of a 2D texture from GPU memory provided by the given buffer (may not be implemented on every platform)

Parameters
Texture- the RHI texture resource to update
MipIndex- mip level index to be modified
UpdateRegion- The rectangle to copy source image data from
SourcePitch- size in bytes of each row of the source image
Buffer,BufferOffset- source image data, starting at the upper left corner of the source rectangle (in same pixel format as texture)

◆ RHIUpdateResourceCollection()

virtual void FDynamicRHI::RHIUpdateResourceCollection ( FRHICommandListBase RHICmdList,
FRHIResourceCollection InResourceCollection,
uint32  InStartIndex,
TConstArrayView< FRHIResourceCollectionMember InMemberUpdates 
)
inlinevirtual

◆ RHIUpdateTexture2D()

virtual void FDynamicRHI::RHIUpdateTexture2D ( FRHICommandListBase RHICmdList,
FRHITexture Texture,
uint32  MipIndex,
const struct FUpdateTextureRegion2D UpdateRegion,
uint32  SourcePitch,
const uint8 SourceData 
)
pure virtual

Updates a region of a 2D texture from system memory

Parameters
Texture- the RHI texture resource to update
MipIndex- mip level index to be modified
UpdateRegion- The rectangle to copy source image data from
SourcePitch- size in bytes of each row of the source image
SourceData- source image data, starting at the upper left corner of the source rectangle (in same pixel format as texture)

Implemented in FNullDynamicRHI, FMetalDynamicRHI, FD3D12DynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIUpdateTexture3D()

virtual void FDynamicRHI::RHIUpdateTexture3D ( FRHICommandListBase RHICmdList,
FRHITexture Texture,
uint32  MipIndex,
const struct FUpdateTextureRegion3D UpdateRegion,
uint32  SourceRowPitch,
uint32  SourceDepthPitch,
const uint8 SourceData 
)
pure virtual

Updates a region of a 3D texture from system memory

Parameters
Texture- the RHI texture resource to update
MipIndex- mip level index to be modified
UpdateRegion- The rectangle to copy source image data from
SourceRowPitch- size in bytes of each row of the source image, usually Bpp * SizeX
SourceDepthPitch- size in bytes of each depth slice of the source image, usually Bpp * SizeX * SizeY
SourceData- source image data, starting at the upper left corner of the source rectangle (in same pixel format as texture)

Implemented in FNullDynamicRHI, FMetalDynamicRHI, FD3D12DynamicRHI, FOpenGLDynamicRHI, FVulkanDynamicRHI, and FD3D11DynamicRHI.

◆ RHIUpdateTextureReference()

void FDynamicRHI::RHIUpdateTextureReference ( FRHICommandListBase RHICmdList,
FRHITextureReference TextureRef,
FRHITexture NewTexture 
)
virtual

◆ RHIUpdateUniformBuffer()

virtual void FDynamicRHI::RHIUpdateUniformBuffer ( FRHICommandListBase RHICmdList,
FRHIUniformBuffer UniformBufferRHI,
const void Contents 
)
pure virtual

◆ RHIVirtualTextureSetFirstMipInMemory()

void FDynamicRHI::RHIVirtualTextureSetFirstMipInMemory ( class FRHICommandListImmediate RHICmdList,
FRHITexture Texture,
uint32  FirstMip 
)
virtual

Function that is used to allocate / free space used for virtual texture mip levels. Make sure you also update the visible mip levels.

Parameters
Texture- the texture to update, must have been created with TexCreate_Virtual
FirstMip- the first mip that should be in memory

◆ RHIVirtualTextureSetFirstMipVisible()

void FDynamicRHI::RHIVirtualTextureSetFirstMipVisible ( class FRHICommandListImmediate RHICmdList,
FRHITexture Texture,
uint32  FirstMip 
)
virtual

Function that can be used to update which is the first visible mip to the GPU.

Parameters
Texture- the texture to update, must have been created with TexCreate_Virtual
FirstMip- the first mip that should be visible to the GPU

◆ RHIWaitForFlip()

virtual FRHIFlipDetails FDynamicRHI::RHIWaitForFlip ( double  TimeoutInSeconds)
inlinevirtual

◆ RHIWriteGPUFence_TopOfPipe()

void FDynamicRHI::RHIWriteGPUFence_TopOfPipe ( FRHICommandListBase RHICmdList,
FRHIGPUFence FenceRHI 
)
virtual

◆ Shutdown()

virtual void FDynamicRHI::Shutdown ( )
pure virtual

Shutdown the RHI; handle shutdown and resource destruction before the RHI's actual destructor is called (so that all resources of the RHI are still available for shutdown).

Implemented in FMetalDynamicRHI, FNullDynamicRHI, FVulkanDynamicRHI, FD3D12DynamicRHI, FOpenGLDynamicRHI, and FD3D11DynamicRHI.

◆ UnlockBuffer_BottomOfPipe()

virtual void FDynamicRHI::UnlockBuffer_BottomOfPipe ( class FRHICommandListBase RHICmdList,
FRHIBuffer Buffer 
)
inlinevirtual

◆ UnlockStagingBuffer_RenderThread()

void FDynamicRHI::UnlockStagingBuffer_RenderThread ( class FRHICommandListImmediate RHICmdList,
FRHIStagingBuffer StagingBuffer 
)
virtual

Unlock a staging buffer previously locked with LockStagingBuffer_RenderThread.

Parameters
RHICmdListThe command-list to execute on or synchronize with.
StagingBufferThe buffer what was previously locked.

Reimplemented in FOpenGLDynamicRHI.

Friends And Related Symbol Documentation

◆ FValidationRHI

friend class FValidationRHI
friend

Member Data Documentation

◆ PixelFormatBlockBytes

TArray<uint32> FDynamicRHI::PixelFormatBlockBytes
protected

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