UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FD3D12DynamicRHI Class Reference

#include <D3D12RHIPrivate.h>

+ Inheritance diagram for FD3D12DynamicRHI:

Classes

struct  FCreateBufferInternalResult
 
struct  FCreateTextureInternalResult
 
struct  FD3D12TimingArray
 

Public Member Functions

void TerminateOnOutOfMemory (ID3D12Device *InDevice, HRESULT D3DResult, bool bCreatingTextures)
 
void OutputGPUCrashReport (FTextBuilder &ErrorMessage)
 
bool IsInInterruptThread () const
 
void HandleFailedD3D12Result (HRESULT D3DResult, ID3D12Device *Device, bool bCreatingTextures, const TCHAR *Message)
 
template<typename ... Args>
void DeferredDelete (Args &&... InArgs)
 
void SubmitCommands (TConstArrayView< struct FD3D12FinalizedCommands * > Commands)
 
void SubmitPayloads (TArray< FD3D12Payload * > &&Payloads)
 
void ProcessInterruptQueueUntil (FGraphEvent *GraphEvent)
 
void ProcessInterruptQueueOnGPUCrash ()
 
void ProcessTimestamps (FD3D12TimingArray const &TimingPerQueue)
 
void InitializeSubmissionPipe ()
 
void ShutdownSubmissionPipe ()
 
void EnqueueEndOfPipeTask (TUniqueFunction< void()> TaskFunc, TUniqueFunction< void(FD3D12Payload &)> ModifyPayloadCallback={})
 
void ForEachQueue (TFunctionRef< void(FD3D12Queue &)> Callback)
 
 FD3D12DynamicRHI (const TArray< TSharedPtr< FD3D12Adapter > > &ChosenAdaptersIn, bool bInPixEventEnabled)
 
virtual ~FD3D12DynamicRHI ()
 
virtual void Init () override
 
virtual void PostInit () override
 
virtual void Shutdown () override
 
virtual const TCHARGetName () override
 
virtual bool QueueSupportsTileMapping (ED3D12QueueType)
 
virtual FD3D12CommandContextCreateCommandContext (FD3D12Device *InParent, ED3D12QueueType InQueueType, bool InIsDefaultContext)
 
virtual void CreateCommandQueue (FD3D12Device *Device, const D3D12_COMMAND_QUEUE_DESC &Desc, TRefCountPtr< ID3D12CommandQueue > &OutCommandQueue)
 
virtual bool GetHardwareGPUFrameTime (double &OutGPUFrameTime) const
 
virtual void RHIEndFrame_RenderThread (FRHICommandListImmediate &RHICmdList) final override
 
virtual void RHIEndFrame (const FRHIEndFrameArgs &Args) final override
 
virtual FSamplerStateRHIRef RHICreateSamplerState (const FSamplerStateInitializerRHI &Initializer) final override
 
virtual FRasterizerStateRHIRef RHICreateRasterizerState (const FRasterizerStateInitializerRHI &Initializer) final override
 
virtual FDepthStencilStateRHIRef RHICreateDepthStencilState (const FDepthStencilStateInitializerRHI &Initializer) final override
 
virtual FBlendStateRHIRef RHICreateBlendState (const FBlendStateInitializerRHI &Initializer) final override
 
virtual FVertexDeclarationRHIRef RHICreateVertexDeclaration (const FVertexDeclarationElementList &Elements) final override
 
