57#if WITH_RHI_BREADCRUMBS
75#if RHI_NEW_GPU_PROFILER
77 uint64 GPUFrequency = 0, GPUTimestamp = 0;
78 uint64 CPUFrequency = 0, CPUTimestamp = 0;
142#if D3D12_RHI_RAYTRACING
165#if RHI_NEW_GPU_PROFILER
183#if (RHI_NEW_GPU_PROFILER == 0)
193#if (RHI_NEW_GPU_PROFILER == 0)
213#if D3D12_RHI_RAYTRACING
242#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
250 return OfflineDescriptorManagers[
static_cast<int>(
InType)];
306#if !D3D12RHI_SUPPORTS_UNCOMPRESSED_UAV
320 void CreateDefaultViews();
321 void UpdateMSAASettings();
322 void UpdateConstantBufferPageProperties();
324#if (RHI_NEW_GPU_PROFILER == 0)
331 ~FResidencyManager();
335#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
356 FRWLock ResourceAllocationInfoMapMutex;
370#if D3D12_RHI_RAYTRACING
377 void DestroyExplicitDescriptorCache();
#define check(expr)
Definition AssertionMacros.h:314
@ InPlace
Definition CoreMiscDefines.h:162
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ED3D12QueueType
Definition D3D12Queue.h:11
#define DX_MAX_MSAA_COUNT
Definition D3D12RHIDefinitions.h:10
D3DX12Residency::ResidencyManager FD3D12ResidencyManager
Definition D3D12Residency.h:188
ERHIDescriptorHeapType
Definition RHIDefinitions.h:1338
Definition D3D12RHICommon.h:54
Definition D3D12Adapter.h:136
Definition D3D12Resources.h:1017
Definition D3D12CommandList.h:36
Definition D3D12CommandContext.h:513
Definition D3D12CommandList.h:63
Definition D3D12CommandContext.h:199
Definition D3D12CommandContext.h:446
Definition D3D12Allocation.h:440
Definition D3D12Descriptors.h:299
Definition D3D12Device.h:176
FD3D12ResidencyManager & GetResidencyManager()
Definition D3D12Device.h:261
FD3D12CommandContext * ObtainContextGraphics()
Definition D3D12Device.h:276
void ReleaseCommandAllocator(FD3D12CommandAllocator *Allocator)
Definition D3D12Device.cpp:713
FD3D12ContextCommon * ObtainContext(ED3D12QueueType QueueType)
Definition D3D12Device.cpp:676
FGPUTimingCalibrationTimestamp GetCalibrationTimestamp(ED3D12QueueType QueueType)
Definition D3D12Device.cpp:814
TRefCountPtr< FD3D12QueryHeap > ObtainQueryHeap(ED3D12QueueType QueueType, D3D12_QUERY_TYPE QueryType)
Definition D3D12Device.cpp:744
FD3D12ExplicitDescriptorHeapCache * GetExplicitDescriptorHeapCache()
Definition D3D12Device.h:210
FD3D12SamplerState * CreateSampler(const FSamplerStateInitializerRHI &Initializer, FD3D12SamplerState *FirstLinkedObject)
Definition D3D12State.cpp:246
void ReleaseQueryHeap(FD3D12QueryHeap *QueryHeap)
Definition D3D12Device.cpp:798
FORCEINLINE FD3D12GPUProfiler & GetGPUProfiler()
Definition D3D12Device.h:188
FD3D12DefaultBufferAllocator & GetDefaultBufferAllocator()
Definition D3D12Device.h:256
FD3D12DescriptorHeapManager & GetDescriptorHeapManager()
Definition D3D12Device.h:241
FD3D12CommandAllocator * ObtainCommandAllocator(ED3D12QueueType QueueType)
Definition D3D12Device.cpp:701
ID3D12Device * GetDevice()
Definition D3D12Device.cpp:188
FD3D12ContextCopy * ObtainContextCopy()
Definition D3D12Device.h:274
uint64 GetTimestampFrequency(ED3D12QueueType QueueType)
Definition D3D12Device.cpp:804
void ReleaseContext(FD3D12ContextCommon *Context)
Definition D3D12Device.cpp:694
void InitExplicitDescriptorHeap()
Definition D3D12Device.cpp:837
void CreateSamplerInternal(const D3D12_SAMPLER_DESC &Desc, D3D12_CPU_DESCRIPTOR_HANDLE Descriptor)
Definition WindowsD3D12Device.cpp:1928
const D3D12_HEAP_PROPERTIES & GetConstantBufferPageProperties()
Definition D3D12Device.h:238
void CleanupResources()
Definition D3D12Device.cpp:449
FD3D12CommandContext * ObtainContextCompute()
Definition D3D12Device.h:275
HRESULT CreateCommandList(UINT nodeMask, D3D12_COMMAND_LIST_TYPE type, ID3D12CommandAllocator *pCommandAllocator, ID3D12PipelineState *pInitialState, REFIID riid, void **ppCommandList)
Definition WindowsD3D12Device.cpp:2284
~FD3D12Device()
Definition D3D12Device.cpp:151
void CreateUnorderedAccessViewAlias(ID3D12Resource *InResource, ID3D12Resource *InCounterResource, const D3D12_RESOURCE_DESC &InAliasResourceDesc, const D3D12_UNORDERED_ACCESS_VIEW_DESC &InAliasViewDesc, D3D12_CPU_DESCRIPTOR_HANDLE InOfflineCpuHandle)
void BlockUntilIdle()
Definition D3D12Device.cpp:567
FD3D12GlobalOnlineSamplerHeap & GetGlobalSamplerHeap()
Definition D3D12Device.h:236
TRefCountPtr< ID3D12CommandQueue > TileMappingQueue
Definition D3D12Device.h:315
FD3D12CommandList * ObtainCommandList(FD3D12CommandAllocator *CommandAllocator, FD3D12QueryAllocator *TimestampAllocator, FD3D12QueryAllocator *PipelineStatsAllocator)
Definition D3D12Device.cpp:720
FD3D12Queue & GetQueue(ED3D12QueueType QueueType)
Definition D3D12Device.h:288
D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfoUncached(const FD3D12ResourceDesc &InDesc)
Definition D3D12Device.cpp:596
FD3D12Fence TileMappingFence
Definition D3D12Device.h:316
void ReleaseCommandList(FD3D12CommandList *CommandList)
Definition D3D12Device.cpp:738
const FD3D12DefaultViews & GetDefaultViews() const
Definition D3D12Device.h:253
FD3D12TextureAllocatorPool & GetTextureAllocator()
Definition D3D12Device.h:258
FD3D12OnlineDescriptorManager & GetOnlineDescriptorManager()
Definition D3D12Device.h:246
FD3D12CommandContext & GetDefaultCommandContext()
Definition D3D12Device.h:272
FD3D12FastAllocator & GetDefaultFastAllocator()
Definition D3D12Device.h:257
void CopyDescriptors(D3D12_CPU_DESCRIPTOR_HANDLE Destination, const D3D12_CPU_DESCRIPTOR_HANDLE *Source, uint32 NumSourceDescriptors, D3D12_DESCRIPTOR_HEAP_TYPE Type)
Definition D3D12Device.h:204
FD3D12OfflineDescriptorManager & GetOfflineDescriptorManager(ERHIDescriptorHeapType InType)
Definition D3D12Device.h:247
void SetupAfterDeviceCreation()
Definition D3D12Device.cpp:224
void RegisterGPUWork(uint32 NumPrimitives=0, uint32 NumVertices=0)
Definition D3D12Device.h:184
void RegisterGPUDispatch(FIntVector GroupCount)
Definition D3D12Device.h:185
TArrayView< FD3D12Queue > GetQueues()
Definition D3D12Device.h:289
static void CopyDescriptors(ID3D12Device *D3DDevice, D3D12_CPU_DESCRIPTOR_HANDLE Destination, const D3D12_CPU_DESCRIPTOR_HANDLE *Source, uint32 NumSourceDescriptors, D3D12_DESCRIPTOR_HEAP_TYPE Type)
Definition WindowsD3D12Device.cpp:1933
D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(const FD3D12ResourceDesc &InDesc)
Definition D3D12Device.cpp:642
Definition D3D12Device.h:39
D3D12_GPU_VIRTUAL_ADDRESS GetGPUQueueData() const
Definition D3D12Device.h:55
bool IsValid() const
Definition D3D12Device.h:65
~FD3D12DiagnosticBuffer()
Definition WindowsD3D12Device.cpp:2265
Definition D3D12RHIPrivate.h:160
Definition D3D12ExplicitDescriptorCache.h:25
Definition D3D12Allocation.h:534
Definition D3D12DescriptorCache.h:221
Definition D3D12Descriptors.h:270
Definition D3D12Descriptors.h:203
Definition D3D12Query.h:184
Definition D3D12Query.h:49
Definition D3D12Device.h:104
FD3D12BatchedPayloadObjects BatchedObjects
Definition D3D12Device.h:127
TRefCountPtr< ID3D12CommandQueue > D3DCommandQueue
Definition D3D12Device.h:113
TD3D12ObjectPool< FD3D12ContextCommon > Contexts
Definition D3D12Device.h:132
FD3D12Payload * PayloadToSubmit
Definition D3D12Device.h:121
~FD3D12Queue()
Definition D3D12Device.cpp:81
TD3D12ObjectPool< FD3D12CommandAllocator > Allocators
Definition D3D12Device.h:133
struct FD3D12Queue::@920 ObjectPool
static constexpr uint32 MaxBatchedPayloads
Definition D3D12Device.h:149
ED3D12QueueType const QueueType
Definition D3D12Device.h:109
uint64 FinalizePayload(bool bRequiresSignal, FPayloadArray &PayloadsToHandDown)
Definition D3D12Submission.cpp:550
TUniquePtr< FD3D12DiagnosticBuffer > DiagnosticBuffer
Definition D3D12Device.h:140
FD3D12CommandAllocator * BarrierAllocator
Definition D3D12Device.h:122
void CleanupResources()
Definition D3D12Device.cpp:442
uint32 NumCommandListsInBatch
Definition D3D12Device.h:125
FD3D12QueryAllocator BarrierTimestamps
Definition D3D12Device.h:123
bool bSupportsTileMapping
Definition D3D12Device.h:147
void ExecuteCommandLists(TArrayView< ID3D12CommandList * > D3DCommandLists)
Definition WindowsD3D12Device.cpp:2303
TMpscQueue< FD3D12Payload * > PendingSubmission
Definition D3D12Device.h:118
TSpscQueue< FD3D12Payload * > PendingInterrupt
Definition D3D12Device.h:119
FD3D12Timing * Timing
Definition D3D12Device.h:138
FD3D12Device *const Device
Definition D3D12Device.h:108
FD3D12Fence Fence
Definition D3D12Device.h:116
TD3D12ObjectPool< FD3D12CommandList > Lists
Definition D3D12Device.h:134
int32 const QueueIndex
Definition D3D12Device.h:110
Definition D3D12State.h:13
Definition D3D12RHICommon.h:128
Definition D3D12Allocation.h:1013
Definition D3D12Device.h:70
uint64 GetCurrentTimestamp() const
Definition D3D12Device.h:88
FD3D12Queue & Queue
Definition D3D12Device.h:72
TArray< uint64 > Timestamps
Definition D3D12Device.h:84
bool IsStartingWork() const
Definition D3D12Device.h:92
uint64 GetPreviousTimestamp() const
Definition D3D12Device.h:89
int32 TimestampIndex
Definition D3D12Device.h:85
uint64 BusyCycles
Definition D3D12Device.h:86
D3D12_QUERY_DATA_PIPELINE_STATISTICS PipelineStats
Definition D3D12Device.h:73
void AdvanceTimestamp()
Definition D3D12Device.h:94
bool HasMoreTimestamps() const
Definition D3D12Device.h:91
Definition UnrealTemplate.h:321
Definition RHIDiagnosticBuffer.h:13
FQueue * Data
Definition RHIDiagnosticBuffer.h:47
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition ContainerAllocationPolicies.h:1276
Definition UnrealString.h.inl:34
Definition MpscQueue.h:18
Definition RefCounting.h:454
UE_FORCEINLINE_HINT bool IsValid() const
Definition RefCounting.h:594
Definition SpscQueue.h:18
Definition StaticArray.h:26
Definition UniquePtr.h:107
Definition GPUProfiler.h:310
Definition D3D12Submission.h:169
Definition D3D12View.h:54
Definition D3D12Submission.h:42
Definition D3D12GPUProfiler.h:108
Definition WindowsD3D12Submission.h:13
Definition D3D12RHIPrivate.h:131
Definition D3D12Resources.h:134
Definition D3D12RHICommon.h:380
Definition GPUProfiler.h:25