18#include COMPILED_PLATFORM_HEADER(D3D12BarriersFactory.h)
56#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
120#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
132#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
209 virtual void OpenCommandList();
210 virtual void CloseCommandList();
263 bool IsOpen()
const {
return CommandList !=
nullptr; }
268 if (!ContextSyncPoint)
271 BatchedSyncPoints.ToSignal.Add(ContextSyncPoint);
274 return ContextSyncPoint;
289 return TimestampQueries;
334 UpdateReservedResources,
337 } CurrentPhase = EPhase::Wait;
341 if (Payloads.
Num() == 0 || Phase < CurrentPhase)
346 CurrentPhase = Phase;
347 return Payloads.
Last();
371 void ConditionalSplitCommandList();
376#if D3D12_MAX_COMMANDLIST_INTERFACE >= 1
379#if D3D12_MAX_COMMANDLIST_INTERFACE >= 2
382#if D3D12_MAX_COMMANDLIST_INTERFACE >= 3
385#if D3D12_MAX_COMMANDLIST_INTERFACE >= 4
388#if D3D12_MAX_COMMANDLIST_INTERFACE >= 5
391#if D3D12_MAX_COMMANDLIST_INTERFACE >= 6
394#if D3D12_MAX_COMMANDLIST_INTERFACE >= 7
397#if D3D12_MAX_COMMANDLIST_INTERFACE >= 8
400#if D3D12_MAX_COMMANDLIST_INTERFACE >= 9
403#if D3D12_MAX_COMMANDLIST_INTERFACE >= 10
407#if D3D12_SUPPORTS_DEBUG_COMMAND_LIST
410#if D3D12_RHI_RAYTRACING
420#if ENABLE_RESIDENCY_MANAGEMENT
421 void UpdateResidency(
const FD3D12Resource* Resource) {
check(Resource); GetCommandList().UpdateResidency(Resource); }
427 void AddGlobalBarrier(
438 void FlushResourceBarriers();
522 return *
Base.GetSingleDeviceContext(GPUIndex);
544#if RHI_NEW_GPU_PROFILER
580#if PLATFORM_SUPPORTS_VARIABLE_RATE_SHADING
589#if PLATFORM_SUPPORTS_VIRTUAL_TEXTURES
624 template<
typename TPixelShader>
653#if WITH_RHI_BREADCRUMBS
667#if (RHI_NEW_GPU_PROFILER == 0)
671 virtual void RHISetViewport(
float MinX,
float MinY,
float MinZ,
float MaxX,
float MaxY,
float MaxZ)
final override;
706#if PLATFORM_SUPPORTS_MESH_SHADERS
734#if D3D12_RHI_RAYTRACING
772 template<
typename ObjectType,
typename RHIType>
778 template<
typename ObjectType,
typename RHIType>
813 return StaticUniformBuffers;
823#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
831 return ShaderBindinglayout ? *ShaderBindinglayout :
Default;
843 const FName& DebugName
854 void SetupDispatch(
uint32 ThreadGroupCountX,
uint32 ThreadGroupCountY,
uint32 ThreadGroupCountZ);
856 void SetupDispatchDraw(
uint32 ThreadGroupCountX,
uint32 ThreadGroupCountY,
uint32 ThreadGroupCountZ);
868#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
886#define ContextRedirect(Call) { for (uint32 GPUIndex : GPUMask) PhysicalContexts[GPUIndex]-> Call; }
887#define ContextGPU0(Call) { PhysicalContexts[0]-> Call; }
935#if WITH_RHI_BREADCRUMBS
941 PhysicalContexts[GPUIndex]->RHIBeginBreadcrumbGPU(
Breadcrumb);
949 PhysicalContexts[GPUIndex]->RHIEndBreadcrumbGPU(
Breadcrumb);
983#if (RHI_NEW_GPU_PROFILER == 0)
1062#if PLATFORM_SUPPORTS_MESH_SHADERS
1092#if D3D12_RHI_RAYTRACING
1101 FD3D12CommandContext::UnregisterAccelerationStructuresInternalMGPU(Params,
GPUMask);
1171 PhysicalContexts[GPUIndex] =
Context;
1176 return PhysicalContexts[GPUIndex];
1209 Result[
Index] =
Base ? &
Base->GetHighestLevelContext() :
nullptr;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define FORCEINLINE_DEBUGGABLE
Definition CoreMiscDefines.h:74
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ED3D12Access
Definition D3D12Access.h:15
ED3D12FlushFlags
Definition D3D12CommandContext.h:183
#define ContextRedirect(Call)
Definition D3D12CommandContext.h:886
ED3D12Units
Definition D3D12CommandContext.h:177
ED3D12QueryType
Definition D3D12Query.h:15
ED3D12QueueType
Definition D3D12Queue.h:11
#define MAX_CBS
Definition D3D12RHI.h:20
ED3D12PipelineType
Definition D3D12StateCachePrivate.h:59
ED3D12SyncPointType
Definition D3D12Submission.h:30
FORCEINLINE FD3D12Texture * GetD3D12TextureFromRHITexture(FRHITexture *Texture)
Definition D3D12Texture.h:237
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
ERayTracingBindingType
Definition RHICommandList.h:281
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_NumStandardFrequencies
Definition RHIDefinitions.h:222
uint8 FUniformBufferStaticSlot
Definition RHIDefinitions.h:722
EVRSRateCombiner
Definition RHIDefinitions.h:873
EAsyncComputeBudget
Definition RHIDefinitions.h:1317
ETextureCreateFlags
Definition RHIDefinitions.h:1091
EVRSShadingRate
Definition RHIDefinitions.h:860
ERHIPipeline
Definition RHIPipeline.h:13
EShaderParameterTypeMask
Definition ShaderCore.h:263
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition RobinHoodHashTable.h:1419
Definition D3D12RHICommon.h:54
Definition D3D12Adapter.h:136
Definition D3D12Resources.h:891
Definition D3D12Resources.h:1017
Definition D3D12CommandList.h:36
Definition D3D12CommandContext.h:479
virtual FD3D12CommandContext * GetSingleDeviceContext(uint32 InGPUIndex)=0
virtual class FD3D12CommandContextRedirector * AsRedirector()
Definition D3D12CommandContext.h:490
static FD3D12CommandContextBase * Get(IRHIComputeContext *RHIContext)
Definition D3D12CommandContext.h:497
FRHIGPUMask GetPhysicalGPUMask() const
Definition D3D12CommandContext.h:486
friend class FD3D12CommandContext
Definition D3D12CommandContext.h:505
void RHIEndDrawingViewport(FRHIViewport *Viewport, bool bPresent, bool bLockToVsync) final override
Definition D3D12Viewport.cpp:753
virtual void RHISetAsyncComputeBudget(EAsyncComputeBudget Budget)
Definition D3D12CommandContext.h:488
FRHIGPUMask PhysicalGPUMask
Definition D3D12CommandContext.h:508
FRHIGPUMask GPUMask
Definition D3D12CommandContext.h:507
static FD3D12CommandContextBase & Get(FRHICommandListBase &RHICmdList)
Definition D3D12CommandContext.h:492
FRHIGPUMask GetGPUMask() const
Definition D3D12CommandContext.h:485
Definition D3D12CommandContext.h:876
virtual FORCEINLINE void RHISetGraphicsPipelineState(FRHIGraphicsPipelineState *GraphicsPipelineState, uint32 StencilRef, bool bApplyAdditionalState) final override
Definition D3D12CommandContext.h:1006
virtual FORCEINLINE void RHISetShadingRate(EVRSShadingRate ShadingRate, EVRSRateCombiner Combiner) final override
Definition D3D12CommandContext.h:1077
virtual FORCEINLINE void RHIDrawPrimitiveIndirect(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12CommandContext.h:1042
virtual FORCEINLINE void RHISetStaticUniformBuffer(FUniformBufferStaticSlot Slot, FRHIUniformBuffer *Buffer) final override
Definition D3D12CommandContext.h:1014
virtual FORCEINLINE void RHIEndRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition D3D12CommandContext.h:979
virtual FORCEINLINE void RHISetComputePipelineState(FRHIComputePipelineState *ComputePipelineState) final override
Definition D3D12CommandContext.h:889
virtual FORCEINLINE void RHIBeginTransitions(TArrayView< const FRHITransition * > Transitions) final override
Definition D3D12CommandContext.h:902
virtual FRHIGPUMask RHIGetGPUMask() const final override
Definition D3D12CommandContext.h:1154
virtual FORCEINLINE void RHIDrawIndexedIndirect(FRHIBuffer *IndexBufferRHI, FRHIBuffer *ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances) final override
Definition D3D12CommandContext.h:1046
virtual FORCEINLINE void RHIDrawIndexedPrimitive(FRHIBuffer *IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition D3D12CommandContext.h:1050
virtual FORCEINLINE void RHISetDepthBounds(float MinDepth, float MaxDepth) final override
Definition D3D12CommandContext.h:1072
virtual FD3D12CommandContextRedirector * AsRedirector() override
Definition D3D12CommandContext.h:884
virtual FORCEINLINE void RHIMultiDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset, FRHIBuffer *CountBuffer, uint32 CountBufferOffset, uint32 MaxDrawArguments) final override
Definition D3D12CommandContext.h:1058
virtual FORCEINLINE void RHIBeginRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition D3D12CommandContext.h:975
virtual void RHIBeginRenderPass(const FRHIRenderPassInfo &InInfo, const TCHAR *InName) final override
Definition D3D12CommandContext.h:1082
virtual void RHISetGPUMask(FRHIGPUMask InGPUMask) final override
Definition D3D12CommandContext.h:1148
virtual FORCEINLINE void RHISetShaderParameters(FRHIComputeShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
Definition D3D12CommandContext.h:926
virtual FORCEINLINE void RHISetStencilRef(uint32 StencilRef) final override
Definition D3D12CommandContext.h:1026
FORCEINLINE FD3D12CommandContext * GetSingleDeviceContext(uint32 GPUIndex) final override
Definition D3D12CommandContext.h:1174
virtual FORCEINLINE void RHIEndTransitions(TArrayView< const FRHITransition * > Transitions) final override
Definition D3D12CommandContext.h:906
virtual FORCEINLINE void RHISetMultipleViewports(uint32 Count, const FViewportBounds *Data) final override
Definition D3D12CommandContext.h:955
bool const bIsDefaultContext
Definition D3D12CommandContext.h:880
FORCEINLINE void SetPhysicalGPUMask(FRHIGPUMask InGPUMask)
Definition D3D12CommandContext.h:1161
FORCEINLINE void SetPhysicalContext(FD3D12CommandContext *Context)
Definition D3D12CommandContext.h:1166
FORCEINLINE void RHISetShaderRootConstants(const FUint32Vector4 &Constants) final override
Definition D3D12CommandContext.h:1034
virtual FORCEINLINE void RHISetStaticUniformBuffers(const FUniformBufferStaticBindings &InUniformBuffers) final override
Definition D3D12CommandContext.h:1010
virtual FORCEINLINE void RHISetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ) final override
Definition D3D12CommandContext.h:993
virtual FORCEINLINE void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override
Definition D3D12CommandContext.h:893
virtual FORCEINLINE void RHICopyToStagingBuffer(FRHIBuffer *SourceBuffer, FRHIStagingBuffer *DestinationStagingBuffer, uint32 Offset, uint32 NumBytes) final override
Definition D3D12CommandContext.h:922
virtual FORCEINLINE void RHISetShaderUnbinds(FRHIComputeShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds) final override
Definition D3D12CommandContext.h:930
FORCEINLINE void RHISetBlendFactor(const FLinearColor &BlendFactor) final override
Definition D3D12CommandContext.h:1030
virtual void RHIEndRenderPass() final override
Definition D3D12CommandContext.h:1087
virtual FORCEINLINE void RHISetStereoViewport(float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ) override
Definition D3D12CommandContext.h:997
virtual FORCEINLINE void RHISetShaderParameters(FRHIGraphicsShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
Definition D3D12CommandContext.h:1018
virtual FORCEINLINE void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override
Definition D3D12CommandContext.h:1002
virtual void SetExecutingCommandList(FRHICommandListBase *InCmdList) final override
Definition D3D12CommandContext.h:1179
virtual FORCEINLINE void RHICopyTexture(FRHITexture *SourceTextureRHI, FRHITexture *DestTextureRHI, const FRHICopyTextureInfo &CopyInfo) final override
Definition D3D12CommandContext.h:967
virtual FORCEINLINE void RHISetStreamSource(uint32 StreamIndex, FRHIBuffer *VertexBuffer, uint32 Offset) final override
Definition D3D12CommandContext.h:989
virtual FORCEINLINE void RHIDispatchIndirectComputeShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12CommandContext.h:897
virtual FORCEINLINE void RHIDrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition D3D12CommandContext.h:1038
virtual FORCEINLINE void RHIClearUAVUint(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FUintVector4 &Values) final override
Definition D3D12CommandContext.h:963
virtual FORCEINLINE void RHIDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12CommandContext.h:1054
virtual FORCEINLINE void RHISetShaderUnbinds(FRHIGraphicsShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds) final override
Definition D3D12CommandContext.h:1022
virtual FORCEINLINE void RHICopyBufferRegion(FRHIBuffer *DestBuffer, uint64 DstOffset, FRHIBuffer *SourceBuffer, uint64 SrcOffset, uint64 NumBytes) final override
Definition D3D12CommandContext.h:971
ED3D12QueueType const QueueType
Definition D3D12CommandContext.h:879
virtual FORCEINLINE void RHIClearUAVFloat(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FVector4f &Values) final override
Definition D3D12CommandContext.h:959
virtual FORCEINLINE void RHICalibrateTimers(FRHITimestampCalibrationQuery *CalibrationQuery) final override
Definition D3D12CommandContext.h:984
Definition D3D12CommandContext.h:513
virtual void RHIDrawIndexedPrimitive(FRHIBuffer *IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition D3D12Commands.cpp:1270
virtual void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override
Definition D3D12Commands.cpp:140
static FD3D12CommandContext & Get(FRHICommandListBase &RHICmdList, uint32 GPUIndex)
Definition D3D12CommandContext.h:518
virtual void RHISetShaderRootConstants(const FUint32Vector4 &Constants) override
Definition D3D12Commands.cpp:1118
FD3D12ConstantBuffer StageConstantBuffers[SF_NumStandardFrequencies]
Definition D3D12CommandContext.h:587
virtual void RHICalibrateTimers(FRHITimestampCalibrationQuery *CalibrationQuery) final override
Definition D3D12Commands.cpp:1007
static FORCEINLINE TReturnType * ResourceCast(TRHIType *Resource)
Definition D3D12CommandContext.h:760
void CommitGraphicsResourceTables()
Definition D3D12Commands.cpp:1073
virtual void RHIMultiDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset, FRHIBuffer *CountBuffer, uint32 CountBufferOffset, uint32 MaxDrawArguments) final override
Definition D3D12Commands.cpp:1302
virtual void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override
Definition D3D12Commands.cpp:345
uint32 GetGPUIndex() const
Definition D3D12CommandContext.h:802
FD3D12StateCache StateCache
Definition D3D12CommandContext.h:561
void FlushPendingDescriptorUpdates()
Definition D3D12Commands.cpp:70
FD3D12FastConstantAllocator ConstantsAllocator
Definition D3D12CommandContext.h:556
virtual void SetDepthBounds(float MinDepth, float MaxDepth)
Definition D3D12Commands.cpp:1518
virtual void RHIDispatchComputeShaderBundle(FRHIShaderBundle *ShaderBundle, FRHIBuffer *RecordArgBuffer, TConstArrayView< FRHIShaderParameterResource > SharedBindlessParameters, TConstArrayView< FRHIShaderBundleComputeDispatch > Dispatches, bool bEmulated) override
Definition D3D12Commands.cpp:1123
virtual void RHIClearUAVUint(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FUintVector4 &Values) final override
Definition D3D12UAV.cpp:478
virtual void RHISetStreamSource(uint32 StreamIndex, FRHIBuffer *VertexBuffer, uint32 Offset) final override
Definition D3D12Commands.cpp:90
virtual void SetShadingRate(EVRSShadingRate ShadingRate, FD3D12Resource *ShadingRateImage, const TStaticArray< EVRSRateCombiner, ED3D12VRSCombinerStages::Num > &Combiners)
Definition D3D12Commands.cpp:1540
virtual void RHIBeginRenderPass(const FRHIRenderPassInfo &InInfo, const TCHAR *InName)
Definition D3D12CommandContext.h:715
void SetUAVParameter(EShaderFrequency Frequency, uint32 UAVIndex, FD3D12UnorderedAccessView *UAV)
Definition D3D12Commands.cpp:455
virtual void RHICopyToStagingBuffer(FRHIBuffer *SourceBuffer, FRHIStagingBuffer *DestinationStagingBuffer, uint32 Offset, uint32 NumBytes) final override
Definition D3D12Commands.cpp:220
FORCENOINLINE void CopyBufferRegionChecked(ID3D12Resource *DestResource, const FName &DestName, uint64 DestOffset, ID3D12Resource *SourceResource, const FName &SourceName, uint64 SourceOffset, uint32 ByteCount)
Definition D3D12Buffer.cpp:96
virtual void RHIDispatchIndirectComputeShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12Commands.cpp:151
virtual void RHISetShadingRate(EVRSShadingRate ShadingRate, EVRSRateCombiner Combiner) final override
Definition D3D12Commands.cpp:1529
const FRHIShaderBindingLayout & GetShaderBindingLayout() const
Definition D3D12CommandContext.h:828
virtual void RHISetComputePipelineState(FRHIComputePipelineState *ComputePipelineState) final override
Definition D3D12Commands.cpp:437
virtual void RHIDispatchGraphicsShaderBundle(FRHIShaderBundle *ShaderBundle, FRHIBuffer *RecordArgBuffer, const FRHIShaderBundleGraphicsState &BundleState, TConstArrayView< FRHIShaderParameterResource > SharedBindlessParameters, TConstArrayView< FRHIShaderBundleGraphicsDispatch > Dispatches, bool bEmulated) override
Definition D3D12Commands.cpp:1147
virtual void RHIDrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition D3D12Commands.cpp:1216
void ResolveTextureUsingShader(FD3D12Texture *SourceTexture, FD3D12Texture *DestTexture, FD3D12RenderTargetView *DestSurfaceRTV, FD3D12DepthStencilView *DestSurfaceDSV, const D3D12_RESOURCE_DESC &ResolveTargetDesc, const FResolveRect &SourceRect, const FResolveRect &DestRect, typename TPixelShader::FParameter PixelShaderParameter)
Definition D3D12RenderTarget.cpp:149
void SetSRVParameter(EShaderFrequency Frequency, uint32 SRVIndex, FD3D12ShaderResourceView *SRV)
Definition D3D12Commands.cpp:467
virtual void OpenCommandList() override
Definition D3D12CommandContext.cpp:369
virtual void RHISetStaticUniformBuffer(FUniformBufferStaticSlot Slot, FRHIUniformBuffer *Buffer) final override
Definition D3D12Commands.cpp:215
void ResolveTexture(UE::RHICore::FResolveTextureInfo Info)
Definition D3D12RenderTarget.cpp:309
bool bDiscardSharedGraphicsConstants
Definition D3D12CommandContext.h:574
void SetResourcesFromTables(const ShaderType *RESTRICT)
virtual void RHISetStencilRef(uint32 StencilRef) final override
Definition D3D12Commands.cpp:795
void CommitComputeResourceTables()
Definition D3D12Commands.cpp:1109
static FD3D12Texture * RetrieveTexture(FRHITexture *Texture, uint32 GPUIndex)
Definition D3D12CommandContext.h:784
virtual ~FD3D12CommandContext()
Definition D3D12CommandContext.cpp:73
uint16 DirtyUniformBuffers[SF_NumStandardFrequencies]
Definition D3D12CommandContext.h:567
void SetExplicitDescriptorCache(FD3D12ExplicitDescriptorCache &ExplicitDescriptorCache)
Definition D3D12Commands.cpp:79
virtual void RHIDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12Commands.cpp:1342
virtual void RHISetMultipleViewports(uint32 Count, const FViewportBounds *Data) final override
Definition D3D12Shaders.cpp:291
TArray< uint32 > GPUEventStack
Definition D3D12CommandContext.h:559
bool bOuterOcclusionQuerySubmitted
Definition D3D12CommandContext.h:571
virtual void RHICopyBufferRegion(FRHIBuffer *DestBuffer, uint64 DstOffset, FRHIBuffer *SourceBuffer, uint64 SrcOffset, uint64 NumBytes) final override
Definition D3D12Buffer.cpp:953
virtual void RHIDrawPrimitiveIndirect(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12Commands.cpp:1230
virtual void RHIBeginRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition D3D12Query.cpp:198
static FORCEINLINE_DEBUGGABLE TReturnType * ResourceCast(TRHIType *Resource, uint32 GPUIndex)
Definition D3D12CommandContext.h:766
virtual void RHIClearUAVFloat(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FVector4f &Values) final override
Definition D3D12UAV.cpp:472
virtual void SetAsyncComputeBudgetInternal(EAsyncComputeBudget Budget)
Definition D3D12CommandContext.h:639
FORCENOINLINE void CopyTextureRegionChecked(const D3D12_TEXTURE_COPY_LOCATION *DestCopyLocation, int DestX, int DestY, int DestZ, EPixelFormat DestPixelFormat, const D3D12_TEXTURE_COPY_LOCATION *SourceCopyLocation, const D3D12_BOX *SourceBox, EPixelFormat SourcePixelFormat, const FName &DebugName)
Definition D3D12Texture.cpp:1467
FORCEINLINE_DEBUGGABLE FD3D12Texture * RetrieveTexture(FRHITexture *Texture)
Definition D3D12CommandContext.h:790
virtual void RHIEndTransitions(TArrayView< const FRHITransition * > Transitions) final override
Definition D3D12Commands.cpp:181
virtual void RHIEndRenderPass()
Definition D3D12CommandContext.h:724
FD3D12CommandContext * GetSingleDeviceContext(uint32 InGPUIndex) final override
Definition D3D12CommandContext.h:848
virtual void RHISetShaderUnbinds(FRHIComputeShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds) final override
Definition D3D12Commands.cpp:788
virtual void RHISetStereoViewport(float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ) override
Definition D3D12Commands.cpp:315
void SetRenderTargets(uint32 NumSimultaneousRenderTargets, const FRHIRenderTargetView *NewRenderTargets, const FRHIDepthRenderTargetView *NewDepthStencilTarget)
Definition D3D12Commands.cpp:862
virtual void ConditionalClearShaderResource(FD3D12ResourceLocation *Resource, EShaderParameterTypeMask ShaderParameterTypeMask) override final
Definition D3D12CommandContext.cpp:679
virtual void RHISetGPUMask(FRHIGPUMask InGPUMask) final override
Definition D3D12CommandContext.h:804
virtual ERHIPipeline GetPipeline() const override
Definition D3D12CommandContext.h:531
virtual void RHIBeginTransitions(TArrayView< const FRHITransition * > Transitions) final override
Definition D3D12Commands.cpp:176
const TArray< FRHIUniformBuffer * > & GetStaticUniformBuffers() const
Definition D3D12CommandContext.h:811
void CommitComputeShaderConstants()
Definition D3D12Commands.cpp:1040
void ClearAllShaderResources()
Definition D3D12CommandContext.cpp:705
virtual void RHISetGraphicsPipelineState(FRHIGraphicsPipelineState *GraphicsPipelineState, uint32 StencilRef, bool bApplyAdditionalState) final override
Definition D3D12Commands.cpp:390
static FORCEINLINE_DEBUGGABLE ObjectType * RetrieveObject(RHIType *RHIObject, uint32 GPUIndex)
Definition D3D12CommandContext.h:773
virtual void CloseCommandList() override final
Definition D3D12CommandContext.cpp:400
virtual void RHISetShaderParameters(FRHIComputeShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
FORCEINLINE_DEBUGGABLE const FD3D12Texture * RetrieveTexture(const FRHITexture *Texture)
Definition D3D12CommandContext.h:795
void CommitNonComputeShaderConstants()
Definition D3D12Commands.cpp:1017
bool bDiscardSharedComputeConstants
Definition D3D12CommandContext.h:577
virtual void ClearState(EClearStateMode ClearStateMode=EClearStateMode::All) override final
Definition D3D12CommandContext.cpp:663
virtual void RHISetDepthBounds(float MinDepth, float MaxDepth) final override
Definition D3D12Commands.cpp:1513
virtual void RHISetBlendFactor(const FLinearColor &BlendFactor) final override
Definition D3D12Commands.cpp:800
virtual void RHISetStaticUniformBuffers(const FUniformBufferStaticBindings &InUniformBuffers) final override
Definition D3D12Commands.cpp:186
virtual void RHISetShaderParameters(FRHIGraphicsShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
FRenderQueryRHIRef OuterOcclusionQuery
Definition D3D12CommandContext.h:570
virtual void RHIDrawIndexedIndirect(FRHIBuffer *IndexBufferRHI, FRHIBuffer *ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances) final override
Definition D3D12Commands.cpp:1250
FORCEINLINE_DEBUGGABLE ObjectType * RetrieveObject(RHIType *RHIObject)
Definition D3D12CommandContext.h:779
FD3D12UniformBuffer * BoundUniformBuffers[SF_NumStandardFrequencies][MAX_CBS]
Definition D3D12CommandContext.h:564
void SetRenderTargetsAndClear(const FRHISetRenderTargetsInfo &RenderTargetsInfo)
Definition D3D12Commands.cpp:943
virtual void RHIClearMRTImpl(bool *bClearColorArray, int32 NumClearColors, const FLinearColor *ColorArray, bool bClearDepth, float Depth, bool bClearStencil, uint32 Stencil)
Definition D3D12Commands.cpp:1382
uint32 GetFrameFenceCounter() const
Definition D3D12CommandContext.cpp:477
void UnsetExplicitDescriptorCache()
Definition D3D12Commands.cpp:84
virtual void RHISetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ) final override
Definition D3D12Commands.cpp:297
virtual void RHIEndRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition D3D12Query.cpp:238
virtual void RHICopyTexture(FRHITexture *SourceTexture, FRHITexture *DestTexture, const FRHICopyTextureInfo &CopyInfo) final override
Definition D3D12Texture.cpp:3072
void ClearShaderResources(FD3D12UnorderedAccessView *UAV, EShaderParameterTypeMask ShaderParameterTypeMask)
Definition D3D12CommandContext.cpp:689
Definition D3D12CommandList.h:63
Definition D3D12ConstantBuffer.h:20
Definition D3D12CommandContext.h:1193
FD3D12ContextArray(FRHIContextArray const &Contexts)
Definition D3D12CommandContext.h:1195
Definition D3D12CommandContext.h:199
EMarkerType
Definition D3D12CommandContext.h:328
FD3D12CommandList & GetCommandList()
Definition D3D12CommandContext.h:320
FD3D12Payload * GetPayload(EPhase Phase)
Definition D3D12CommandContext.h:339
TArray< FD3D12SyncPointRef > ToWait
Definition D3D12CommandContext.h:281
ED3D12QueueType const QueueType
Definition D3D12CommandContext.h:255
auto CopyCommandList()
Definition D3D12CommandContext.h:374
auto GraphicsCommandList()
Definition D3D12CommandContext.h:375
void BeginQuery(FD3D12QueryLocation const &Location)
Definition D3D12CommandContext.h:417
void EndQuery(FD3D12QueryLocation const &Location)
Definition D3D12CommandContext.h:418
void BeginRecursiveCommand()
Definition D3D12CommandContext.h:314
virtual ~FD3D12ContextCommon()=default
bool IsAsyncComputeContext() const
Definition D3D12CommandContext.h:256
void OpenIfNotAlready()
Definition D3D12CommandContext.h:358
bool IsDefaultContext() const
Definition D3D12CommandContext.h:261
void UpdateResidency(const FD3D12Resource *Resource)
Definition D3D12CommandContext.h:423
EClearStateMode
Definition D3D12CommandContext.h:214
auto BaseCommandList()
Definition D3D12CommandContext.h:373
FD3D12Device *const Device
Definition D3D12CommandContext.h:252
FD3D12QueryAllocator & GetTimestampQueries()
Definition D3D12CommandContext.h:287
TArray< FD3D12SyncPointRef > ToSignal
Definition D3D12CommandContext.h:282
virtual void ConditionalClearShaderResource(FD3D12ResourceLocation *Resource, EShaderParameterTypeMask ShaderParameterTypeMask)
Definition D3D12CommandContext.h:220
bool IsOpen() const
Definition D3D12CommandContext.h:263
bool const bIsDefaultContext
Definition D3D12CommandContext.h:260
bool IsPendingCommands() const
Definition D3D12CommandContext.h:264
EPhase
Definition D3D12CommandContext.h:332
const TUniquePtr< FD3D12BarriersFactory::BarriersForContextType > Barriers
Definition D3D12CommandContext.h:354
virtual void ClearState(EClearStateMode ClearStateMode=EClearStateMode::All)
Definition D3D12CommandContext.h:219
FD3D12SyncPoint * GetContextSyncPoint()
Definition D3D12CommandContext.h:266
Definition D3D12CommandContext.h:446
FD3D12ContextCopy(FD3D12Device *Device)
Definition D3D12CommandContext.h:448
Definition D3D12CommandContext.h:458
FD3D12ContextCopy & Context
Definition D3D12CommandContext.h:468
FD3D12SyncPoint * GetSyncPoint() const
Definition D3D12CommandContext.cpp:589
~FD3D12CopyScope()
Definition D3D12CommandContext.cpp:572
Definition D3D12View.h:435
Definition D3D12RHICommon.h:78
Definition D3D12Device.h:176
Definition D3D12ExplicitDescriptorCache.h:109
Definition D3D12Allocation.h:553
Definition D3D12Resources.h:73
ObjectType * GetLinkedObject(uint32 GPUIndex) const
Definition D3D12RHICommon.h:239
Definition D3D12Descriptors.h:203
Definition D3D12Query.h:184
Definition D3D12View.h:423
Definition D3D12Resources.h:641
Definition D3D12Resources.h:181
Definition D3D12RootSignature.h:73
Definition D3D12View.h:351
Definition D3D12StateCachePrivate.h:300
Definition D3D12Submission.h:76
static FD3D12SyncPointRef Create(ED3D12SyncPointType Type, const TCHAR *InDebugName)
Definition D3D12Submission.h:101
Definition D3D12Texture.h:31
Definition D3D12View.h:506
Definition D3D12View.h:388
Definition NameTypes.h:617
Definition RHIResources.h:1581
Definition RHICommandList.h:455
IRHIComputeContext & GetComputeContext()
Definition RHICommandList.h:693
Definition RHIResources.h:1078
Definition RHIResources.h:1018
Definition RHIResources.h:5541
Definition RHIResources.h:4073
Definition RHIResources.h:1058
Definition RHIResources.h:947
Definition RHIResources.h:1115
Definition RHIResources.h:3755
Definition RHIResources.h:984
Definition RHIResources.h:2444
Definition RHIResources.h:4018
Definition RHIResources.h:4167
Definition RHIShaderBindingLayout.h:72
Definition RHIResources.h:3863
Definition RHIResources.h:3919
Definition RHIResources.h:3981
Definition RHIResources.h:2153
Definition RHIResources.h:3294
Definition RHIResources.h:2515
Definition D3D12RHIPrivate.h:719
Definition RHIContext.h:693
virtual void RHICommitShaderBindingTable(FRHIShaderBindingTable *SBT, FRHIBuffer *InlineBindingDataBuffer)
Definition RHIContext.h:876
virtual void RHIDispatchIndirectMeshShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)
Definition RHIContext.h:821
virtual void RHISetBindingsOnShaderBindingTable(FRHIShaderBindingTable *SBT, FRHIRayTracingPipelineState *Pipeline, uint32 NumBindings, const FRayTracingLocalShaderBindings *Bindings, ERayTracingBindingType BindingType)
Definition RHIContext.h:871
virtual void RHIDispatchMeshShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ)
Definition RHIContext.h:816
virtual void RHIClearShaderBindingTable(FRHIShaderBindingTable *SBT)
Definition RHIContext.h:866
FRHIRenderPassInfo RenderPassInfo
Definition RHIContext.h:882
Definition RHIContext.h:257
IRHIComputeContext & GetLowestLevelContext()
Definition RHIContext.h:506
UE::RHI::GPUProfiler::FEvent::FStats StatEvent
Definition RHIContext.h:567
virtual void RHIBuildAccelerationStructures(TConstArrayView< FRayTracingGeometryBuildParams > Params, const FRHIBufferRange &ScratchBufferRange)
Definition RHIContext.h:476
virtual void RHIBindAccelerationStructureMemory(FRHIRayTracingScene *Scene, FRHIBuffer *Buffer, uint32 BufferOffset)
Definition RHIContext.h:486
virtual void RHIExecuteMultiIndirectClusterOperation(const FRayTracingClusterOperationParams &Params)
Definition RHIContext.h:471
virtual void RHIRayTraceDispatchIndirect(FRHIRayTracingPipelineState *RayTracingPipelineState, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)
Definition RHIContext.h:279
virtual void SetExecutingCommandList(FRHICommandListBase *InCmdList)
Definition RHIContext.h:550
virtual void RHIRayTraceDispatch(FRHIRayTracingPipelineState *RayTracingPipelineState, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, uint32 Width, uint32 Height)
Definition RHIContext.h:272
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Last(SizeType IndexFromTheEnd=0) UE_LIFETIMEBOUND
Definition Array.h:1263
Definition RHICommandList.h:5170
Definition RHIPipeline.h:55
Definition StaticArray.h:26
Definition FunctionFwd.h:19
Definition UniquePtr.h:107
constexpr int32 Num
Definition D3D12StateCachePrivate.h:69
Definition Voronoi.cpp:10
void ResolveRenderPassTargets(const FRHIRenderPassInfo &RenderPassInfo, TFunction< void(FResolveTextureInfo)> ResolveFunction)
Definition RHICore.cpp:14
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition D3D12CommandContext.h:49
EType
Definition D3D12CommandContext.h:51
FD3D12DescriptorHeap * DescriptorHeap
Definition D3D12CommandContext.h:71
FD3D12DeferredDeleteObject(void *Ptr, EType Type)
Definition D3D12CommandContext.h:139
uint32 Subresource
Definition D3D12CommandContext.h:102
FD3D12Texture * Texture
Definition D3D12CommandContext.h:100
FD3D12DeferredDeleteObject(FD3D12Resource *RHIObject)
Definition D3D12CommandContext.h:106
uint64 CommittedTextureSize
Definition D3D12CommandContext.h:94
struct FD3D12DeferredDeleteObject::@913::@916 DescriptorBlock
FD3D12DeferredDeleteObject(ID3D12Object *D3DObject)
Definition D3D12CommandContext.h:127
ETextureCreateFlags Flags
Definition D3D12CommandContext.h:93
TUniqueFunction< void()> * Func
Definition D3D12CommandContext.h:74
ID3D12Object * D3DObject
Definition D3D12CommandContext.h:72
struct FD3D12DeferredDeleteObject::@913::@918 TextureStagingBufferData
FD3D12DeferredDeleteObject(FPlatformMemory::FPlatformVirtualMemoryBlock &VirtualBlock, ETextureCreateFlags Flags, uint64 CommittedTextureSize, void *RawMemory)
Definition D3D12CommandContext.h:151
FD3D12DeferredDeleteObject(FD3D12Texture *InTexture, TUniquePtr< FD3D12LockedResource > &&InLockedResource, uint32 InSubresource)
Definition D3D12CommandContext.h:161
FD3D12Heap * Heap
Definition D3D12CommandContext.h:70
FD3D12DeferredDeleteObject(FD3D12Heap *InHeap)
Definition D3D12CommandContext.h:111
struct FD3D12DeferredDeleteObject::@913::@915 BindlessDescriptor
FD3D12DeferredDeleteObject(FD3D12DescriptorHeap *InDescriptorHeap, EType Type)
Definition D3D12CommandContext.h:116
FD3D12OnlineDescriptorBlock * Block
Definition D3D12CommandContext.h:86
FPlatformMemory::FPlatformVirtualMemoryBlock VirtualBlock
Definition D3D12CommandContext.h:92
uint8 LockedResourceStorage[sizeof(TUniquePtr< FD3D12LockedResource >)]
Definition D3D12CommandContext.h:101
enum FD3D12DeferredDeleteObject::EType Type
FD3D12DeferredDeleteObject(FD3D12OnlineDescriptorBlock *Block, FD3D12OnlineDescriptorManager *Manager)
Definition D3D12CommandContext.h:146
void * RawMemory
Definition D3D12CommandContext.h:95
FD3D12Resource * RHIObject
Definition D3D12CommandContext.h:69
FRHIDescriptorHandle Handle
Definition D3D12CommandContext.h:78
struct FD3D12DeferredDeleteObject::@913::@917 VirtualAllocDescriptor
FD3D12DeferredDeleteObject(TUniqueFunction< void()> &&Func)
Definition D3D12CommandContext.h:156
FD3D12Device * Device
Definition D3D12CommandContext.h:79
void * CPUAllocation
Definition D3D12CommandContext.h:82
FD3D12OnlineDescriptorManager * Manager
Definition D3D12CommandContext.h:87
Definition D3D12Descriptors.h:95
Definition D3D12Descriptors.h:188
Definition WindowsD3D12Submission.h:13
Definition D3D12Query.h:129
Definition D3D12View.h:109
Definition RHICommandList.h:212
Definition RHICommandList.h:183
Definition RHIDefinitions.h:1401
constexpr uint32 ToIndex() const
Definition MultiGPU.h:95
SGPU_CONSTEXPR bool Contains(uint32 GPUIndex) const
Definition MultiGPU.h:121
SGPU_CONSTEXPR bool ContainsAll(FRHIGPUMask Rhs) const
Definition MultiGPU.h:126
Definition RHIResources.h:5248
Definition RHIShaderParameters.h:414
Definition RHIContext.h:643
Definition RHICommandList.h:267
Definition RHICommandList.h:248
Definition RHIResources.h:5209
Definition GPUProfiler.h:196