virtual FPixelShaderRHIRef RHICreatePixelShader (TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
 
virtual FVertexShaderRHIRef RHICreateVertexShader (TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
 
virtual FMeshShaderRHIRef RHICreateMeshShader (TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
 
virtual FAmplificationShaderRHIRef RHICreateAmplificationShader (TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
 
virtual FGeometryShaderRHIRef RHICreateGeometryShader (TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
 
virtual FComputeShaderRHIRef RHICreateComputeShader (TArrayView< const uint8 > Code, const FSHAHash &Hash) override
 
virtual FWorkGraphShaderRHIRef RHICreateWorkGraphShader (TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency) override
 
virtual FGPUFenceRHIRef RHICreateGPUFence (const FName &Name) final override
 
virtual FStagingBufferRHIRef RHICreateStagingBuffer () final override
 
virtual voidRHILockStagingBuffer (FRHIStagingBuffer *StagingBuffer, FRHIGPUFence *Fence, uint32 Offset, uint32 SizeRHI) final override
 
virtual void RHIUnlockStagingBuffer (FRHIStagingBuffer *StagingBuffer) final override
 
virtual FBoundShaderStateRHIRef RHICreateBoundShaderState (FRHIVertexDeclaration *VertexDeclaration, FRHIVertexShader *VertexShader, FRHIPixelShader *PixelShader, FRHIGeometryShader *GeometryShader) final override
 
virtual FGraphicsPipelineStateRHIRef RHICreateGraphicsPipelineState (const FGraphicsPipelineStateInitializer &Initializer) final override
 
virtual FComputePipelineStateRHIRef RHICreateComputePipelineState (const FComputePipelineStateInitializer &Initializer) final override
 
virtual FWorkGraphPipelineStateRHIRef RHICreateWorkGraphPipelineState (const FWorkGraphPipelineStateInitializer &Initializer) final override
 
virtual void RHICreateTransition (FRHITransition *Transition, const FRHITransitionCreateInfo &CreateInfo) final override
 
virtual void RHIReleaseTransition (FRHITransition *Transition) final override
 
virtual FUniformBufferRHIRef RHICreateUniformBuffer (const void *Contents, const FRHIUniformBufferLayout *Layout, EUniformBufferUsage Usage, EUniformBufferValidation Validation) final override
 
virtual void RHIUpdateUniformBuffer (FRHICommandListBase &RHICmdList, FRHIUniformBuffer *UniformBufferRHI, const void *Contents) final override
 
virtual FRHIBufferInitializer RHICreateBufferInitializer (FRHICommandListBase &RHICmdList, const FRHIBufferCreateDesc &CreateDesc) override
 
virtual void RHIReplaceResources (FRHICommandListBase &RHICmdList, TArray< FRHIResourceReplaceInfo > &&ReplaceInfos) final override
 
virtual voidRHILockBuffer (FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override
 
virtual voidRHILockBufferMGPU (FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 GPUIndex, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override
 
virtual void RHIUnlockBuffer (FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer) final override
 
virtual void RHIUnlockBufferMGPU (FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 GPUIndex) final override
 
virtual FTextureReferenceRHIRef RHICreateTextureReference (FRHICommandListBase &RHICmdList, FRHITexture *InReferencedTexture) final override
 
virtual void RHIUpdateTextureReference (FRHICommandListBase &RHICmdList, FRHITextureReference *TextureRef, FRHITexture *NewTexture) final override
 
virtual FRHICalcTextureSizeResult RHICalcTexturePlatformSize (const FRHITextureDesc &Desc, uint32 FirstMipIndex) override
 
virtual void RHIGetTextureMemoryStats (FTextureMemoryStats &OutStats) final override
 
virtual bool RHIGetTextureMemoryVisualizeData (FColor *TextureData, int32 SizeX, int32 SizeY, int32 Pitch, int32 PixelSize) final override
 
virtual FTextureRHIRef RHIAsyncCreateTexture2D (uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags Flags, ERHIAccess InResourceState, void **InitialMipData, uint32 NumInitialMips, const TCHAR *DebugName, FGraphEventRef &OutCompletionEvent) final override
 
virtual FRHITextureInitializer RHICreateTextureInitializer (FRHICommandListBase &RHICmdList, const FRHITextureCreateDesc &CreateDesc) override
 
virtual uint32 RHIComputeMemorySize (FRHITexture *TextureRHI) final override
 
virtual FTextureRHIRef RHIAsyncReallocateTexture2D (FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus) override
 
virtual FRHILockTextureResult RHILockTexture (FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments) final override
 
virtual void RHIUnlockTexture (FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments) final override
 
virtual void RHIUpdateTexture2D (FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, const uint8 *SourceData) final override
 
virtual void RHIUpdateTexture3D (FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8 *SourceData) final override
 
virtual FUpdateTexture3DData RHIBeginUpdateTexture3D (FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion) final override
 
virtual void RHIEndUpdateTexture3D (FRHICommandListBase &RHICmdList, FUpdateTexture3DData &UpdateData) final override
 
virtual void RHIEndMultiUpdateTexture3D (FRHICommandListBase &RHICmdList, TArray< FUpdateTexture3DData > &UpdateDataArray) final override
 
virtual void RHIBindDebugLabelName (FRHICommandListBase &RHICmdList, FRHITexture *Texture, const TCHAR *Name) final override
 
virtual void RHIBindDebugLabelName (FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, const TCHAR *Name) final override
 
virtual void RHIReadSurfaceData (FRHITexture *Texture, FIntRect Rect, TArray< FColor > &OutData, FReadSurfaceDataFlags InFlags) final override
 
virtual void RHIReadSurfaceData (FRHITexture *TextureRHI, FIntRect InRect, TArray< FLinearColor > &OutData, FReadSurfaceDataFlags InFlags) final override
 
virtual void RHIMapStagingSurface (FRHITexture *Texture, FRHIGPUFence *Fence, void *&OutData, int32 &OutWidth, int32 &OutHeight, uint32 GPUIndex=0) final override
 
virtual void RHIUnmapStagingSurface (FRHITexture *Texture, uint32 GPUIndex=0) final override
 
virtual void RHIReadSurfaceFloatData (FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, FReadSurfaceDataFlags InFlags) final override
 
virtual void RHIReadSurfaceFloatData (FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex) final override
 
virtual void RHIRead3DSurfaceFloatData (FRHITexture *Texture, FIntRect Rect, FIntPoint ZMinMax, TArray< FFloat16Color > &OutData) final override
 
virtual void RHIRead3DSurfaceFloatData (FRHITexture *Texture, FIntRect Rect, FIntPoint ZMinMax, TArray< FFloat16Color > &OutData, FReadSurfaceDataFlags InFlags) final override
 
virtual FRenderQueryRHIRef RHICreateRenderQuery (ERenderQueryType QueryType) final override
 
virtual void RHIBeginRenderQueryBatch_TopOfPipe (FRHICommandListBase &RHICmdList, ERenderQueryType QueryType) final override
 
virtual void RHIEndRenderQueryBatch_TopOfPipe (FRHICommandListBase &RHICmdList, ERenderQueryType QueryType) final override
 
virtual void RHIEndRenderQuery_TopOfPipe (FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery) final override
 
virtual bool RHIGetRenderQueryResult (FRHIRenderQuery *RenderQuery, uint64 &OutResult, bool bWait, uint32 GPUIndex=INDEX_NONE) final override
 
virtual uint32 RHIGetViewportNextPresentGPUIndex (FRHIViewport *Viewport) final override
 
virtual FTextureRHIRef RHIGetViewportBackBuffer (FRHIViewport *Viewport) final override
 
virtual void RHIAliasTextureResources (FTextureRHIRef &DestTexture, FTextureRHIRef &SrcTexture) final override
 
virtual FTextureRHIRef RHICreateAliasedTexture (FTextureRHIRef &SourceTexture) final override
 
virtual void RHIGetDisplaysInformation (FDisplayInformationArray &OutDisplayInformation) final override
 
virtual uint64 RHIComputeStatePrecachePSOHash (const FGraphicsPipelineStateInitializer &Initializer) final override
 
virtual uint64 RHIComputePrecachePSOHash (const FGraphicsPipelineStateInitializer &Initializer) final override
 
virtual bool RHIMatchPrecachePSOInitializers (const FGraphicsPipelineStateInitializer &LHS, const FGraphicsPipelineStateInitializer &RHS) final override
 
virtual void RHIAdvanceFrameForGetViewportBackBuffer (FRHIViewport *Viewport, bool bPresent) final override
 
virtual void RHIFlushResources () final override
 
virtual FViewportRHIRef RHICreateViewport (void *WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override
 
virtual void RHIResizeViewport (FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen) final override
 
virtual void RHIResizeViewport (FRHIViewport *ViewportRHI, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override
 
virtual void RHITick (float DeltaTime) final override
 
virtual void RHIBlockUntilGPUIdle () final override
 
virtual bool RHIGetAvailableResolutions (FScreenResolutionArray &Resolutions, bool bIgnoreRefreshRate) final override
 
virtual void RHIGetSupportedResolution (uint32 &Width, uint32 &Height) final override
 
virtual voidRHIGetNativeDevice () final override
 
virtual voidRHIGetNativeGraphicsQueue () final override
 
virtual voidRHIGetNativeComputeQueue () final override
 
virtual voidRHIGetNativeInstance () final override
 
virtual class IRHICommandContextRHIGetDefaultContext () final override
 
virtual IRHIComputeContextRHIGetCommandContext (ERHIPipeline Pipeline, FRHIGPUMask GPUMask) final override
 
virtual void RHIFinalizeContext (FRHIFinalizeContextArgs &&Args, TRHIPipelineArray< IRHIPlatformCommandList * > &Output) final override
 
virtual void RHISubmitCommandLists (FRHISubmitCommandListsArgs &&Args) final override
 
virtual void RHIProcessDeleteQueue () final override
 
virtual FRWLockRHIGetSuspendedLock ()
 
virtual void RHIRunOnQueue (ED3D12RHIRunOnQueueType QueueType, TFunction< void(ID3D12CommandQueue *)> &&CodeToRun, bool bWaitForSubmission) final override
 
virtual void RHIFlushResourceBarriers (FRHICommandListBase &RHICmdList, uint32 InGPUIndex) final override
 
virtual void RHIUpdateResourceResidency (FRHICommandListBase &RHICmdList, uint32 InGPUIndex, FRHIResource *InResource) final override
 
virtual IRHITransientResourceAllocatorRHICreateTransientResourceAllocator () override
 
virtual void RHIWriteGPUFence_TopOfPipe (FRHICommandListBase &RHICmdList, FRHIGPUFence *FenceRHI) final override
 
virtual FShaderResourceViewRHIRef RHICreateShaderResourceView (class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc) override
 
virtual FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView (class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc) override
 
virtual TArray< FD3D12MinimalAdapterDescRHIGetAdapterDescs () const final override
 
virtual bool RHIIsPixEnabled () const final override
 
virtual ID3D12CommandQueueRHIGetCommandQueue () const final override
 
virtual ID3D12DeviceRHIGetDevice (uint32 InIndex) const final override
 
virtual uint32 RHIGetDeviceNodeMask (uint32 InIndex) const final override
 
virtual ID3D12GraphicsCommandListRHIGetGraphicsCommandList (FRHICommandListBase &ExecutingCmdList, uint32 InDeviceIndex) const final override
 
virtual DXGI_FORMAT RHIGetSwapChainFormat (EPixelFormat InFormat) const final override
 
virtual FTextureRHIRef RHICreateTexture2DFromResource (EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource) final override
 
virtual FTextureRHIRef RHICreateTexture2DArrayFromResource (EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource) final override
 
virtual FTextureRHIRef RHICreateTextureCubeFromResource (EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource) final override
 
virtual ID3D12ResourceRHIGetResource (FRHIBuffer *InBuffer) const final override
 
virtual uint32 RHIGetResourceDeviceIndex (FRHIBuffer *InBuffer) const final override
 
virtual int64 RHIGetResourceMemorySize (FRHIBuffer *InBuffer) const final override
 
virtual bool RHIIsResourcePlaced (FRHIBuffer *InBuffer) const final override
 
virtual ID3D12ResourceRHIGetResource (FRHITexture *InTexture) const final override
 
virtual uint32 RHIGetResourceDeviceIndex (FRHITexture *InTexture) const final override
 
virtual int64 RHIGetResourceMemorySize (FRHITexture *InTexture) const final override
 
virtual bool RHIIsResourcePlaced (FRHITexture *InTexture) const final override
 
virtual D3D12_CPU_DESCRIPTOR_HANDLE RHIGetRenderTargetView (FRHITexture *InTexture, int32 InMipIndex=0, int32 InArraySliceIndex=0) const final override
 
virtual void RHIFinishExternalComputeWork (FRHICommandListBase &ExecutingCmdList, uint32 InDeviceIndex, ID3D12GraphicsCommandList *InCommandList) final override
 
virtual void RHITransitionResource (FRHICommandList &RHICmdList, FRHITexture *InTexture, D3D12_RESOURCE_STATES InState, uint32 InSubResource) final override
 
virtual void RHISignalManualFence (FRHICommandList &RHICmdList, ID3D12Fence *Fence, uint64 Value) final override
 
virtual void RHIWaitManualFence (FRHICommandList &RHICmdList, ID3D12Fence *Fence, uint64 Value) final override
 
virtual void RHIVerifyResult (ID3D12Device *Device, HRESULT Result, const ANSICHAR *Code, const ANSICHAR *Filename, uint32 Line, FString Message=FString()) const final override
 
virtual FTextureRHIRef AsyncReallocateTexture2D_RenderThread (class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus)
 
virtual FShaderBundleRHIRef RHICreateShaderBundle (const FShaderBundleCreateInfo &CreateInfo) override
 
virtual void HandleGpuTimeout (FD3D12Payload *Payload, double SecondsSinceSubmission)
 
bool IsQuadBufferStereoEnabled () const
 
void DisableQuadBufferStereo ()
 
voidLockBuffer (FRHICommandListBase &RHICmdList, FD3D12Buffer *Buffer, uint32 BufferSize, EBufferUsageFlags BufferUsage, uint32 Offset, uint32 Size, EResourceLockMode LockMode)
 
void UnlockBuffer (FRHICommandListBase &RHICmdList, FD3D12Buffer *Buffer, EBufferUsageFlags BufferUsage)
 
virtual bool BeginUpdateTexture3D_ComputeShader (FUpdateTexture3DData &UpdateData, FD3D12UpdateTexture3DData *UpdateDataD3D12)
 
virtual void EndUpdateTexture3D_ComputeShader (FRHIComputeCommandList &RHICmdList, FUpdateTexture3DData &UpdateData, FD3D12UpdateTexture3DData *UpdateDataD3D12)
 
FUpdateTexture3DData BeginUpdateTexture3D_Internal (FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion)
 
void EndUpdateTexture3D_Internal (FRHICommandListBase &RHICmdList, FUpdateTexture3DData &UpdateData)
 
virtual bool HandleSpecialLock (FRHILockTextureResult &Result, FD3D12Texture *InTexture, const FRHILockTextureArgs &Arguments)
 
virtual bool HandleSpecialUnlock (FRHICommandListBase &RHICmdList, FD3D12Texture *InTexture, const FRHILockTextureArgs &Arguments)
 
FD3D12AdapterGetAdapter (uint32_t Index=0)
 
const FD3D12AdapterGetAdapter (uint32_t Index=0) const
 
uint32 GetNumAdapters () const
 
bool IsPixEventEnabled () const
 
template<typename PerDeviceFunction >
void ForEachDevice (ID3D12Device *inDevice, const PerDeviceFunction &pfPerDeviceFunction)
 
AGSContextGetAmdAgsContext ()
 
void SetAmdSupportedExtensionFlags (uint32 Flags)
 
uint32 GetAmdSupportedExtensionFlags () const
 
INTCExtensionContextGetIntelExtensionContext ()
 
virtual FD3D12ResourceDesc GetResourceDesc (const FRHITextureDesc &CreateInfo) const
 
virtual FCreateTextureInternalResult CreateTextureInternal (const FRHITextureCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator=nullptr)
 
FD3D12TextureCreateD3D12Texture (const FRHITextureCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator)
 
virtual FD3D12TextureCreateNewD3D12Texture (const FRHITextureCreateDesc &CreateDesc, class FD3D12Device *Device)
 
FCreateBufferInternalResult CreateBufferInternal (const FRHIBufferCreateDesc &CreateDesc, bool bHasInitialData, ID3D12ResourceAllocator *ResourceAllocator)
 
FD3D12BufferCreateD3D12Buffer (FRHICommandListBase *RHICmdList, const FRHIBufferCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator=nullptr)
 
FD3D12BufferCreateD3D12Buffer (const FRHIBufferCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator)
 
bool SetupDisplayHDRMetaData ()
 
- Public Member Functions inherited from ID3D12DynamicRHI
virtual ERHIInterfaceType GetInterfaceType () const override final
 
- Public Member Functions inherited from FDynamicRHI
virtual RHI_API ~FDynamicRHI ()
 
virtual FDynamicRHIGetNonValidationRHI ()
 
void InitPixelFormatInfo (const TArray< uint32 > &PixelFormatBlockBytesIn)
 
virtual void FlushPendingLogs ()
 
virtual FRHIShaderLibraryRef RHICreateShaderLibrary (EShaderPlatform Platform, FString const &FilePath, FString const &Name)
 
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 RHI_API uint64 RHIGetMinimumAlignmentForBufferBackedSRV (EPixelFormat Format)
 
virtual FRHIResourceCollectionRef RHICreateResourceCollection (FRHICommandListBase &RHICmdList, TConstArrayView< FRHIResourceCollectionMember > InMembers)
 
virtual void RHIUpdateResourceCollection (FRHICommandListBase &RHICmdList, FRHIResourceCollection *InResourceCollection, uint32 InStartIndex, TConstArrayView< FRHIResourceCollectionMember > InMemberUpdates)
 
virtual void RHIUpdateFromBufferTexture2D (FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, FRHIBuffer *Buffer, uint32 BufferOffset)
 
virtual RHI_API void RHIBindDebugLabelName (FRHICommandListBase &RHICmdList, FRHIUnorderedAccessView *UnorderedAccessViewRHI, const TCHAR *Name)
 
virtual RHI_API void RHIBeginRenderQuery_TopOfPipe (FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery)
 
virtual FUnorderedAccessViewRHIRef RHIGetViewportBackBufferUAV (FRHIViewport *ViewportRHI)
 
virtual uint32 RHIGetHTilePlatformConfig (uint32 DepthWidth, uint32 DepthHeight) const
 
virtual uint32 RHIGetHTilePlatformConfig (const FRHITextureDesc &DepthDesc) const
 
virtual void RHIAcquireThreadOwnership ()
 
virtual void RHIReleaseThreadOwnership ()
 
virtual EPixelFormat RHIPreferredPixelFormatHint (EPixelFormat PreferredPixelFormat)
 
virtual RHI_API void RHICheckViewportHDRStatus (FRHIViewport *Viewport)
 
virtual void RHIHandleDisplayChange ()
 
virtual void RHIBeginSuspendRendering ()
 
virtual void RHISuspendRendering ()
 
virtual void RHIResumeRendering ()
 
virtual bool RHIIsRenderingSuspended ()
 
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 voidRHIGetNativePhysicalDevice ()
 
virtual voidRHIGetNativeCommandBuffer ()
 
virtual IRHIComputeContextRHIGetParallelCommandContext (FRHIParallelRenderPassInfo const &ParallelRenderPass, FRHIGPUMask GPUMask)
 
virtual IRHIUploadContextRHIGetUploadContext ()
 
void RHICloseTranslateChain (FRHIFinalizeContextArgs &&Args, TRHIPipelineArray< IRHIPlatformCommandList * > &Output, bool bShouldFinalize)
 
virtual IRHIPlatformCommandListRHIFinalizeParallelContext (IRHIComputeContext *Context)
 
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)
 

Static Public Member Functions

static FD3D12DynamicRHIGetD3DRHI ()
 
template<typename TRHIType , typename TReturnType = typename TD3D12ResourceTraits<TRHIType>::TConcreteType>
static FORCEINLINE TReturnTypeResourceCast (TRHIType *Resource)
 
template<typename TRHIType , typename TReturnType = typename TD3D12ResourceTraits<TRHIType>::TConcreteType>
static FORCEINLINE const TReturnTypeResourceCast (const TRHIType *Resource)
 
template<typename TRHIType , typename TReturnType = typename TD3D12ResourceTraits<TRHIType>::TConcreteType>
static FORCEINLINE_DEBUGGABLE TReturnTypeResourceCast (TRHIType *Resource, uint32 GPUIndex)
 
static void SetFormatAliasedTexturesMustBeCreatedUsingCommonLayout (bool bValue)
 
- Static Public Member Functions inherited from FDynamicRHI
static RHI_API void EnableIdealGPUCaptureOptions (bool bEnable)
 

Public Attributes

FD3D12TimingArray CurrentTimingPerQueue
 
FGraphEventRef EopTask
 

Protected Member Functions

FD3D12TextureCreateTextureFromResource (bool bTextureArray, bool bCubeTexture, EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource)
 
FD3D12TextureCreateAliasedD3D12Texture2D (FD3D12Texture *SourceTexture)
 
void GetBestSupportedMSAASetting (DXGI_FORMAT PlatformFormat, uint32 MSAACount, uint32 &OutBestMSAACount, uint32 &OutMSAAQualityLevels)
 
TRefCountPtr< FD3D12ResourceGetStagingTexture (FRHITexture *TextureRHI, FIntRect InRect, FIntRect &OutRect, FReadSurfaceDataFlags InFlags, D3D12_PLACED_SUBRESOURCE_FOOTPRINT &readBackHeapDesc, uint32 GPUIndex)
 
void ReadSurfaceDataNoMSAARaw (FRHITexture *TextureRHI, FIntRect Rect, TArray< uint8 > &OutData, FReadSurfaceDataFlags InFlags)
 
void ReadSurfaceDataMSAARaw (FRHITexture *TextureRHI, FIntRect Rect, TArray< uint8 > &OutData, FReadSurfaceDataFlags InFlags)
 
FD3D12DeviceGetRHIDevice (uint32 GPUIndex) const
 
void SetupD3D12Debug ()
 
void ProcessDeferredDeletionQueue_Platform ()
 

Protected Attributes

TArray< TSharedPtr< FD3D12Adapter > > ChosenAdapters
 
bool bPixEventEnabled = false
 
D3D_FEATURE_LEVEL FeatureLevel
 
AGSContextAmdAgsContext
 
uint32 AmdSupportedExtensionFlags
 
INTCExtensionContextIntelExtensionContext = nullptr
 
bool bDriverCacheAwarePSOPrecaching = false
 
voidZeroBuffer
 
uint32 ZeroBufferSize
 
HANDLE FlipEvent
 
FDisplayInformationArray DisplayList
 
- Protected Attributes inherited from FDynamicRHI
TArray< uint32PixelFormatBlockBytes
 

Friends

class FD3D12CommandContext
 
class FD3D12Thread
 

Additional Inherited Members

- Public Types inherited from FDynamicRHI
using FRHICalcTextureSizeResult = ::FRHICalcTextureSizeResult
 

Detailed Description

The interface which is implemented by the dynamically bound RHI.

Constructor & Destructor Documentation

◆ FD3D12DynamicRHI()

FD3D12DynamicRHI::FD3D12DynamicRHI ( const TArray< TSharedPtr< FD3D12Adapter > > &  ChosenAdaptersIn,
bool  bInPixEventEnabled 
)

Initialization constructor.

◆ ~FD3D12DynamicRHI()

FD3D12DynamicRHI::~FD3D12DynamicRHI ( )
virtual

Destructor

Member Function Documentation

◆ AsyncReallocateTexture2D_RenderThread()

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

Reimplemented from FDynamicRHI.

◆ BeginUpdateTexture3D_ComputeShader()

virtual bool FD3D12DynamicRHI::BeginUpdateTexture3D_ComputeShader ( FUpdateTexture3DData UpdateData,
FD3D12UpdateTexture3DData UpdateDataD3D12 
)
inlinevirtual

◆ BeginUpdateTexture3D_Internal()

FUpdateTexture3DData FD3D12DynamicRHI::BeginUpdateTexture3D_Internal ( FRHITexture Texture,
uint32  MipIndex,
const struct FUpdateTextureRegion3D UpdateRegion 
)

◆ CreateAliasedD3D12Texture2D()

FD3D12Texture * FD3D12DynamicRHI::CreateAliasedD3D12Texture2D ( FD3D12Texture SourceTexture)
protected

◆ CreateBufferInternal()

FD3D12DynamicRHI::FCreateBufferInternalResult FD3D12DynamicRHI::CreateBufferInternal ( const FRHIBufferCreateDesc CreateDesc,
bool  bHasInitialData,
ID3D12ResourceAllocator ResourceAllocator 
)

◆ CreateCommandContext()

FD3D12CommandContext * FD3D12DynamicRHI::CreateCommandContext ( FD3D12Device InParent,
ED3D12QueueType  InQueueType,
bool  InIsDefaultContext 
)
virtual

◆ CreateCommandQueue()

void FD3D12DynamicRHI::CreateCommandQueue ( FD3D12Device Device,
const D3D12_COMMAND_QUEUE_DESC Desc,
TRefCountPtr< ID3D12CommandQueue > &  OutCommandQueue 
)
virtual

◆ CreateD3D12Buffer() [1/2]

FD3D12Buffer * FD3D12DynamicRHI::CreateD3D12Buffer ( const FRHIBufferCreateDesc CreateDesc,
ID3D12ResourceAllocator ResourceAllocator 
)
inline

◆ CreateD3D12Buffer() [2/2]

FD3D12Buffer * FD3D12DynamicRHI::CreateD3D12Buffer ( FRHICommandListBase RHICmdList,
const FRHIBufferCreateDesc CreateDesc,
ID3D12ResourceAllocator ResourceAllocator = nullptr 
)
inline

◆ CreateD3D12Texture()

FD3D12Texture * FD3D12DynamicRHI::CreateD3D12Texture ( const FRHITextureCreateDesc CreateDesc,
ID3D12ResourceAllocator ResourceAllocator 
)
inline

◆ CreateNewD3D12Texture()

FD3D12Texture * FD3D12DynamicRHI::CreateNewD3D12Texture ( const FRHITextureCreateDesc CreateDesc,
class FD3D12Device Device 
)
virtual

◆ CreateTextureFromResource()

FD3D12Texture * FD3D12DynamicRHI::CreateTextureFromResource ( bool  bTextureArray,
bool  bCubeTexture,
EPixelFormat  Format,
ETextureCreateFlags  TexCreateFlags,
const FClearValueBinding ClearValueBinding,
ID3D12Resource Resource 
)
protected

◆ CreateTextureInternal()

FD3D12DynamicRHI::FCreateTextureInternalResult FD3D12DynamicRHI::CreateTextureInternal ( const FRHITextureCreateDesc CreateDesc,
ID3D12ResourceAllocator ResourceAllocator = nullptr 
)
virtual

◆ DeferredDelete()

template<typename ... Args>
void FD3D12DynamicRHI::DeferredDelete ( Args &&...  InArgs)
inline

◆ DisableQuadBufferStereo()

void FD3D12DynamicRHI::DisableQuadBufferStereo ( )

◆ EndUpdateTexture3D_ComputeShader()

virtual void FD3D12DynamicRHI::EndUpdateTexture3D_ComputeShader ( FRHIComputeCommandList RHICmdList,
FUpdateTexture3DData UpdateData,
FD3D12UpdateTexture3DData UpdateDataD3D12 
)
inlinevirtual

◆ EndUpdateTexture3D_Internal()

void FD3D12DynamicRHI::EndUpdateTexture3D_Internal ( FRHICommandListBase RHICmdList,
FUpdateTexture3DData UpdateData 
)

◆ EnqueueEndOfPipeTask()

void FD3D12DynamicRHI::EnqueueEndOfPipeTask ( TUniqueFunction< void()>  TaskFunc,
TUniqueFunction< void(FD3D12Payload &)>  ModifyPayloadCallback = {} 
)

◆ ForEachDevice()

void FD3D12DynamicRHI::ForEachDevice ( ID3D12Device inDevice,
const PerDeviceFunction pfPerDeviceFunction 
)

◆ ForEachQueue()

void FD3D12DynamicRHI::ForEachQueue ( TFunctionRef< void(FD3D12Queue &)>  Callback)

◆ GetAdapter() [1/2]

FD3D12Adapter & FD3D12DynamicRHI::GetAdapter ( uint32_t  Index = 0)
inline

◆ GetAdapter() [2/2]

const FD3D12Adapter & FD3D12DynamicRHI::GetAdapter ( uint32_t  Index = 0) const
inline

◆ GetAmdAgsContext()

AGSContext * FD3D12DynamicRHI::GetAmdAgsContext ( )
inline

◆ GetAmdSupportedExtensionFlags()

uint32 FD3D12DynamicRHI::GetAmdSupportedExtensionFlags ( ) const
inline

◆ GetBestSupportedMSAASetting()

void FD3D12DynamicRHI::GetBestSupportedMSAASetting ( DXGI_FORMAT  PlatformFormat,
uint32  MSAACount,
uint32 OutBestMSAACount,
uint32 OutMSAAQualityLevels 
)
protected

Gets the best supported MSAA settings from the provided MSAA count to check against.

Parameters
PlatformFormatThe format of the texture being created
MSAACountThe MSAA count to check against.
OutBestMSAACountThe best MSAA count that is suppored. Could be smaller than MSAACount if it is not supported
OutMSAAQualityLevelsThe number MSAA quality levels for the best msaa count supported

◆ GetD3DRHI()

static FD3D12DynamicRHI * FD3D12DynamicRHI::GetD3DRHI ( )
inlinestatic

◆ GetHardwareGPUFrameTime()

virtual bool FD3D12DynamicRHI::GetHardwareGPUFrameTime ( double OutGPUFrameTime) const
inlinevirtual

◆ GetIntelExtensionContext()

INTCExtensionContext * FD3D12DynamicRHI::GetIntelExtensionContext ( )
inline

◆ GetName()

virtual const TCHAR * FD3D12DynamicRHI::GetName ( )
inlineoverridevirtual

Implements FDynamicRHI.

◆ GetNumAdapters()

uint32 FD3D12DynamicRHI::GetNumAdapters ( ) const
inline

◆ GetResourceDesc()

FD3D12ResourceDesc FD3D12DynamicRHI::GetResourceDesc ( const FRHITextureDesc CreateInfo) const
virtual

◆ GetRHIDevice()

FD3D12Device * FD3D12DynamicRHI::GetRHIDevice ( uint32  GPUIndex) const
protected

◆ GetStagingTexture()

TRefCountPtr< FD3D12Resource > FD3D12DynamicRHI::GetStagingTexture ( FRHITexture TextureRHI,
FIntRect  InRect,
FIntRect OutRect,
FReadSurfaceDataFlags  InFlags,
D3D12_PLACED_SUBRESOURCE_FOOTPRINT readBackHeapDesc,
uint32  GPUIndex 
)
protected

Returns a pointer to a texture resource that can be used for CPU reads. Note: the returned resource could be the original texture or a new temporary texture.

Parameters
TextureRHI- Source texture to create a staging texture from.
InRect- rectangle to 'stage'.
StagingRectOUT- parameter is filled with the rectangle to read from the returned texture.
Returns
The CPU readable Texture object.

◆ HandleFailedD3D12Result()

void FD3D12DynamicRHI::HandleFailedD3D12Result ( HRESULT  D3DResult,
ID3D12Device Device,
bool  bCreatingTextures,
const TCHAR Message 
)

◆ HandleGpuTimeout()

void FD3D12DynamicRHI::HandleGpuTimeout ( FD3D12Payload Payload,
double  SecondsSinceSubmission 
)
virtual

◆ HandleSpecialLock()

virtual bool FD3D12DynamicRHI::HandleSpecialLock ( FRHILockTextureResult Result,
FD3D12Texture InTexture,
const FRHILockTextureArgs Arguments 
)
inlinevirtual

◆ HandleSpecialUnlock()

virtual bool FD3D12DynamicRHI::HandleSpecialUnlock ( FRHICommandListBase RHICmdList,
FD3D12Texture InTexture,
const FRHILockTextureArgs Arguments 
)
inlinevirtual

◆ Init()

void FD3D12DynamicRHI::Init ( )
overridevirtual

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

Implements FDynamicRHI.

◆ InitializeSubmissionPipe()

void FD3D12DynamicRHI::InitializeSubmissionPipe ( )

◆ IsInInterruptThread()

bool FD3D12DynamicRHI::IsInInterruptThread ( ) const

◆ IsPixEventEnabled()

bool FD3D12DynamicRHI::IsPixEventEnabled ( ) const
inline

◆ IsQuadBufferStereoEnabled()

bool FD3D12DynamicRHI::IsQuadBufferStereoEnabled ( ) const

◆ LockBuffer()

void * FD3D12DynamicRHI::LockBuffer ( FRHICommandListBase RHICmdList,
FD3D12Buffer Buffer,
uint32  BufferSize,
EBufferUsageFlags  BufferUsage,
uint32  Offset,
uint32  Size,
EResourceLockMode  LockMode 
)

◆ OutputGPUCrashReport()

void FD3D12DynamicRHI::OutputGPUCrashReport ( FTextBuilder ErrorMessage)

◆ PostInit()

void FD3D12DynamicRHI::PostInit ( )
overridevirtual

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

Reimplemented from FDynamicRHI.

◆ ProcessDeferredDeletionQueue_Platform()

void FD3D12DynamicRHI::ProcessDeferredDeletionQueue_Platform ( )
protected

◆ ProcessInterruptQueueOnGPUCrash()

void FD3D12DynamicRHI::ProcessInterruptQueueOnGPUCrash ( )

◆ ProcessInterruptQueueUntil()

void FD3D12DynamicRHI::ProcessInterruptQueueUntil ( FGraphEvent GraphEvent)

◆ ProcessTimestamps()

void FD3D12DynamicRHI::ProcessTimestamps ( FD3D12TimingArray const &  TimingPerQueue)

◆ QueueSupportsTileMapping()

virtual bool FD3D12DynamicRHI::QueueSupportsTileMapping ( ED3D12QueueType  )
inlinevirtual

◆ ReadSurfaceDataMSAARaw()

void FD3D12DynamicRHI::ReadSurfaceDataMSAARaw ( FRHITexture TextureRHI,
FIntRect  Rect,
TArray< uint8 > &  OutData,
FReadSurfaceDataFlags  InFlags 
)
protected

◆ ReadSurfaceDataNoMSAARaw()

void FD3D12DynamicRHI::ReadSurfaceDataNoMSAARaw ( FRHITexture TextureRHI,
FIntRect  Rect,
TArray< uint8 > &  OutData,
FReadSurfaceDataFlags  InFlags 
)
protected

◆ ResourceCast() [1/3]

template<typename TRHIType , typename TReturnType = typename TD3D12ResourceTraits<TRHIType>::TConcreteType>
static FORCEINLINE const TReturnType * FD3D12DynamicRHI::ResourceCast ( const TRHIType Resource)
inlinestatic

◆ ResourceCast() [2/3]

template<typename TRHIType , typename TReturnType = typename TD3D12ResourceTraits<TRHIType>::TConcreteType>
static FORCEINLINE TReturnType * FD3D12DynamicRHI::ResourceCast ( TRHIType Resource)
inlinestatic

◆ ResourceCast() [3/3]

template<typename TRHIType , typename TReturnType = typename TD3D12ResourceTraits<TRHIType>::TConcreteType>
static FORCEINLINE_DEBUGGABLE TReturnType * FD3D12DynamicRHI::ResourceCast ( TRHIType Resource,
uint32  GPUIndex 
)
inlinestatic

◆ RHIAdvanceFrameForGetViewportBackBuffer()

void FD3D12DynamicRHI::RHIAdvanceFrameForGetViewportBackBuffer ( FRHIViewport Viewport,
bool  bPresent 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIAliasTextureResources()

void FD3D12DynamicRHI::RHIAliasTextureResources ( FTextureRHIRef DestTexture,
FTextureRHIRef SrcTexture 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIAsyncCreateTexture2D()

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

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

Implements FDynamicRHI.

◆ RHIAsyncReallocateTexture2D()

FTextureRHIRef FD3D12DynamicRHI::RHIAsyncReallocateTexture2D ( FRHITexture Texture2DRHI,
int32  NewMipCount,
int32  NewSizeX,
int32  NewSizeY,
FThreadSafeCounter RequestStatus 
)
overridevirtual

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. RHIGetAsyncReallocateTexture2DStatus() can be used to check the status of an ongoing or completed 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

Implements FDynamicRHI.

◆ RHIBeginRenderQueryBatch_TopOfPipe()

void FD3D12DynamicRHI::RHIBeginRenderQueryBatch_TopOfPipe ( FRHICommandListBase RHICmdList,
ERenderQueryType  QueryType 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIBeginUpdateTexture3D()

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

Reimplemented from FDynamicRHI.

◆ RHIBindDebugLabelName() [1/2]

void FD3D12DynamicRHI::RHIBindDebugLabelName ( FRHICommandListBase RHICmdList,
FRHIBuffer Buffer,
const TCHAR Name 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIBindDebugLabelName() [2/2]

void FD3D12DynamicRHI::RHIBindDebugLabelName ( FRHICommandListBase RHICmdList,
FRHITexture Texture,
const TCHAR Name 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIBlockUntilGPUIdle()

void FD3D12DynamicRHI::RHIBlockUntilGPUIdle ( )
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICalcTexturePlatformSize()

FDynamicRHI::FRHICalcTextureSizeResult FD3D12DynamicRHI::RHICalcTexturePlatformSize ( const FRHITextureDesc Desc,
uint32  FirstMipIndex 
)
overridevirtual

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.

Implements FDynamicRHI.

◆ RHIComputeMemorySize()

uint32 FD3D12DynamicRHI::RHIComputeMemorySize ( FRHITexture TextureRHI)
finaloverridevirtual

Computes the size in memory required by a given texture.

Parameters
TextureRHI- Texture we want to know the size of
Returns
- Size in Bytes

Implements FDynamicRHI.

◆ RHIComputePrecachePSOHash()

uint64 FD3D12DynamicRHI::RHIComputePrecachePSOHash ( const FGraphicsPipelineStateInitializer Initializer)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIComputeStatePrecachePSOHash()

uint64 FD3D12DynamicRHI::RHIComputeStatePrecachePSOHash ( const FGraphicsPipelineStateInitializer Initializer)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHICreateAliasedTexture()

FTextureRHIRef FD3D12DynamicRHI::RHICreateAliasedTexture ( FTextureRHIRef SourceTexture)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHICreateAmplificationShader()

FAmplificationShaderRHIRef FD3D12DynamicRHI::RHICreateAmplificationShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHICreateBlendState()

FBlendStateRHIRef FD3D12DynamicRHI::RHICreateBlendState ( const FBlendStateInitializerRHI Initializer)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateBoundShaderState()

FBoundShaderStateRHIRef FD3D12DynamicRHI::RHICreateBoundShaderState ( FRHIVertexDeclaration VertexDeclaration,
FRHIVertexShader VertexShader,
FRHIPixelShader PixelShader,
FRHIGeometryShader GeometryShader 
)
finaloverridevirtual

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

Implements FDynamicRHI.

◆ RHICreateBufferInitializer()

FRHIBufferInitializer FD3D12DynamicRHI::RHICreateBufferInitializer ( FRHICommandListBase RHICmdList,
const FRHIBufferCreateDesc CreateDesc 
)
overridevirtual

Implements FDynamicRHI.

◆ RHICreateComputePipelineState()

TRefCountPtr< FRHIComputePipelineState > FD3D12DynamicRHI::RHICreateComputePipelineState ( const FComputePipelineStateInitializer Initializer)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateComputeShader()

FComputeShaderRHIRef FD3D12DynamicRHI::RHICreateComputeShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
overridevirtual

Implements FDynamicRHI.

◆ RHICreateDepthStencilState()

FDepthStencilStateRHIRef FD3D12DynamicRHI::RHICreateDepthStencilState ( const FDepthStencilStateInitializerRHI Initializer)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateGeometryShader()

FGeometryShaderRHIRef FD3D12DynamicRHI::RHICreateGeometryShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateGPUFence()

FGPUFenceRHIRef FD3D12DynamicRHI::RHICreateGPUFence ( const FName Name)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateGraphicsPipelineState()

FGraphicsPipelineStateRHIRef FD3D12DynamicRHI::RHICreateGraphicsPipelineState ( const FGraphicsPipelineStateInitializer Initializer)
finaloverridevirtual

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

Implements FDynamicRHI.

◆ RHICreateMeshShader()

FMeshShaderRHIRef FD3D12DynamicRHI::RHICreateMeshShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHICreatePixelShader()

FPixelShaderRHIRef FD3D12DynamicRHI::RHICreatePixelShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateRasterizerState()

FRasterizerStateRHIRef FD3D12DynamicRHI::RHICreateRasterizerState ( const FRasterizerStateInitializerRHI Initializer)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateRenderQuery()

FRenderQueryRHIRef FD3D12DynamicRHI::RHICreateRenderQuery ( ERenderQueryType  QueryType)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateSamplerState()

FSamplerStateRHIRef FD3D12DynamicRHI::RHICreateSamplerState ( const FSamplerStateInitializerRHI Initializer)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateShaderBundle()

FShaderBundleRHIRef FD3D12DynamicRHI::RHICreateShaderBundle ( const FShaderBundleCreateInfo CreateInfo)
overridevirtual

Reimplemented from FDynamicRHI.

◆ RHICreateShaderResourceView()

FShaderResourceViewRHIRef FD3D12DynamicRHI::RHICreateShaderResourceView ( class FRHICommandListBase RHICmdList,
FRHIViewableResource Resource,
FRHIViewDesc const &  ViewDesc 
)
overridevirtual

Implements FDynamicRHI.

◆ RHICreateStagingBuffer()

FStagingBufferRHIRef FD3D12DynamicRHI::RHICreateStagingBuffer ( )
finaloverridevirtual

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

Returns
The new staging-buffer.

Reimplemented from FDynamicRHI.

◆ RHICreateTexture2DArrayFromResource()

FTextureRHIRef FD3D12DynamicRHI::RHICreateTexture2DArrayFromResource ( EPixelFormat  Format,
ETextureCreateFlags  TexCreateFlags,
const FClearValueBinding ClearValueBinding,
ID3D12Resource Resource 
)
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHICreateTexture2DFromResource()

FTextureRHIRef FD3D12DynamicRHI::RHICreateTexture2DFromResource ( EPixelFormat  Format,
ETextureCreateFlags  TexCreateFlags,
const FClearValueBinding ClearValueBinding,
ID3D12Resource Resource 
)
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHICreateTextureCubeFromResource()

FTextureRHIRef FD3D12DynamicRHI::RHICreateTextureCubeFromResource ( EPixelFormat  Format,
ETextureCreateFlags  TexCreateFlags,
const FClearValueBinding ClearValueBinding,
ID3D12Resource Resource 
)
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHICreateTextureInitializer()

FRHITextureInitializer FD3D12DynamicRHI::RHICreateTextureInitializer ( FRHICommandListBase RHICmdList,
const FRHITextureCreateDesc CreateDesc 
)
overridevirtual

Implements FDynamicRHI.

◆ RHICreateTextureReference()

FTextureReferenceRHIRef FD3D12DynamicRHI::RHICreateTextureReference ( FRHICommandListBase RHICmdList,
FRHITexture InReferencedTexture 
)
finaloverridevirtual

Create a texture reference. InReferencedTexture can be null.

Reimplemented from FDynamicRHI.

◆ RHICreateTransientResourceAllocator()

IRHITransientResourceAllocator * FD3D12DynamicRHI::RHICreateTransientResourceAllocator ( )
overridevirtual

Create a new transient resource allocator

Reimplemented from FDynamicRHI.

◆ RHICreateTransition()

void FD3D12DynamicRHI::RHICreateTransition ( FRHITransition Transition,
const FRHITransitionCreateInfo CreateInfo 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHICreateUniformBuffer()

FUniformBufferRHIRef FD3D12DynamicRHI::RHICreateUniformBuffer ( const void Contents,
const FRHIUniformBufferLayout Layout,
EUniformBufferUsage  Usage,
EUniformBufferValidation  Validation 
)
finaloverridevirtual

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.

Implements FDynamicRHI.

◆ RHICreateUnorderedAccessView()

FUnorderedAccessViewRHIRef FD3D12DynamicRHI::RHICreateUnorderedAccessView ( class FRHICommandListBase RHICmdList,
FRHIViewableResource Resource,
FRHIViewDesc const &  ViewDesc 
)
overridevirtual

Implements FDynamicRHI.

◆ RHICreateVertexDeclaration()

FVertexDeclarationRHIRef FD3D12DynamicRHI::RHICreateVertexDeclaration ( const FVertexDeclarationElementList Elements)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateVertexShader()

FVertexShaderRHIRef FD3D12DynamicRHI::RHICreateVertexShader ( TArrayView< const uint8 Code,
const FSHAHash Hash 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateViewport()

FViewportRHIRef FD3D12DynamicRHI::RHICreateViewport ( void WindowHandle,
uint32  SizeX,
uint32  SizeY,
bool  bIsFullscreen,
EPixelFormat  PreferredPixelFormat 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHICreateWorkGraphPipelineState()

FWorkGraphPipelineStateRHIRef FD3D12DynamicRHI::RHICreateWorkGraphPipelineState ( const FWorkGraphPipelineStateInitializer Initializer)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHICreateWorkGraphShader()

FWorkGraphShaderRHIRef FD3D12DynamicRHI::RHICreateWorkGraphShader ( TArrayView< const uint8 Code,
const FSHAHash Hash,
EShaderFrequency  ShaderFrequency 
)
overridevirtual

Reimplemented from FDynamicRHI.

◆ RHIEndFrame()

void FD3D12DynamicRHI::RHIEndFrame ( const FRHIEndFrameArgs Args)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIEndFrame_RenderThread()

void FD3D12DynamicRHI::RHIEndFrame_RenderThread ( FRHICommandListImmediate RHICmdList)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIEndMultiUpdateTexture3D()

void FD3D12DynamicRHI::RHIEndMultiUpdateTexture3D ( FRHICommandListBase RHICmdList,
TArray< FUpdateTexture3DData > &  UpdateDataArray 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIEndRenderQuery_TopOfPipe()

void FD3D12DynamicRHI::RHIEndRenderQuery_TopOfPipe ( FRHICommandListBase RHICmdList,
FRHIRenderQuery RenderQuery 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIEndRenderQueryBatch_TopOfPipe()

void FD3D12DynamicRHI::RHIEndRenderQueryBatch_TopOfPipe ( FRHICommandListBase RHICmdList,
ERenderQueryType  QueryType 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIEndUpdateTexture3D()

void FD3D12DynamicRHI::RHIEndUpdateTexture3D ( FRHICommandListBase RHICmdList,
FUpdateTexture3DData UpdateData 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIFinalizeContext()

void FD3D12DynamicRHI::RHIFinalizeContext ( FRHIFinalizeContextArgs &&  Args,
TRHIPipelineArray< IRHIPlatformCommandList * > &  Output 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIFinishExternalComputeWork()

void FD3D12DynamicRHI::RHIFinishExternalComputeWork ( FRHICommandListBase ExecutingCmdList,
uint32  InDeviceIndex,
ID3D12GraphicsCommandList InCommandList 
)
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIFlushResourceBarriers()

void FD3D12DynamicRHI::RHIFlushResourceBarriers ( FRHICommandListBase RHICmdList,
uint32  InGPUIndex 
)
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIFlushResources()

void FD3D12DynamicRHI::RHIFlushResources ( )
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIGetAdapterDescs()

TArray< FD3D12MinimalAdapterDesc > FD3D12DynamicRHI::RHIGetAdapterDescs ( ) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetAvailableResolutions()

bool FD3D12DynamicRHI::RHIGetAvailableResolutions ( FScreenResolutionArray Resolutions,
bool  bIgnoreRefreshRate 
)
finaloverridevirtual

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

Implements FDynamicRHI.

◆ RHIGetCommandContext()

IRHIComputeContext * FD3D12DynamicRHI::RHIGetCommandContext ( ERHIPipeline  Pipeline,
FRHIGPUMask  GPUMask 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIGetCommandQueue()

ID3D12CommandQueue * FD3D12DynamicRHI::RHIGetCommandQueue ( ) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetDefaultContext()

IRHICommandContext * FD3D12DynamicRHI::RHIGetDefaultContext ( )
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIGetDevice()

ID3D12Device * FD3D12DynamicRHI::RHIGetDevice ( uint32  InIndex) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetDeviceNodeMask()

uint32 FD3D12DynamicRHI::RHIGetDeviceNodeMask ( uint32  InIndex) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetDisplaysInformation()

void FD3D12DynamicRHI::RHIGetDisplaysInformation ( FDisplayInformationArray OutDisplayInformation)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIGetGraphicsCommandList()

ID3D12GraphicsCommandList * FD3D12DynamicRHI::RHIGetGraphicsCommandList ( FRHICommandListBase ExecutingCmdList,
uint32  InDeviceIndex 
) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetNativeComputeQueue()

void * FD3D12DynamicRHI::RHIGetNativeComputeQueue ( )
finaloverridevirtual

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

Reimplemented from FDynamicRHI.

◆ RHIGetNativeDevice()

void * FD3D12DynamicRHI::RHIGetNativeDevice ( )
finaloverridevirtual

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

Implements FDynamicRHI.

◆ RHIGetNativeGraphicsQueue()

void * FD3D12DynamicRHI::RHIGetNativeGraphicsQueue ( )
finaloverridevirtual

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

Reimplemented from FDynamicRHI.

◆ RHIGetNativeInstance()

void * FD3D12DynamicRHI::RHIGetNativeInstance ( )
finaloverridevirtual

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

Implements FDynamicRHI.

◆ RHIGetRenderQueryResult()

bool FD3D12DynamicRHI::RHIGetRenderQueryResult ( FRHIRenderQuery RenderQuery,
uint64 OutResult,
bool  bWait,
uint32  GPUIndex = INDEX_NONE 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIGetRenderTargetView()

D3D12_CPU_DESCRIPTOR_HANDLE FD3D12DynamicRHI::RHIGetRenderTargetView ( FRHITexture InTexture,
int32  InMipIndex = 0,
int32  InArraySliceIndex = 0 
) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetResource() [1/2]

ID3D12Resource * FD3D12DynamicRHI::RHIGetResource ( FRHIBuffer InBuffer) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetResource() [2/2]

ID3D12Resource * FD3D12DynamicRHI::RHIGetResource ( FRHITexture InTexture) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetResourceDeviceIndex() [1/2]

uint32 FD3D12DynamicRHI::RHIGetResourceDeviceIndex ( FRHIBuffer InBuffer) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetResourceDeviceIndex() [2/2]

uint32 FD3D12DynamicRHI::RHIGetResourceDeviceIndex ( FRHITexture InTexture) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetResourceMemorySize() [1/2]

int64 FD3D12DynamicRHI::RHIGetResourceMemorySize ( FRHIBuffer InBuffer) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetResourceMemorySize() [2/2]

int64 FD3D12DynamicRHI::RHIGetResourceMemorySize ( FRHITexture InTexture) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetSupportedResolution()

void FD3D12DynamicRHI::RHIGetSupportedResolution ( uint32 Width,
uint32 Height 
)
finaloverridevirtual

Returns a supported screen resolution that most closely matches the 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.

Implements FDynamicRHI.

◆ RHIGetSuspendedLock()

virtual FRWLock * FD3D12DynamicRHI::RHIGetSuspendedLock ( )
inlinevirtual

◆ RHIGetSwapChainFormat()

DXGI_FORMAT FD3D12DynamicRHI::RHIGetSwapChainFormat ( EPixelFormat  InFormat) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIGetTextureMemoryStats()

void FD3D12DynamicRHI::RHIGetTextureMemoryStats ( FTextureMemoryStats OutStats)
finaloverridevirtual

Retrieves texture memory stats.

Implements FDynamicRHI.

◆ RHIGetTextureMemoryVisualizeData()

bool FD3D12DynamicRHI::RHIGetTextureMemoryVisualizeData ( FColor TextureData,
int32  SizeX,
int32  SizeY,
int32  Pitch,
int32  PixelSize 
)
finaloverridevirtual

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

Implements FDynamicRHI.

◆ RHIGetViewportBackBuffer()

FTextureRHIRef FD3D12DynamicRHI::RHIGetViewportBackBuffer ( FRHIViewport Viewport)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIGetViewportNextPresentGPUIndex()

uint32 FD3D12DynamicRHI::RHIGetViewportNextPresentGPUIndex ( FRHIViewport Viewport)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIIsPixEnabled()

bool FD3D12DynamicRHI::RHIIsPixEnabled ( ) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIIsResourcePlaced() [1/2]

bool FD3D12DynamicRHI::RHIIsResourcePlaced ( FRHIBuffer InBuffer) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIIsResourcePlaced() [2/2]

bool FD3D12DynamicRHI::RHIIsResourcePlaced ( FRHITexture InTexture) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHILockBuffer()

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

Reimplemented from FDynamicRHI.

◆ RHILockBufferMGPU()

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

Reimplemented from FDynamicRHI.

◆ RHILockStagingBuffer()

void * FD3D12DynamicRHI::RHILockStagingBuffer ( FRHIStagingBuffer StagingBuffer,
FRHIGPUFence Fence,
uint32  Offset,
uint32  SizeRHI 
)
finaloverridevirtual

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 from FDynamicRHI.

◆ RHILockTexture()

FRHILockTextureResult FD3D12DynamicRHI::RHILockTexture ( FRHICommandListImmediate RHICmdList,
const FRHILockTextureArgs Arguments 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIMapStagingSurface()

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

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.

Implements FDynamicRHI.

◆ RHIMatchPrecachePSOInitializers()

bool FD3D12DynamicRHI::RHIMatchPrecachePSOInitializers ( const FGraphicsPipelineStateInitializer LHS,
const FGraphicsPipelineStateInitializer RHS 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIProcessDeleteQueue()

void FD3D12DynamicRHI::RHIProcessDeleteQueue ( )
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIRead3DSurfaceFloatData() [1/2]

void FD3D12DynamicRHI::RHIRead3DSurfaceFloatData ( FRHITexture Texture,
FIntRect  Rect,
FIntPoint  ZMinMax,
TArray< FFloat16Color > &  OutData 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIRead3DSurfaceFloatData() [2/2]

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

Reimplemented from FDynamicRHI.

◆ RHIReadSurfaceData() [1/2]

void FD3D12DynamicRHI::RHIReadSurfaceData ( FRHITexture Texture,
FIntRect  Rect,
TArray< FColor > &  OutData,
FReadSurfaceDataFlags  InFlags 
)
finaloverridevirtual

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

Implements FDynamicRHI.

◆ RHIReadSurfaceData() [2/2]

void FD3D12DynamicRHI::RHIReadSurfaceData ( FRHITexture TextureRHI,
FIntRect  InRect,
TArray< FLinearColor > &  OutData,
FReadSurfaceDataFlags  InFlags 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIReadSurfaceFloatData() [1/2]

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

Implements FDynamicRHI.

◆ RHIReadSurfaceFloatData() [2/2]

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

Reimplemented from FDynamicRHI.

◆ RHIReleaseTransition()

void FD3D12DynamicRHI::RHIReleaseTransition ( FRHITransition Transition)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIReplaceResources()

void FD3D12DynamicRHI::RHIReplaceResources ( FRHICommandListBase RHICmdList,
TArray< FRHIResourceReplaceInfo > &&  ReplaceInfos 
)
finaloverridevirtual

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

Implements FDynamicRHI.

◆ RHIResizeViewport() [1/2]

void FD3D12DynamicRHI::RHIResizeViewport ( FRHIViewport Viewport,
uint32  SizeX,
uint32  SizeY,
bool  bIsFullscreen 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIResizeViewport() [2/2]

void FD3D12DynamicRHI::RHIResizeViewport ( FRHIViewport ViewportRHI,
uint32  SizeX,
uint32  SizeY,
bool  bIsFullscreen,
EPixelFormat  PreferredPixelFormat 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIRunOnQueue()

void FD3D12DynamicRHI::RHIRunOnQueue ( ED3D12RHIRunOnQueueType  QueueType,
TFunction< void(ID3D12CommandQueue *)> &&  CodeToRun,
bool  bWaitForSubmission 
)
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHISignalManualFence()

void FD3D12DynamicRHI::RHISignalManualFence ( FRHICommandList RHICmdList,
ID3D12Fence Fence,
uint64  Value 
)
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHISubmitCommandLists()

void FD3D12DynamicRHI::RHISubmitCommandLists ( FRHISubmitCommandListsArgs &&  Args)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHITick()

void FD3D12DynamicRHI::RHITick ( float  DeltaTime)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHITransitionResource()

void FD3D12DynamicRHI::RHITransitionResource ( FRHICommandList RHICmdList,
FRHITexture InTexture,
D3D12_RESOURCE_STATES  InState,
uint32  InSubResource 
)
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIUnlockBuffer()

void FD3D12DynamicRHI::RHIUnlockBuffer ( FRHICommandListBase RHICmdList,
FRHIBuffer Buffer 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIUnlockBufferMGPU()

void FD3D12DynamicRHI::RHIUnlockBufferMGPU ( FRHICommandListBase RHICmdList,
FRHIBuffer Buffer,
uint32  GPUIndex 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIUnlockStagingBuffer()

void FD3D12DynamicRHI::RHIUnlockStagingBuffer ( FRHIStagingBuffer StagingBuffer)
finaloverridevirtual

Unlock a staging buffer previously locked with RHILockStagingBuffer.

Parameters
StagingBufferThe buffer that was previously locked.

Reimplemented from FDynamicRHI.

◆ RHIUnlockTexture()

void FD3D12DynamicRHI::RHIUnlockTexture ( FRHICommandListImmediate RHICmdList,
const FRHILockTextureArgs Arguments 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIUnmapStagingSurface()

void FD3D12DynamicRHI::RHIUnmapStagingSurface ( FRHITexture Texture,
uint32  GPUIndex = 0 
)
finaloverridevirtual

call after a succesful RHIMapStagingSurface() call

Implements FDynamicRHI.

◆ RHIUpdateResourceResidency()

void FD3D12DynamicRHI::RHIUpdateResourceResidency ( FRHICommandListBase RHICmdList,
uint32  InGPUIndex,
FRHIResource InResource 
)
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIUpdateTexture2D()

void FD3D12DynamicRHI::RHIUpdateTexture2D ( FRHICommandListBase RHICmdList,
FRHITexture Texture,
uint32  MipIndex,
const struct FUpdateTextureRegion2D UpdateRegion,
uint32  SourcePitch,
const uint8 SourceData 
)
finaloverridevirtual

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)

Implements FDynamicRHI.

◆ RHIUpdateTexture3D()

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

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)

Implements FDynamicRHI.

◆ RHIUpdateTextureReference()

void FD3D12DynamicRHI::RHIUpdateTextureReference ( FRHICommandListBase RHICmdList,
FRHITextureReference TextureRef,
FRHITexture NewTexture 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ RHIUpdateUniformBuffer()

void FD3D12DynamicRHI::RHIUpdateUniformBuffer ( FRHICommandListBase RHICmdList,
FRHIUniformBuffer UniformBufferRHI,
const void Contents 
)
finaloverridevirtual

Implements FDynamicRHI.

◆ RHIVerifyResult()

void FD3D12DynamicRHI::RHIVerifyResult ( ID3D12Device Device,
HRESULT  Result,
const ANSICHAR Code,
const ANSICHAR Filename,
uint32  Line,
FString  Message = FString() 
) const
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIWaitManualFence()

void FD3D12DynamicRHI::RHIWaitManualFence ( FRHICommandList RHICmdList,
ID3D12Fence Fence,
uint64  Value 
)
finaloverridevirtual

Implements ID3D12DynamicRHI.

◆ RHIWriteGPUFence_TopOfPipe()

void FD3D12DynamicRHI::RHIWriteGPUFence_TopOfPipe ( FRHICommandListBase RHICmdList,
FRHIGPUFence FenceRHI 
)
finaloverridevirtual

Reimplemented from FDynamicRHI.

◆ SetAmdSupportedExtensionFlags()

void FD3D12DynamicRHI::SetAmdSupportedExtensionFlags ( uint32  Flags)
inline

◆ SetFormatAliasedTexturesMustBeCreatedUsingCommonLayout()

void FD3D12DynamicRHI::SetFormatAliasedTexturesMustBeCreatedUsingCommonLayout ( bool  bValue)
static

◆ SetupD3D12Debug()

void FD3D12DynamicRHI::SetupD3D12Debug ( )
protected

◆ SetupDisplayHDRMetaData()

bool FD3D12DynamicRHI::SetupDisplayHDRMetaData ( )

◆ Shutdown()

void FD3D12DynamicRHI::Shutdown ( )
overridevirtual

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).

Implements FDynamicRHI.

◆ ShutdownSubmissionPipe()

void FD3D12DynamicRHI::ShutdownSubmissionPipe ( )

◆ SubmitCommands()

void FD3D12DynamicRHI::SubmitCommands ( TConstArrayView< struct FD3D12FinalizedCommands * >  Commands)

◆ SubmitPayloads()

void FD3D12DynamicRHI::SubmitPayloads ( TArray< FD3D12Payload * > &&  Payloads)

◆ TerminateOnOutOfMemory()

void FD3D12DynamicRHI::TerminateOnOutOfMemory ( ID3D12Device InDevice,
HRESULT  D3DResult,
bool  bCreatingTextures 
)

◆ UnlockBuffer()

void FD3D12DynamicRHI::UnlockBuffer ( FRHICommandListBase RHICmdList,
FD3D12Buffer Buffer,
EBufferUsageFlags  BufferUsage 
)

Friends And Related Symbol Documentation

◆ FD3D12CommandContext

◆ FD3D12Thread

friend class FD3D12Thread
friend

Member Data Documentation

◆ AmdAgsContext

AGSContext* FD3D12DynamicRHI::AmdAgsContext
protected

The context for the AMD AGS utility library. AGSContext does not implement AddRef/Release. Just use a bare pointer.

◆ AmdSupportedExtensionFlags

uint32 FD3D12DynamicRHI::AmdSupportedExtensionFlags
protected

◆ bDriverCacheAwarePSOPrecaching

bool FD3D12DynamicRHI::bDriverCacheAwarePSOPrecaching = false
protected

◆ bPixEventEnabled

bool FD3D12DynamicRHI::bPixEventEnabled = false
protected

Can pix events be used

◆ ChosenAdapters

TArray<TSharedPtr<FD3D12Adapter> > FD3D12DynamicRHI::ChosenAdapters
protected

◆ CurrentTimingPerQueue

FD3D12TimingArray FD3D12DynamicRHI::CurrentTimingPerQueue

◆ DisplayList

FDisplayInformationArray FD3D12DynamicRHI::DisplayList
protected

◆ EopTask

FGraphEventRef FD3D12DynamicRHI::EopTask

◆ FeatureLevel

D3D_FEATURE_LEVEL FD3D12DynamicRHI::FeatureLevel
protected

The feature level of the device.

◆ FlipEvent

HANDLE FD3D12DynamicRHI::FlipEvent
protected

◆ IntelExtensionContext

INTCExtensionContext* FD3D12DynamicRHI::IntelExtensionContext = nullptr
protected

◆ ZeroBuffer

void* FD3D12DynamicRHI::ZeroBuffer
protected

A buffer in system memory containing all zeroes of the specified size.

◆ ZeroBufferSize

uint32 FD3D12DynamicRHI::ZeroBufferSize
protected

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