37#include COMPILED_PLATFORM_HEADER(D3D12PipelineState.h)
67template<
typename t_A,
typename t_B >
70 return ((a - 1) / b + 1) * b;
77static bool D3D12RHI_ShouldCreateWithWarp()
84static bool D3D12RHI_AllowSoftwareFallback()
90static bool D3D12RHI_ShouldAllowAsyncResourceCreation()
96static bool D3D12RHI_ShouldForceCompatibility()
105static bool D3D12RHI_IsRenderDocPresent(
ID3D12Device* Device)
164 static bool bFormatAliasedTexturesMustBeCreatedUsingCommonLayout;
182#if WITH_RHI_BREADCRUMBS
190 void TerminateOnGPUCrash();
193 int64 RequestedTexturePoolSize;
201 uint32 InterruptThreadID = 0;
203 enum class EQueueStatus
215 struct FProcessResult
217 EQueueStatus Status = EQueueStatus::None;
232 FProcessResult ProcessSubmissionQueue();
233 FProcessResult ProcessInterruptQueue();
238 virtual void UpdateMemoryStats();
241 template <
typename ...Args>
286 virtual void Init()
override;
322 virtual void RHIEndFrame(
const FRHIEndFrameArgs& Args)
final override;
355#if ENABLE_LOW_LEVEL_MEM_TRACKER || UE_MEMORY_TRACE_ENABLED
396#if D3D12RHI_SUPPORTS_UAV_BACKBUFFER
413 virtual void RHITick(
float DeltaTime)
final override;
444#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
482#if D3D12_RHI_RAYTRACING
523#if PLATFORM_SUPPORTS_VIRTUAL_TEXTURES
526 D3D12_RESOURCE_DESC& ResourceDesc,
543 template<
typename PerDeviceFunction>
556#if D3D12RHI_SUPPORTS_WIN_PIX
706#if D3D12RHI_SUPPORTS_WIN_PIX
740 , bRestoreState(
false)
752 Context.AddBarrier(pResource, BeforeD3D12Access, DesiredD3D12Access, Subresource);
753 bRestoreState =
true;
774 Context.AddBarrier(pResource, DesiredD3D12Access, BeforeD3D12Access, Subresource);
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define FORCEINLINE_DEBUGGABLE
Definition CoreMiscDefines.h:74
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
ED3D12Access
Definition D3D12Access.h:15
constexpr bool IsValidAccess(ED3D12Access InD3D12Access)
Definition D3D12Access.h:78
ED3D12QueueType
Definition D3D12Queue.h:11
const TCHAR * LexToString(DXGI_FORMAT Format)
Definition D3D12RHI.cpp:991
TAutoConsoleVariable< int32 > GD3D12DebugCvar
t_A RoundUpToNextMultiple(const t_A &a, const t_B &b)
Definition D3D12RHIPrivate.h:68
FD3D12WorkaroundFlags GD3D12WorkaroundFlags
Definition D3D12RHI.cpp:56
#define FRIEND_ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:17
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
ED3D12RHIRunOnQueueType
Definition ID3D12DynamicRHI.h:16
ERHIAccess
Definition RHIAccess.h:11
EShaderFrequency
Definition RHIDefinitions.h:202
EBufferUsageFlags
Definition RHIDefinitions.h:892
EUniformBufferUsage
Definition RHIDefinitions.h:536
ECubeFace
Definition RHIDefinitions.h:525
EResourceLockMode
Definition RHIDefinitions.h:785
EUniformBufferValidation
Definition RHIDefinitions.h:546
ETextureCreateFlags
Definition RHIDefinitions.h:1091
ERenderQueryType
Definition RHIDefinitions.h:258
ERHIPipeline
Definition RHIPipeline.h:13
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
Definition TaskGraphInterfaces.h:471
Definition RHIResources.h:4820
Definition D3D12Adapter.h:136
Definition D3D12Resources.h:1017
Definition D3D12CommandContext.h:513
Definition D3D12CommandContext.h:199
Definition D3D12Device.h:176
Definition D3D12RHIPrivate.h:683
~FD3D12DynamicRHIModule()
Definition D3D12RHIPrivate.h:690
virtual bool SupportsDynamicReloading() override
Definition D3D12RHIPrivate.h:695
virtual void StartupModule() override
Definition WindowsD3D12Device.cpp:1130
virtual void ShutdownModule() override
Definition WindowsD3D12Device.cpp:1153
virtual bool IsSupported() override
Definition D3D12RHIPrivate.h:700
FD3D12DynamicRHIModule()
Definition D3D12RHIPrivate.h:686
virtual FDynamicRHI * CreateRHI(ERHIFeatureLevel::Type RequestedFeatureLevel=ERHIFeatureLevel::Num) override
Definition WindowsD3D12Device.cpp:1057
Definition D3D12RHIPrivate.h:160
void ForEachQueue(TFunctionRef< void(FD3D12Queue &)> Callback)
Definition D3D12RHI.cpp:277
bool bDriverCacheAwarePSOPrecaching
Definition D3D12RHIPrivate.h:579
virtual FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView(class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc) override
Definition D3D12UAV.cpp:263
void DisableQuadBufferStereo()
Definition WindowsD3D12Device.cpp:1923
FD3D12Texture * CreateTextureFromResource(bool bTextureArray, bool bCubeTexture, EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource)
Definition D3D12Texture.cpp:2908
virtual FTextureRHIRef RHICreateAliasedTexture(FTextureRHIRef &SourceTexture) final override
Definition D3D12Texture.cpp:3054
virtual void RHIRead3DSurfaceFloatData(FRHITexture *Texture, FIntRect Rect, FIntPoint ZMinMax, TArray< FFloat16Color > &OutData) final override
Definition D3D12RenderTarget.cpp:1046
INTCExtensionContext * IntelExtensionContext
Definition D3D12RHIPrivate.h:574
virtual uint32 RHIComputeMemorySize(FRHITexture *TextureRHI) final override
Definition D3D12Texture.cpp:1377
virtual void RHIUnlockStagingBuffer(FRHIStagingBuffer *StagingBuffer) final override
Definition D3D12DirectCommandListManager.cpp:108
virtual FD3D12CommandContext * CreateCommandContext(FD3D12Device *InParent, ED3D12QueueType InQueueType, bool InIsDefaultContext)
Definition D3D12RHI.cpp:358
virtual void RHIAdvanceFrameForGetViewportBackBuffer(FRHIViewport *Viewport, bool bPresent) final override
Definition D3D12Viewport.cpp:807
virtual FBoundShaderStateRHIRef RHICreateBoundShaderState(FRHIVertexDeclaration *VertexDeclaration, FRHIVertexShader *VertexShader, FRHIPixelShader *PixelShader, FRHIGeometryShader *GeometryShader) final override
Definition D3D12Shaders.cpp:297
virtual D3D12_CPU_DESCRIPTOR_HANDLE RHIGetRenderTargetView(FRHITexture *InTexture, int32 InMipIndex=0, int32 InArraySliceIndex=0) const final override
Definition D3D12RHI.cpp:737
virtual ID3D12Device * RHIGetDevice(uint32 InIndex) const final override
Definition D3D12RHI.cpp:668
virtual FShaderResourceViewRHIRef RHICreateShaderResourceView(class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc) override
Definition D3D12SRV.cpp:318
virtual void RHIRunOnQueue(ED3D12RHIRunOnQueueType QueueType, TFunction< void(ID3D12CommandQueue *)> &&CodeToRun, bool bWaitForSubmission) final override
Definition D3D12RHI.cpp:967
virtual FD3D12Texture * CreateNewD3D12Texture(const FRHITextureCreateDesc &CreateDesc, class FD3D12Device *Device)
Definition D3D12Texture.cpp:590
void SetupD3D12Debug()
Definition D3D12RHI.cpp:942
uint32 GetAmdSupportedExtensionFlags() const
Definition D3D12RHIPrivate.h:548
static FORCEINLINE TReturnType * ResourceCast(TRHIType *Resource)
Definition D3D12RHIPrivate.h:292
FDisplayInformationArray DisplayList
Definition D3D12RHIPrivate.h:674
FD3D12Device * GetRHIDevice(uint32 GPUIndex) const
Definition D3D12RHI.cpp:293
virtual FUpdateTexture3DData RHIBeginUpdateTexture3D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion) final override
Definition D3D12Texture.cpp:2509
virtual uint32 RHIGetDeviceNodeMask(uint32 InIndex) const final override
Definition D3D12RHI.cpp:673
virtual ID3D12CommandQueue * RHIGetCommandQueue() const final override
Definition D3D12RHI.cpp:662
virtual FTextureRHIRef RHIGetViewportBackBuffer(FRHIViewport *Viewport) final override
Definition D3D12Viewport.cpp:844
virtual FRHILockTextureResult RHILockTexture(FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments) final override
Definition D3D12Texture.cpp:2490
virtual void CreateCommandQueue(FD3D12Device *Device, const D3D12_COMMAND_QUEUE_DESC &Desc, TRefCountPtr< ID3D12CommandQueue > &OutCommandQueue)
Definition D3D12RHI.cpp:363
void EnqueueEndOfPipeTask(TUniqueFunction< void()> TaskFunc, TUniqueFunction< void(FD3D12Payload &)> ModifyPayloadCallback={})
Definition D3D12RHI.cpp:392
virtual ID3D12Resource * RHIGetResource(FRHIBuffer *InBuffer) const final override
Definition D3D12RHI.cpp:690
virtual class IRHICommandContext * RHIGetDefaultContext() final override
Definition D3D12RHI.cpp:368
virtual int64 RHIGetResourceMemorySize(FRHIBuffer *InBuffer) const final override
Definition D3D12RHI.cpp:702
virtual FStagingBufferRHIRef RHICreateStagingBuffer() final override
Definition D3D12DirectCommandListManager.cpp:93
virtual FTextureRHIRef RHICreateTextureCubeFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource) final override
Definition D3D12Texture.cpp:2986
virtual void * RHILockBuffer(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override
Definition D3D12Buffer.cpp:834
virtual void RHIBlockUntilGPUIdle() final override
Definition D3D12Commands.cpp:1504
virtual void RHIEndFrame_RenderThread(FRHICommandListImmediate &RHICmdList) final override
Definition D3D12RHI.cpp:523
virtual bool HandleSpecialUnlock(FRHICommandListBase &RHICmdList, FD3D12Texture *InTexture, const FRHILockTextureArgs &Arguments)
Definition D3D12RHIPrivate.h:534
virtual FD3D12ResourceDesc GetResourceDesc(const FRHITextureDesc &CreateInfo) const
Definition D3D12Texture.cpp:224
virtual uint32 RHIGetViewportNextPresentGPUIndex(FRHIViewport *Viewport) final override
Definition D3D12Viewport.cpp:829
virtual void RHIReadSurfaceData(FRHITexture *Texture, FIntRect Rect, TArray< FColor > &OutData, FReadSurfaceDataFlags InFlags) final override
Definition D3D12RenderTarget.cpp:609
virtual ID3D12GraphicsCommandList * RHIGetGraphicsCommandList(FRHICommandListBase &ExecutingCmdList, uint32 InDeviceIndex) const final override
Definition D3D12RHI.cpp:678
void ProcessInterruptQueueOnGPUCrash()
Definition D3D12Submission.cpp:1038
virtual void * RHILockStagingBuffer(FRHIStagingBuffer *StagingBuffer, FRHIGPUFence *Fence, uint32 Offset, uint32 SizeRHI) final override
Definition D3D12DirectCommandListManager.cpp:100
virtual bool HandleSpecialLock(FRHILockTextureResult &Result, FD3D12Texture *InTexture, const FRHILockTextureArgs &Arguments)
Definition D3D12RHIPrivate.h:533
FCreateBufferInternalResult CreateBufferInternal(const FRHIBufferCreateDesc &CreateDesc, bool bHasInitialData, ID3D12ResourceAllocator *ResourceAllocator)
Definition D3D12Buffer.cpp:472
virtual FAmplificationShaderRHIRef RHICreateAmplificationShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D12Shaders.cpp:201
virtual void RHIReadSurfaceFloatData(FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, FReadSurfaceDataFlags InFlags) final override
Definition D3D12RenderTarget.cpp:923
virtual TArray< FD3D12MinimalAdapterDesc > RHIGetAdapterDescs() const final override
Definition D3D12RHI.cpp:641
void ReadSurfaceDataMSAARaw(FRHITexture *TextureRHI, FIntRect Rect, TArray< uint8 > &OutData, FReadSurfaceDataFlags InFlags)
Definition D3D12RenderTarget.cpp:688
INTCExtensionContext * GetIntelExtensionContext()
Definition D3D12RHIPrivate.h:550
virtual FRWLock * RHIGetSuspendedLock()
Definition D3D12RHIPrivate.h:428
void SubmitPayloads(TArray< FD3D12Payload * > &&Payloads)
Definition D3D12Submission.cpp:332
FUpdateTexture3DData BeginUpdateTexture3D_Internal(FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion)
Definition D3D12Texture.cpp:2737
virtual bool RHIGetRenderQueryResult(FRHIRenderQuery *RenderQuery, uint64 &OutResult, bool bWait, uint32 GPUIndex=INDEX_NONE) final override
Definition D3D12Query.cpp:292
virtual void RHIUnmapStagingSurface(FRHITexture *Texture, uint32 GPUIndex=0) final override
Definition D3D12RenderTarget.cpp:906
void ProcessTimestamps(FD3D12TimingArray const &TimingPerQueue)
Definition D3D12Submission.cpp:1365
virtual void RHIUnlockTexture(FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments) final override
Definition D3D12Texture.cpp:2496
virtual void RHIFinishExternalComputeWork(FRHICommandListBase &ExecutingCmdList, uint32 InDeviceIndex, ID3D12GraphicsCommandList *InCommandList) final override
Definition D3D12RHI.cpp:744
virtual uint64 RHIComputeStatePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer) final override
Definition D3D12State.cpp:503
virtual void Shutdown() override
Definition D3D12RHI.cpp:298
virtual void RHIReplaceResources(FRHICommandListBase &RHICmdList, TArray< FRHIResourceReplaceInfo > &&ReplaceInfos) final override
Definition D3D12Resources.cpp:1630
virtual void * RHIGetNativeComputeQueue() final override
Definition D3D12RHI.cpp:810
virtual uint32 RHIGetResourceDeviceIndex(FRHIBuffer *InBuffer) const final override
Definition D3D12RHI.cpp:696
virtual void RHITick(float DeltaTime) final override
Definition D3D12Viewport.cpp:737
virtual void RHIGetTextureMemoryStats(FTextureMemoryStats &OutStats) final override
Definition D3D12Texture.cpp:379
virtual FCreateTextureInternalResult CreateTextureInternal(const FRHITextureCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator=nullptr)
Definition D3D12Texture.cpp:622
virtual void RHIProcessDeleteQueue() final override
Definition D3D12RHI.cpp:433
FD3D12Texture * CreateAliasedD3D12Texture2D(FD3D12Texture *SourceTexture)
Definition D3D12Texture.cpp:3009
virtual void RHIEndMultiUpdateTexture3D(FRHICommandListBase &RHICmdList, TArray< FUpdateTexture3DData > &UpdateDataArray) final override
Definition D3D12Texture.cpp:2635
virtual uint64 RHIComputePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer) final override
Definition D3D12State.cpp:582
virtual void * RHIGetNativeInstance() final override
Definition D3D12RHI.cpp:815
virtual FWorkGraphPipelineStateRHIRef RHICreateWorkGraphPipelineState(const FWorkGraphPipelineStateInitializer &Initializer) final override
Definition D3D12WorkGraph.cpp:312
virtual void RHITransitionResource(FRHICommandList &RHICmdList, FRHITexture *InTexture, D3D12_RESOURCE_STATES InState, uint32 InSubResource) final override
Definition D3D12RHI.cpp:753
virtual FRHITextureInitializer RHICreateTextureInitializer(FRHICommandListBase &RHICmdList, const FRHITextureCreateDesc &CreateDesc) override
Definition D3D12Texture.cpp:1019
static FORCEINLINE const TReturnType * ResourceCast(const TRHIType *Resource)
Definition D3D12RHIPrivate.h:298
virtual FVertexShaderRHIRef RHICreateVertexShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D12Shaders.cpp:191
virtual FPixelShaderRHIRef RHICreatePixelShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D12Shaders.cpp:206
virtual FVertexDeclarationRHIRef RHICreateVertexDeclaration(const FVertexDeclarationElementList &Elements) final override
Definition D3D12VertexDeclaration.cpp:161
virtual FBlendStateRHIRef RHICreateBlendState(const FBlendStateInitializerRHI &Initializer) final override
Definition D3D12State.cpp:446
void GetBestSupportedMSAASetting(DXGI_FORMAT PlatformFormat, uint32 MSAACount, uint32 &OutBestMSAACount, uint32 &OutMSAAQualityLevels)
Definition D3D12RHI.cpp:908
virtual bool GetHardwareGPUFrameTime(double &OutGPUFrameTime) const
Definition D3D12RHIPrivate.h:315
const FD3D12Adapter & GetAdapter(uint32_t Index=0) const
Definition D3D12RHIPrivate.h:537
virtual void RHIUpdateResourceResidency(FRHICommandListBase &RHICmdList, uint32 InGPUIndex, FRHIResource *InResource) final override
Definition D3D12RHI.cpp:786
virtual void Init() override
Definition WindowsD3D12Device.cpp:1361
HANDLE FlipEvent
Definition D3D12RHIPrivate.h:672
bool IsInInterruptThread() const
Definition D3D12Submission.cpp:1068
virtual void RHIUpdateUniformBuffer(FRHICommandListBase &RHICmdList, FRHIUniformBuffer *UniformBufferRHI, const void *Contents) final override
Definition D3D12UniformBuffer.cpp:160
void SetAmdSupportedExtensionFlags(uint32 Flags)
Definition D3D12RHIPrivate.h:547
void HandleFailedD3D12Result(HRESULT D3DResult, ID3D12Device *Device, bool bCreatingTextures, const TCHAR *Message)
Definition D3D12Util.cpp:1024
bool bPixEventEnabled
Definition D3D12RHIPrivate.h:561
virtual void RHIResizeViewport(FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen) final override
Definition D3D12Viewport.cpp:714
void UnlockBuffer(FRHICommandListBase &RHICmdList, FD3D12Buffer *Buffer, EBufferUsageFlags BufferUsage)
Definition D3D12Buffer.cpp:762
virtual FWorkGraphShaderRHIRef RHICreateWorkGraphShader(TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency) override
Definition D3D12Shaders.cpp:228
virtual void EndUpdateTexture3D_ComputeShader(FRHIComputeCommandList &RHICmdList, FUpdateTexture3DData &UpdateData, FD3D12UpdateTexture3DData *UpdateDataD3D12)
Definition D3D12RHIPrivate.h:513
virtual void RHISignalManualFence(FRHICommandList &RHICmdList, ID3D12Fence *Fence, uint64 Value) final override
Definition D3D12RHI.cpp:758
virtual void RHIWriteGPUFence_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIGPUFence *FenceRHI) final override
Definition D3D12DirectCommandListManager.cpp:56
virtual FTextureRHIRef AsyncReallocateTexture2D_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus)
Definition D3D12Texture.cpp:1555
void ShutdownSubmissionPipe()
Definition D3D12Submission.cpp:203
virtual FGeometryShaderRHIRef RHICreateGeometryShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D12Shaders.cpp:211
virtual void RHIVerifyResult(ID3D12Device *Device, HRESULT Result, const ANSICHAR *Code, const ANSICHAR *Filename, uint32 Line, FString Message=FString()) const final override
Definition D3D12RHI.cpp:776
virtual FRenderQueryRHIRef RHICreateRenderQuery(ERenderQueryType QueryType) final override
Definition D3D12Query.cpp:155
void DeferredDelete(Args &&... InArgs)
Definition D3D12RHIPrivate.h:242
virtual FRHIBufferInitializer RHICreateBufferInitializer(FRHICommandListBase &RHICmdList, const FRHIBufferCreateDesc &CreateDesc) override
Definition D3D12Buffer.cpp:561
bool SetupDisplayHDRMetaData()
Definition WindowsD3D12Device.cpp:539
virtual const TCHAR * GetName() override
Definition D3D12RHIPrivate.h:289
virtual bool BeginUpdateTexture3D_ComputeShader(FUpdateTexture3DData &UpdateData, FD3D12UpdateTexture3DData *UpdateDataD3D12)
Definition D3D12RHIPrivate.h:508
virtual void RHIReleaseTransition(FRHITransition *Transition) final override
Definition D3D12CommandContext.cpp:789
FD3D12TimingArray CurrentTimingPerQueue
Definition D3D12RHIPrivate.h:266
void ProcessInterruptQueueUntil(FGraphEvent *GraphEvent)
Definition D3D12Submission.cpp:994
uint32 GetNumAdapters() const
Definition D3D12RHIPrivate.h:539
TArray< TSharedPtr< FD3D12Adapter > > ChosenAdapters
Definition D3D12RHIPrivate.h:554
virtual void RHIUpdateTextureReference(FRHICommandListBase &RHICmdList, FRHITextureReference *TextureRef, FRHITexture *NewTexture) final override
Definition D3D12TextureReference.cpp:109
virtual FTextureReferenceRHIRef RHICreateTextureReference(FRHICommandListBase &RHICmdList, FRHITexture *InReferencedTexture) final override
Definition D3D12TextureReference.cpp:98
virtual void RHIEndRenderQueryBatch_TopOfPipe(FRHICommandListBase &RHICmdList, ERenderQueryType QueryType) final override
Definition D3D12Query.cpp:261
uint32 ZeroBufferSize
Definition D3D12RHIPrivate.h:583
static FD3D12DynamicRHI * GetD3DRHI()
Definition D3D12RHIPrivate.h:168
virtual void RHISubmitCommandLists(FRHISubmitCommandListsArgs &&Args) final override
Definition D3D12Submission.cpp:261
static FORCEINLINE_DEBUGGABLE TReturnType * ResourceCast(TRHIType *Resource, uint32 GPUIndex)
Definition D3D12RHIPrivate.h:304
virtual void RHIEndUpdateTexture3D(FRHICommandListBase &RHICmdList, FUpdateTexture3DData &UpdateData) final override
Definition D3D12Texture.cpp:2514
virtual void RHIEndFrame(const FRHIEndFrameArgs &Args) final override
Definition D3D12RHI.cpp:572
void SubmitCommands(TConstArrayView< struct FD3D12FinalizedCommands * > Commands)
Definition D3D12Submission.cpp:266
virtual void * RHIGetNativeDevice() final override
Definition D3D12RHI.cpp:800
virtual void RHIFlushResources() final override
Definition D3D12RHI.cpp:387
virtual void RHIUnlockBuffer(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer) final override
Definition D3D12Buffer.cpp:870
void TerminateOnOutOfMemory(ID3D12Device *InDevice, HRESULT D3DResult, bool bCreatingTextures)
Definition D3D12Util.cpp:755
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
Definition D3D12Texture.cpp:1106
D3D_FEATURE_LEVEL FeatureLevel
Definition D3D12RHIPrivate.h:564
virtual void RHIBindDebugLabelName(FRHICommandListBase &RHICmdList, FRHITexture *Texture, const TCHAR *Name) final override
Definition D3D12Texture.cpp:2859
virtual FGraphicsPipelineStateRHIRef RHICreateGraphicsPipelineState(const FGraphicsPipelineStateInitializer &Initializer) final override
Definition D3D12State.cpp:708
void * ZeroBuffer
Definition D3D12RHIPrivate.h:582
void EndUpdateTexture3D_Internal(FRHICommandListBase &RHICmdList, FUpdateTexture3DData &UpdateData)
Definition D3D12Texture.cpp:2782
virtual void RHIMapStagingSurface(FRHITexture *Texture, FRHIGPUFence *Fence, void *&OutData, int32 &OutWidth, int32 &OutHeight, uint32 GPUIndex=0) final override
Definition D3D12RenderTarget.cpp:866
FD3D12Buffer * CreateD3D12Buffer(const FRHIBufferCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator)
Definition D3D12RHIPrivate.h:631
virtual void RHICreateTransition(FRHITransition *Transition, const FRHITransitionCreateInfo &CreateInfo) final override
Definition D3D12CommandContext.cpp:784
virtual FShaderBundleRHIRef RHICreateShaderBundle(const FShaderBundleCreateInfo &CreateInfo) override
Definition D3D12Shaders.cpp:285
virtual FComputePipelineStateRHIRef RHICreateComputePipelineState(const FComputePipelineStateInitializer &Initializer) final override
Definition D3D12State.cpp:757
virtual FRHICalcTextureSizeResult RHICalcTexturePlatformSize(const FRHITextureDesc &Desc, uint32 FirstMipIndex) override
Definition D3D12Texture.cpp:364
FD3D12Texture * CreateD3D12Texture(const FRHITextureCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator)
Definition D3D12RHIPrivate.h:606
virtual void HandleGpuTimeout(FD3D12Payload *Payload, double SecondsSinceSubmission)
Definition D3D12RHI.cpp:928
virtual void RHIUpdateTexture2D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, const uint8 *SourceData) final override
Definition D3D12Texture.cpp:2502
virtual FViewportRHIRef RHICreateViewport(void *WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override
Definition D3D12Viewport.cpp:698
virtual FDepthStencilStateRHIRef RHICreateDepthStencilState(const FDepthStencilStateInitializerRHI &Initializer) final override
Definition D3D12State.cpp:376
AGSContext * GetAmdAgsContext()
Definition D3D12RHIPrivate.h:546
FGraphEventRef EopTask
Definition D3D12RHIPrivate.h:274
void ForEachDevice(ID3D12Device *inDevice, const PerDeviceFunction &pfPerDeviceFunction)
Definition D3D12Util.cpp:31
virtual void RHIGetDisplaysInformation(FDisplayInformationArray &OutDisplayInformation) final override
Definition WindowsD3D12Viewport.cpp:548
virtual void RHIFinalizeContext(FRHIFinalizeContextArgs &&Args, TRHIPipelineArray< IRHIPlatformCommandList * > &Output) final override
Definition D3D12Submission.cpp:222
virtual FMeshShaderRHIRef RHICreateMeshShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D12Shaders.cpp:196
virtual void RHIUnlockBufferMGPU(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 GPUIndex) final override
Definition D3D12Buffer.cpp:892
void OutputGPUCrashReport(FTextBuilder &ErrorMessage)
Definition D3D12Util.cpp:871
virtual DXGI_FORMAT RHIGetSwapChainFormat(EPixelFormat InFormat) const final override
Definition D3D12RHI.cpp:684
AGSContext * AmdAgsContext
Definition D3D12RHIPrivate.h:571
bool IsQuadBufferStereoEnabled() const
Definition WindowsD3D12Device.cpp:1918
virtual bool RHIMatchPrecachePSOInitializers(const FGraphicsPipelineStateInitializer &LHS, const FGraphicsPipelineStateInitializer &RHS) final override
Definition D3D12State.cpp:653
virtual bool RHIIsPixEnabled() const final override
Definition D3D12RHI.cpp:657
virtual void RHIBeginRenderQueryBatch_TopOfPipe(FRHICommandListBase &RHICmdList, ERenderQueryType QueryType) final override
Definition D3D12Query.cpp:164
virtual FTextureRHIRef RHICreateTexture2DArrayFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource) final override
Definition D3D12Texture.cpp:2981
virtual bool QueueSupportsTileMapping(ED3D12QueueType)
Definition D3D12RHIPrivate.h:310
bool IsPixEventEnabled() const
Definition D3D12RHIPrivate.h:541
FD3D12Buffer * CreateD3D12Buffer(FRHICommandListBase *RHICmdList, const FRHIBufferCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator=nullptr)
Definition D3D12RHIPrivate.h:625
virtual FRasterizerStateRHIRef RHICreateRasterizerState(const FRasterizerStateInitializerRHI &Initializer) final override
Definition D3D12State.cpp:347
virtual void RHIUpdateTexture3D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8 *SourceData) final override
Definition D3D12Texture.cpp:2681
virtual bool RHIGetTextureMemoryVisualizeData(FColor *TextureData, int32 SizeX, int32 SizeY, int32 Pitch, int32 PixelSize) final override
Definition D3D12Texture.cpp:472
virtual FUniformBufferRHIRef RHICreateUniformBuffer(const void *Contents, const FRHIUniformBufferLayout *Layout, EUniformBufferUsage Usage, EUniformBufferValidation Validation) final override
Definition D3D12UniformBuffer.cpp:24
virtual FTextureRHIRef RHICreateTexture2DFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource) final override
Definition D3D12Texture.cpp:2976
virtual void RHIEndRenderQuery_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery) final override
Definition D3D12Query.cpp:209
virtual bool RHIIsResourcePlaced(FRHIBuffer *InBuffer) const final override
Definition D3D12RHI.cpp:708
virtual FTextureRHIRef RHIAsyncReallocateTexture2D(FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus) override
Definition D3D12Texture.cpp:1661
virtual void RHIAliasTextureResources(FTextureRHIRef &DestTexture, FTextureRHIRef &SrcTexture) final override
Definition D3D12Texture.cpp:2991
static void SetFormatAliasedTexturesMustBeCreatedUsingCommonLayout(bool bValue)
Definition D3D12Texture.cpp:219
virtual bool RHIGetAvailableResolutions(FScreenResolutionArray &Resolutions, bool bIgnoreRefreshRate) final override
Definition WindowsD3D12Device.cpp:1973
uint32 AmdSupportedExtensionFlags
Definition D3D12RHIPrivate.h:572
virtual void * RHILockBufferMGPU(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 GPUIndex, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override
Definition D3D12Buffer.cpp:859
virtual IRHIComputeContext * RHIGetCommandContext(ERHIPipeline Pipeline, FRHIGPUMask GPUMask) final override
Definition D3D12CommandContext.cpp:742
void ReadSurfaceDataNoMSAARaw(FRHITexture *TextureRHI, FIntRect Rect, TArray< uint8 > &OutData, FReadSurfaceDataFlags InFlags)
Definition D3D12RenderTarget.cpp:515
virtual FComputeShaderRHIRef RHICreateComputeShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) override
Definition D3D12Shaders.cpp:216
virtual void RHIFlushResourceBarriers(FRHICommandListBase &RHICmdList, uint32 InGPUIndex) final override
Definition D3D12RHI.cpp:781
virtual ~FD3D12DynamicRHI()
Definition D3D12RHI.cpp:270
virtual void * RHIGetNativeGraphicsQueue() final override
Definition D3D12RHI.cpp:805
virtual FGPUFenceRHIRef RHICreateGPUFence(const FName &Name) final override
Definition D3D12DirectCommandListManager.cpp:87
TRefCountPtr< FD3D12Resource > GetStagingTexture(FRHITexture *TextureRHI, FIntRect InRect, FIntRect &OutRect, FReadSurfaceDataFlags InFlags, D3D12_PLACED_SUBRESOURCE_FOOTPRINT &readBackHeapDesc, uint32 GPUIndex)
Definition D3D12RenderTarget.cpp:390
void InitializeSubmissionPipe()
Definition D3D12Submission.cpp:153
void ProcessDeferredDeletionQueue_Platform()
Definition WindowsD3D12Device.cpp:2279
virtual IRHITransientResourceAllocator * RHICreateTransientResourceAllocator() override
Definition D3D12CommandContext.cpp:794
virtual void RHIGetSupportedResolution(uint32 &Width, uint32 &Height) final override
Definition D3D12RHI.cpp:825
FD3D12Adapter & GetAdapter(uint32_t Index=0)
Definition D3D12RHIPrivate.h:536
void * LockBuffer(FRHICommandListBase &RHICmdList, FD3D12Buffer *Buffer, uint32 BufferSize, EBufferUsageFlags BufferUsage, uint32 Offset, uint32 Size, EResourceLockMode LockMode)
Definition D3D12Buffer.cpp:635
virtual void RHIWaitManualFence(FRHICommandList &RHICmdList, ID3D12Fence *Fence, uint64 Value) final override
Definition D3D12RHI.cpp:767
virtual FSamplerStateRHIRef RHICreateSamplerState(const FSamplerStateInitializerRHI &Initializer) final override
Definition D3D12State.cpp:218
virtual void PostInit() override
Definition D3D12RHI.cpp:257
Definition D3D12Device.h:104
Definition D3D12Resources.h:641
Definition D3D12Resources.h:181
bool RequiresResourceStateTracking() const
Definition D3D12Resources.h:325
ED3D12Access GetDefaultAccess() const
Definition D3D12Resources.h:320
Definition D3D12Texture.h:31
Definition D3D12Submission.cpp:84
Definition D3D12Device.h:70
Definition DynamicRHI.h:206
virtual void RHIUpdateResourceCollection(FRHICommandListBase &RHICmdList, FRHIResourceCollection *InResourceCollection, uint32 InStartIndex, TConstArrayView< FRHIResourceCollectionMember > InMemberUpdates)
Definition DynamicRHI.h:534
virtual FRayTracingShaderRHIRef RHICreateRayTracingShader(TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency)
Definition DynamicRHI.h:1022
virtual FShaderBindingTableRHIRef RHICreateShaderBindingTable(FRHICommandListBase &RHICmdList, const FRayTracingShaderBindingTableInitializer &Initializer)
Definition DynamicRHI.h:1034
virtual void RHIHandleDisplayChange()
Definition DynamicRHI.h:746
virtual FUnorderedAccessViewRHIRef RHIGetViewportBackBufferUAV(FRHIViewport *ViewportRHI)
Definition DynamicRHI.h:669
virtual FRayTracingSceneRHIRef RHICreateRayTracingScene(FRayTracingSceneInitializer Initializer)
Definition DynamicRHI.h:1016
virtual FRayTracingClusterOperationSize RHICalcRayTracingClusterOperationSize(const FRayTracingClusterOperationInitializer &Initializer)
Definition DynamicRHI.h:998
virtual FRHIResourceCollectionRef RHICreateResourceCollection(FRHICommandListBase &RHICmdList, TConstArrayView< FRHIResourceCollectionMember > InMembers)
Definition DynamicRHI.h:529
virtual FRayTracingGeometryRHIRef RHICreateRayTracingGeometry(FRHICommandListBase &RHICmdList, const FRayTracingGeometryInitializer &Initializer)
Definition DynamicRHI.h:1010
virtual FRayTracingAccelerationStructureSize RHICalcRayTracingGeometrySize(const FRayTracingGeometryInitializer &Initializer)
Definition DynamicRHI.h:992
virtual FRayTracingAccelerationStructureSize RHICalcRayTracingSceneSize(const FRayTracingSceneInitializer &Initializer)
Definition DynamicRHI.h:986
virtual FRayTracingAccelerationStructureOfflineMetadata RHIGetRayTracingGeometryOfflineMetadata(const FRayTracingGeometryOfflineDataHeader &OfflineDataHeader)
Definition DynamicRHI.h:1004
virtual FRayTracingPipelineStateRHIRef RHICreateRayTracingPipelineState(const FRayTracingPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1028
Definition Float16Color.h:13
Definition RHIResources.h:4572
Definition NameTypes.h:617
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHICommandList.h:3819
Definition RHICommandList.h:2735
Definition RHIResources.h:2387
Definition RHIResources.h:978
Definition RHIResources.h:972
Definition RHIResources.h:2444
Definition RHIResourceCollection.h:46
Definition RHIResourceReplace.h:12
Definition RHIResources.h:54
Definition RHIResources.h:3981
Definition RHITextureReference.h:8
Definition RHIResources.h:2153
Definition RHIResources.h:725
Definition RHIResources.h:954
Definition RHIResources.h:1265
Definition RHIResources.h:2515
Definition RHIResources.h:5023
Definition SecureHash.h:226
Definition ScopeLock.h:141
Definition D3D12RHIPrivate.h:719
FScopedResourceBarrier(FD3D12ContextCommon &InContext, const FD3D12Resource *InResource, ED3D12Access InBeforeD3D12Access, ED3D12Access InDesiredD3D12Access, uint32 InSubresource)
Definition D3D12RHIPrivate.h:729
FScopedResourceBarrier(FD3D12ContextCommon &InContext, const FD3D12Resource *InResource, ED3D12Access InDesiredD3D12Access, uint32 InSubresource)
Definition D3D12RHIPrivate.h:757
~FScopedResourceBarrier()
Definition D3D12RHIPrivate.h:770
Definition ThreadSafeCounter.h:14
Definition RHIResources.h:4915
Definition DynamicRHI.h:1472
Definition RHIContext.h:693
Definition RHIContext.h:257
Definition RHITransientResourceAllocator.h:536
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
UE_FORCEINLINE_HINT ElementType & Emplace_GetRef(ArgsType &&... Args) UE_LIFETIMEBOUND
Definition Array.h:2613
Definition IConsoleManager.h:1792
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition RHIPipeline.h:55
Definition RefCounting.h:454
Definition SharedPointer.h:692
Definition FunctionFwd.h:19
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Definition D3D12CommandList.cpp:417
Type
Definition RHIFeatureLevel.h:20
@ SM5
Definition RHIFeatureLevel.h:42
@ Num
Definition RHIFeatureLevel.h:54
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition RHIResources.h:246
static CORE_API const TCHAR * Get()
Definition CommandLine.cpp:61
Definition D3D12RHIPrivate.h:618
ED3D12Access DesiredD3D12Access
Definition D3D12RHIPrivate.h:620
FD3D12Buffer * Buffer
Definition D3D12RHIPrivate.h:619
Definition D3D12RHIPrivate.h:596
FD3D12Texture * Texture
Definition D3D12RHIPrivate.h:597
ED3D12Access DesiredD3D12Access
Definition D3D12RHIPrivate.h:599
ED3D12Access CreateD3D12Access
Definition D3D12RHIPrivate.h:598
Definition D3D12RHIPrivate.h:259
FD3D12Timing * CreateNew(FD3D12Queue &Queue)
Definition D3D12RHIPrivate.h:260
Definition WindowsD3D12Submission.h:13
Definition D3D12RHIPrivate.h:131
uint32 StackSize
Definition D3D12RHIPrivate.h:140
uint32 ScratchSize
Definition D3D12RHIPrivate.h:141
uint32 NumVGPR
Definition D3D12RHIPrivate.h:138
uint32 NumSGPR
Definition D3D12RHIPrivate.h:139
static constexpr uint32 MaxPerformanceGroups
Definition D3D12RHIPrivate.h:132
uint32 PerformanceGroup
Definition D3D12RHIPrivate.h:136
Definition D3D12Resources.h:134
Definition D3D12RHIPrivate.h:121
bool bComputeShaderCopy
Definition D3D12RHIPrivate.h:123
FD3D12ResourceLocation * UploadHeapResourceLocation
Definition D3D12RHIPrivate.h:122
Definition D3D12RHIPrivate.h:148
static CORE_API bool Param(const TCHAR *Stream, const TCHAR *Param)
Definition Parse.cpp:325
Definition RHIResources.h:1417
Definition RHIBufferInitializer.h:12
Definition DynamicRHI.h:120
Definition DynamicRHI.h:149
Definition DynamicRHI.h:198
Definition RHIResources.h:1938
FResourceBulkDataInterface * BulkData
Definition RHIResources.h:2140
Definition RHIResources.h:1689
Definition RHITextureInitializer.h:50
Definition RHITransition.h:382
Definition RHITransition.h:475
Definition RHIResources.h:2648
Definition RHIResources.h:3693
Definition RHIResources.h:3842
Definition RHIResources.h:3761
Definition RHIResources.h:3496
Definition RHIResources.h:3669
Definition RHIResources.h:3635
Definition RHIResources.h:3910
Definition RHICommandList.h:220
Definition RHITypes.h:127
Definition RHITypes.h:155
Definition ID3D12DynamicRHI.h:22
Definition D3D12Resources.h:827
Definition LinuxPlatformSplash.cpp:43