UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
D3D12Adapter.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 D3D12Adapter.h: D3D12 Adapter Interfaces
5
6 The D3D12 RHI is laid out in the following structure.
7
8 [Engine]--
9 |
10 |-[RHI]--
11 |
12 |-[Adapter]-- (LDA)
13 | |
14 | |- [Device]
15 | |
16 | |- [Device]
17 |
18 |-[Adapter]--
19 |
20 |- [Device]--
21 |
22 |-[Queue]
23 |
24 |-[Queue]
25
26 Under this scheme an FD3D12Device represents 1 node belonging to 1 physical adapter.
27
28 This structure allows a single RHI to control several different hardware setups. Some example arrangements:
29 - Single-GPU systems (the common case)
30 - Multi-GPU systems i.e. LDA (Crossfire/SLI)
31 - Asymmetric Multi-GPU systems i.e. Discrete/Integrated GPU cooperation
32=============================================================================*/
33
34#pragma once
35
36#include "D3D12ThirdParty.h"
37#include "D3D12CommandContext.h"
38#include "D3D12RootSignature.h"
40
41#include COMPILED_PLATFORM_HEADER(D3D12BarriersFactory.h)
42
45
58
104
120
131
132// Represents a set of linked D3D12 device nodes (LDA i.e 1 or more identical GPUs). In most cases there will be only 1 node, however if the system supports
133// SLI/Crossfire and the app enables it an Adapter will have 2 or more nodes. This class will own anything that can be shared
134// across LDA including: System Pool Memory,.Pipeline State Objects, Root Signatures etc.
136{
137public:
138
140 virtual ~FD3D12Adapter();
141
142 void CleanupResources();
143
144 void InitializeDevices();
147
148 // Getters
152
154#if D3D12_MAX_DEVICE_INTERFACE >= 1
156#endif
157#if D3D12_MAX_DEVICE_INTERFACE >= 2
159#endif
160#if D3D12_MAX_DEVICE_INTERFACE >= 3
162#endif
163#if D3D12_MAX_DEVICE_INTERFACE >= 4
165#endif
166#if D3D12_MAX_DEVICE_INTERFACE >= 5
168#endif
169#if D3D12_MAX_DEVICE_INTERFACE >= 6
171#endif
172#if D3D12_MAX_DEVICE_INTERFACE >= 7
174#endif
175#if D3D12_MAX_DEVICE_INTERFACE >= 8
177#endif
178#if D3D12_MAX_DEVICE_INTERFACE >= 9
180#endif
181#if D3D12_MAX_DEVICE_INTERFACE >= 10
183#endif
184#if D3D12_MAX_DEVICE_INTERFACE >= 11
186#endif
187#if D3D12_MAX_DEVICE_INTERFACE >= 12
189#endif
190
192#if DXGI_MAX_FACTORY_INTERFACE >= 3
194#endif
195#if DXGI_MAX_FACTORY_INTERFACE >= 4
197#endif
198#if DXGI_MAX_FACTORY_INTERFACE >= 5
200#endif
201#if DXGI_MAX_FACTORY_INTERFACE >= 6
203#endif
204#if DXGI_MAX_FACTORY_INTERFACE >= 7
206#endif
207
208 FORCEINLINE const bool IsDebugDevice() const { return bDebugDevice; }
209
213
216
218
221
222 FORCEINLINE const FD3D12AdapterDesc& GetDesc() const { return Desc; }
223
225
227
232#if PLATFORM_SUPPORTS_MESH_SHADERS
234#endif
236
238
239 const FD3D12RootSignature* GetRootSignature(const FBoundShaderStateInput& BoundShaderState);
242
246
249
254
256
258 {
260 return Devices[GPUIndex];
261 }
262
267
269
270 void CreateDXGIFactory(bool bWithDebug);
274
279
281
282 void EndFrame();
283
284 // Resource Creation
306
313 const D3D12_CLEAR_VALUE* ClearValue,
315 const TCHAR* Name,
316 bool bVerifyHResult = true);
317
335
337 FD3D12Heap* BackingHeap,
338 uint64 HeapOffset,
340 const D3D12_CLEAR_VALUE* ClearValue,
342 const TCHAR* Name,
343 bool bVerifyHResult = true)
344 {
346 InDesc,
347 BackingHeap,
348 HeapOffset,
352 ClearValue,
354 Name,
356 }
357
359 FD3D12Heap* BackingHeap,
360 uint64 HeapOffset,
364 const D3D12_CLEAR_VALUE* ClearValue,
366 const TCHAR* Name,
367 bool bVerifyHResult = true);
368
374 const D3D12_CLEAR_VALUE* ClearValue,
376 const TCHAR* Name,
377 bool bVerifyHResult = true);
378
382 uint64 HeapSize,
384 const TCHAR* Name,
386
393 uint64 HeapSize,
395 const TCHAR* Name,
397
403 uint64 HeapSize,
405 const TCHAR* Name,
407
409 const D3D12_RESOURCE_DESC& Desc,
410 uint32 Alignment,
411 const FRHIBufferCreateDesc& CreateDesc,
414 bool bKeepUnlocked = false,
416 );
417
418#if !D3D12RHI_SUPPORTS_UNCOMPRESSED_UAV
420#endif
421
422 template <typename ObjectType, typename CreationCoreFunction>
424 {
426 GPUMask,
427 [this](uint32 GPUIndex) { return GetDevice(GPUIndex); },
429 );
430 }
431
433
435
438
439 void BlockUntilIdle();
440
444
451
459
473
475
476#if PLATFORM_WINDOWS
477 HMODULE GetDxgiDllHandle() const { return DxgiDllHandle; };
478#endif
479
480#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
482#endif
483
484 void CreateTransition(
485 FRHITransition* Transition,
486 const FRHITransitionCreateInfo& CreateInfo);
487 void ReleaseTransition(FRHITransition* Transition);
488
489 [[nodiscard]]
491
492protected:
493
494 virtual void CreateRootDevice(bool bWithDebug);
495
496 void CreateD3DInfoQueue();
497
498 virtual void AllocateBuffer(FD3D12Device* Device,
499 const D3D12_RESOURCE_DESC& Desc,
500 uint32 Size,
504 uint32 Alignment,
506 FD3D12ResourceLocation& ResourceLocation,
508 const TCHAR* InDebugName,
509 const FName& OwnerName);
510
513
514 // Creates default root and execute indirect signatures
515 virtual void CreateCommandSignatures();
516
517 // LDA setups have one ID3D12Device
519#if D3D12_MAX_DEVICE_INTERFACE >= 1
521#endif
522#if D3D12_MAX_DEVICE_INTERFACE >= 2
524#endif
525#if D3D12_MAX_DEVICE_INTERFACE >= 3
527#endif
528#if D3D12_MAX_DEVICE_INTERFACE >= 4
530#endif
531#if D3D12_MAX_DEVICE_INTERFACE >= 5
533#endif
534#if D3D12_MAX_DEVICE_INTERFACE >= 6
536#endif
537#if D3D12_MAX_DEVICE_INTERFACE >= 7
539#endif
540#if D3D12_MAX_DEVICE_INTERFACE >= 8
542#endif
543#if D3D12_MAX_DEVICE_INTERFACE >= 9
545#endif
546#if D3D12_MAX_DEVICE_INTERFACE >= 10
548#endif
549#if D3D12_MAX_DEVICE_INTERFACE >= 11
551#endif
552#if D3D12_MAX_DEVICE_INTERFACE >= 12
554#endif
555
557#if DXGI_MAX_FACTORY_INTERFACE >= 3
559#endif
560#if DXGI_MAX_FACTORY_INTERFACE >= 4
562#endif
563#if DXGI_MAX_FACTORY_INTERFACE >= 5
565#endif
566#if DXGI_MAX_FACTORY_INTERFACE >= 6
568#endif
569#if DXGI_MAX_FACTORY_INTERFACE >= 7
571#endif
572
573#if D3D12_SUPPORTS_DXGI_DEBUG
574 HMODULE DxgiDebugDllHandle{};
576 HANDLE ExceptionHandlerHandle = INVALID_HANDLE_VALUE;
577#endif
578
579#if PLATFORM_WINDOWS
580 HMODULE DxgiDllHandle{};
581#endif
582
587
590
592
594 bool bDebugDevice = false;
595
597
599
601
603
608#if PLATFORM_SUPPORTS_MESH_SHADERS
610#endif
612
614
617
620
622
624
635
641
644
647
649
650 // Each of these devices represents a physical GPU 'Node'
652
654
655#if USE_STATIC_ROOT_SIGNATURE
660
661#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
666#endif
667
670#endif
671
672#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
674#endif
675
676private:
677 // Insight memory trace helper
678 void TraceMemoryAllocation(FD3D12Resource* Resource);
679};
#define FORCEINLINE
Definition AndroidPlatform.h:140
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
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
ED3D12BarrierImplementationType
Definition D3D12BarriersFactory.h:12
ED3D12ResourceStateMode
Definition D3D12Resources.h:52
#define MAX_NUM_GPUS
Definition MultiGPU.h:25
#define GNumExplicitGPUsForRendering
Definition MultiGPU.h:26
EBufferUsageFlags
Definition RHIDefinitions.h:892
ERHIDescriptorHeapType
Definition RHIDefinitions.h:1338
ERHIShaderBundleMode
Definition RHIResources.h:3896
uint32 Size
Definition VulkanMemory.cpp:4034
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition D3D12Adapter.h:136
uint32 DebugFlags
Definition D3D12Adapter.h:653
void CreateD3DInfoQueue()
Definition D3D12Adapter.cpp:807
TStaticArray< FD3D12Device *, MAX_NUM_GPUS > Devices
Definition D3D12Adapter.h:651
void CreateTransition(FRHITransition *Transition, const FRHITransitionCreateInfo &CreateInfo)
Definition D3D12Adapter.cpp:2201
TRefCountPtr< IDXGIAdapter > DxgiAdapter
Definition D3D12Adapter.h:598
FORCEINLINE FD3D12RootSignatureManager * GetRootSignatureManager()
Definition D3D12Adapter.h:250
FORCEINLINE const bool IsDepthBoundsTestSupported() const
Definition D3D12Adapter.h:214
ObjectType * CreateLinkedObject(FRHIGPUMask GPUMask, const CreationCoreFunction &pfnCreationCore)
Definition D3D12Adapter.h:423
TRefCountPtr< ID3D12CommandSignature > DispatchRaysIndirectCommandSignature
Definition D3D12Adapter.h:611
void TrackAllocationData(FD3D12ResourceLocation *InAllocation, uint64 InAllocationSize, bool bCollectCallstack)
Definition D3D12Adapter.cpp:1875
uint64 MemoryStatsUpdateFrame
Definition D3D12Adapter.h:643
void InitializeExplicitDescriptorHeap()
Definition D3D12Adapter.cpp:1551
FORCEINLINE const bool IsDebugDevice() const
Definition D3D12Adapter.h:208
int32 MaxNonSamplerDescriptors
Definition D3D12Adapter.h:588
bool bTrackAllAllocation
Definition D3D12Adapter.h:623
FORCEINLINE TArray< FD3D12Viewport * > & GetViewports()
Definition D3D12Adapter.h:224
void ReleaseTrackedAllocationData(FD3D12ResourceLocation *InAllocation, bool bDefragFree)
Definition D3D12Adapter.cpp:1896
TArray< FTransientUniformBufferAllocator * > TransientUniformBufferAllocators
Definition D3D12Adapter.h:645
void ReleaseTransition(FRHITransition *Transition)
Definition D3D12Adapter.cpp:2209
bool IsTrackingAllAllocations() const
Definition D3D12Adapter.h:445
void ReleaseTransientUniformBufferAllocator(FTransientUniformBufferAllocator *InAllocator)
Definition D3D12Adapter.cpp:1823
void CreateUAVAliasResourceDesc(const FD3D12ResourceLocation &Location)
Definition D3D12Resources.cpp:1139
void FindHeapsContainingGPUAddress(D3D12_GPU_VIRTUAL_ADDRESS InGPUVirtualAddress, TArray< FD3D12Heap * > &OutHeaps)
Definition D3D12Adapter.cpp:1984
TArray< FReleasedAllocationData > ReleasedAllocationData
Definition D3D12Adapter.h:639
void BlockUntilIdle()
Definition D3D12Adapter.cpp:1866
const FD3D12RootSignature * GetRootSignature(const FBoundShaderStateInput &BoundShaderState)
Definition D3D12Util.cpp:1334
FORCEINLINE ID3D12CommandSignature * GetDrawIndirectCommandSignature()
Definition D3D12Adapter.h:228
const FD3D12RootSignature * GetLocalRootSignature(const class FD3D12RayTracingShader *Shader)
static TUniquePtr< const FD3D12BarriersFactory::BarriersForAdapterType > Barriers
Definition D3D12Adapter.h:512
FORCEINLINE const bool AreCopyQueueTimestampQueriesSupported() const
Definition D3D12Adapter.h:217
FORCEINLINE FD3D12UploadHeapAllocator & GetUploadHeapAllocator(uint32 GPUIndex)
Definition D3D12Adapter.h:275
TUniquePtr< FD3D12ManualFence > FrameFence
Definition D3D12Adapter.h:619
TConstArrayView< FD3D12Device * > GetDevices() const
Definition D3D12Adapter.h:263
FORCEINLINE uint64 GetMemoryStatsUpdateFrame() const
Definition D3D12Adapter.h:443
FORCEINLINE FD3D12ManualFence & GetFrameFence()
Definition D3D12Adapter.h:255
FORCEINLINE IDXGIFactory2 * GetDXGIFactory2() const
Definition D3D12Adapter.h:191
FD3D12RootSignatureManager RootSignatureManager
Definition D3D12Adapter.h:600
FORCEINLINE ID3D12CommandSignature * GetDispatchRaysIndirectCommandSignature()
Definition D3D12Adapter.h:235
FORCEINLINE ID3D12CommandSignature * GetDispatchIndirectGraphicsCommandSignature()
Definition D3D12Adapter.h:230
int32 MaxSamplerDescriptors
Definition D3D12Adapter.h:589
bool bHeapNotZeroedSupported
Definition D3D12Adapter.h:586
FORCEINLINE int32 GetMaxDescriptorsForHeapType(ERHIDescriptorHeapType InHeapType)
Definition D3D12Adapter.h:226
FORCEINLINE const D3D12_RESOURCE_HEAP_TIER GetResourceHeapTier() const
Definition D3D12Adapter.h:210
static ED3D12BarrierImplementationType PreferredBarrierImplType
Definition D3D12Adapter.h:511
static TUniquePtr< FD3D12BarriersFactory::BarriersForContextType > CreateBarriersForContext()
Definition D3D12Adapter.cpp:2215
FD3D12UploadHeapAllocator * UploadHeapAllocator[MAX_NUM_GPUS]
Definition D3D12Adapter.h:613
FORCEINLINE FD3D12Device * GetDevice(uint32 GPUIndex) const
Definition D3D12Adapter.h:257
FD3D12PipelineStateCache PipelineStateCache
Definition D3D12Adapter.h:602
const FD3D12RootSignature * GetRootSignature(const class FD3D12WorkGraphShader *Shader)
void InitializeDevices()
Definition D3D12Adapter.cpp:981
HRESULT CreateBuffer(D3D12_HEAP_TYPE HeapType, FRHIGPUMask CreationNode, FRHIGPUMask VisibleNodes, uint64 HeapSize, FD3D12Resource **ppOutResource, const TCHAR *Name, D3D12_RESOURCE_FLAGS Flags=D3D12_RESOURCE_FLAG_NONE)
Definition D3D12Resources.cpp:1061
virtual void CreateRootDevice(bool bWithDebug)
Definition D3D12Adapter.cpp:470
bool bDebugDevice
Definition D3D12Adapter.h:594
virtual void AllocateBuffer(FD3D12Device *Device, const D3D12_RESOURCE_DESC &Desc, uint32 Size, EBufferUsageFlags InUsage, ED3D12ResourceStateMode InResourceStateMode, ED3D12Access InCreatED3D12Access, uint32 Alignment, FD3D12Buffer *Buffer, FD3D12ResourceLocation &ResourceLocation, ID3D12ResourceAllocator *ResourceAllocator, const TCHAR *InDebugName, const FName &OwnerName)
Definition D3D12Buffer.cpp:166
TUniquePtr< IRHITransientMemoryCache > TransientMemoryCache
Definition D3D12Adapter.h:648
void InitDXGIFactoryVariants(IDXGIFactory2 *InDxgiFactory2)
Definition D3D12Adapter.cpp:1738
HRESULT EnumAdapters(IDXGIAdapter **TempAdapter) const
Definition D3D12Adapter.cpp:1757
FD3D12CommandContextRedirector DefaultContextRedirector
Definition D3D12Adapter.h:621
void CleanupResources()
Definition D3D12Adapter.cpp:1597
FD3D12AdapterDesc Desc
Definition D3D12Adapter.h:596
FORCEINLINE D3D_SHADER_MODEL GetHighestShaderModel() const
Definition D3D12Adapter.h:151
FCriticalSection TransientUniformBufferAllocatorsCS
Definition D3D12Adapter.h:646
void TrackHeapAllocation(FD3D12Heap *InHeap)
Definition D3D12Adapter.cpp:1921
FORCEINLINE const uint32 GetAdapterIndex() const
Definition D3D12Adapter.h:149
const FD3D12RootSignature * GetRootSignature(const class FD3D12ComputeShader *Shader)
virtual ~FD3D12Adapter()
Definition D3D12Adapter.cpp:1613
TRefCountPtr< ID3D12CommandSignature > DrawIndexedIndirectCommandSignature
Definition D3D12Adapter.h:605
TRefCountPtr< ID3D12CommandSignature > DispatchIndirectGraphicsCommandSignature
Definition D3D12Adapter.h:606
void InitializeRayTracing()
Definition D3D12Adapter.cpp:1559
FORCEINLINE IDXGIAdapter * GetAdapter()
Definition D3D12Adapter.h:220
HRESULT CreatePlacedResource(const FD3D12ResourceDesc &InDesc, FD3D12Heap *BackingHeap, uint64 HeapOffset, ED3D12Access InInitialD3D12Access, const D3D12_CLEAR_VALUE *ClearValue, FD3D12Resource **ppOutResource, const TCHAR *Name, bool bVerifyHResult=true)
Definition D3D12Adapter.h:336
const FD3DMemoryStats & CollectMemoryStats()
Definition D3D12Adapter.cpp:1829
FORCEINLINE ID3D12CommandSignature * GetDrawIndexedIndirectCommandSignature()
Definition D3D12Adapter.h:229
FORCEINLINE const bool IsHeapNotZeroedSupported() const
Definition D3D12Adapter.h:215
void FindResourcesNearGPUAddress(D3D12_GPU_VIRTUAL_ADDRESS InGPUVirtualAddress, uint64 InRange, TArray< FAllocatedResourceResult > &OutResources)
Definition D3D12Adapter.cpp:1951
void SetResidencyPriority(ID3D12Pageable *Pageable, D3D12_RESIDENCY_PRIORITY HeapPriority, uint32 GPUIndex)
Definition D3D12Adapter.cpp:2180
void ReleaseTrackedHeap(FD3D12Heap *InHeap)
Definition D3D12Adapter.cpp:1930
const FD3D12RootSignature * GetWorkGraphGraphicsRootSignature(const FBoundShaderStateInput &BoundShaderState)
Definition D3D12Util.cpp:1537
HRESULT CreateCommittedResourceRaw(const D3D12_HEAP_PROPERTIES &InHeapProps, D3D12_HEAP_FLAGS InHeapFlags, const FD3D12ResourceDesc &InDesc, ED3D12Access InInitialD3D12Access, const D3D12_CLEAR_VALUE *InClearValue, TRefCountPtr< ID3D12Resource > &OutResource)
Definition D3D12Adapter.h:318
FORCEINLINE const D3D_FEATURE_LEVEL GetFeatureLevel() const
Definition D3D12Adapter.h:150
D3D_ROOT_SIGNATURE_VERSION RootSignatureVersion
Definition D3D12Adapter.h:583
FD3D12TransientHeapCache & GetOrCreateTransientHeapCache()
Definition D3D12Adapter.cpp:971
TArray< FD3D12Viewport * > Viewports
Definition D3D12Adapter.h:616
FD3DMemoryStats MemoryStats
Definition D3D12Adapter.h:642
virtual void CreateCommandSignatures()
Definition D3D12Adapter.cpp:1572
uint32 VRSTileSize
Definition D3D12Adapter.h:591
FORCEINLINE uint32 GetVRSTileSize() const
Definition D3D12Adapter.h:268
HRESULT CreateCommittedResource(const FD3D12ResourceDesc &InDesc, FRHIGPUMask CreationNode, const D3D12_HEAP_PROPERTIES &HeapProps, ED3D12Access InInitialD3D12Access, const D3D12_CLEAR_VALUE *ClearValue, FD3D12Resource **ppOutResource, const TCHAR *Name, bool bVerifyHResult=true)
Definition D3D12Adapter.h:285
TRefCountPtr< ID3D12CommandSignature > DispatchIndirectComputeCommandSignature
Definition D3D12Adapter.h:607
FD3D12FastConstantAllocator & GetTransientUniformBufferAllocator()
Definition D3D12Adapter.cpp:1806
FD3D12Buffer * CreateRHIBuffer(const D3D12_RESOURCE_DESC &Desc, uint32 Alignment, const FRHIBufferCreateDesc &CreateDesc, ED3D12ResourceStateMode InResourceStateMode, ED3D12Access InCreateD3D12Access, bool bKeepUnlocked=false, ID3D12ResourceAllocator *ResourceAllocator=nullptr)
Definition D3D12Buffer.cpp:239
const FD3D12RootSignature * GetGlobalRayTracingRootSignature(const FRHIShaderBindingLayout &ShaderBindingLayout)
TRefCountPtr< ID3D12Device > RootDevice
Definition D3D12Adapter.h:518
FCriticalSection TrackedAllocationDataCS
Definition D3D12Adapter.h:640
FORCEINLINE const DXGI_ADAPTER_DESC & GetD3DAdapterDesc() const
Definition D3D12Adapter.h:219
FORCEINLINE const FD3DMemoryStats & GetMemoryStats() const
Definition D3D12Adapter.h:442
void CreateDXGIFactory(bool bWithDebug)
Definition D3D12Adapter.cpp:1722
FD3D12CommandContextRedirector & GetDefaultContextRedirector()
Definition D3D12Adapter.h:432
FORCEINLINE const D3D_ROOT_SIGNATURE_VERSION GetRootSignatureVersion() const
Definition D3D12Adapter.h:212
TRefCountPtr< ID3D12CommandSignature > DrawIndirectCommandSignature
Definition D3D12Adapter.h:604
void DumpTrackedAllocationData(FOutputDevice &OutputDevice, bool bResidentOnly, bool bWithCallstack)
bool bDepthBoundsTestSupported
Definition D3D12Adapter.h:584
FORCEINLINE const D3D12_RESOURCE_BINDING_TIER GetResourceBindingTier() const
Definition D3D12Adapter.h:211
void FindReleasedAllocationData(D3D12_GPU_VIRTUAL_ADDRESS InGPUVirtualAddress, TArray< FReleasedAllocationData > &OutAllocationData)
Definition D3D12Adapter.cpp:2001
TMap< FD3D12ResourceLocation *, FTrackedAllocationData > TrackedAllocationData
Definition D3D12Adapter.h:637
HRESULT CreateReservedResource(const FD3D12ResourceDesc &Desc, FRHIGPUMask CreationNode, ED3D12Access InInitialD3D12Access, ED3D12ResourceStateMode InResourceStateMode, ED3D12Access InDefaultD3D12Access, const D3D12_CLEAR_VALUE *ClearValue, FD3D12Resource **ppOutResource, const TCHAR *Name, bool bVerifyHResult=true)
Definition D3D12Resources.cpp:873
FORCEINLINE uint32 GetDebugFlags() const
Definition D3D12Adapter.h:280
FORCEINLINE FD3D12PipelineStateCache & GetPSOCache()
Definition D3D12Adapter.h:237
TArray< FD3D12Heap * > TrackedHeaps
Definition D3D12Adapter.h:638
TRefCountPtr< IDXGIFactory2 > DxgiFactory2
Definition D3D12Adapter.h:556
bool bCopyQueueTimestampQueriesSupported
Definition D3D12Adapter.h:585
FORCEINLINE ID3D12Device * GetD3DDevice() const
Definition D3D12Adapter.h:153
const FD3D12RootSignature * GetGlobalWorkGraphRootSignature(const FRHIShaderBindingLayout &ShaderBindingLayout)
Definition D3D12Util.cpp:1515
FORCEINLINE ID3D12CommandSignature * GetDispatchIndirectComputeCommandSignature()
Definition D3D12Adapter.h:231
void EndFrame()
Definition D3D12Adapter.cpp:1766
FORCEINLINE const FD3D12AdapterDesc & GetDesc() const
Definition D3D12Adapter.h:222
Definition D3D12Resources.h:1017
Definition D3D12CommandContext.h:876
Definition D3D12Shader.h:160
FD3D12Device * Parent
Definition D3D12RHICommon.h:80
Definition D3D12Device.h:176
Definition D3D12Allocation.h:553
Definition D3D12Resources.h:73
Definition D3D12RHICommon.h:164
Definition D3D12DirectCommandListManager.h:18
Definition WindowsD3D12PipelineState.h:153
Definition D3D12Resources.h:641
Definition D3D12Resources.h:181
Definition D3D12RootSignature.h:491
Definition D3D12RootSignature.h:73
Definition D3D12TransientResourceAllocator.h:26
Definition D3D12Allocation.h:375
Definition D3D12Shader.h:168
Definition NameTypes.h:617
Definition UnrealTemplate.h:321
Definition OutputDevice.h:133
Definition RHIShaderBindingLayout.h:72
Definition D3D12Adapter.h:122
FTransientUniformBufferAllocator(FD3D12Adapter *InAdapter, FD3D12Device *Parent, FRHIGPUMask VisibiltyMask)
Definition D3D12Adapter.h:124
void Cleanup()
Definition D3D12Adapter.cpp:377
~FTransientUniformBufferAllocator()
Definition D3D12Adapter.cpp:369
Definition RHICoreTransientResourceAllocator.h:301
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
Definition StaticArray.h:26
UE_REWRITE constexpr InElementType * GetData()
Definition StaticArray.h:89
Definition ThreadSingleton.h:44
Definition UniquePtr.h:107
Type
Definition RHIFeatureLevel.h:20
@ Num
Definition RHIFeatureLevel.h:54
Definition RHIResources.h:4362
Definition D3D12Adapter.h:60
bool bUMA
Definition D3D12Adapter.h:92
int32 AdapterIndex
Definition D3D12Adapter.h:74
bool bSupportsAtomic64
Definition D3D12Adapter.h:98
D3D12_RESOURCE_BINDING_TIER ResourceBindingTier
Definition D3D12Adapter.h:82
ERHIFeatureLevel::Type MaxRHIFeatureLevel
Definition D3D12Adapter.h:86
bool IsValid() const
Definition D3D12Adapter.cpp:399
bool bSupportsWaveOps
Definition D3D12Adapter.h:95
D3D12_RESOURCE_HEAP_TIER ResourceHeapTier
Definition D3D12Adapter.h:84
DXGI_ADAPTER_DESC Desc
Definition D3D12Adapter.h:71
D3D_SHADER_MODEL MaxSupportedShaderModel
Definition D3D12Adapter.h:80
uint32 NumDeviceNodes
Definition D3D12Adapter.h:89
D3D_FEATURE_LEVEL MaxSupportedFeatureLevel
Definition D3D12Adapter.h:77
Definition D3D12Adapter.h:453
uint64 Distance
Definition D3D12Adapter.h:455
FD3D12ResourceLocation * Allocation
Definition D3D12Adapter.h:454
Definition D3D12Adapter.h:461
D3D12_RESOURCE_DESC ResourceDesc
Definition D3D12Adapter.h:465
FName ResourceName
Definition D3D12Adapter.h:464
uint64 AllocationSize
Definition D3D12Adapter.h:463
bool bDefragFree
Definition D3D12Adapter.h:467
uint64 ReleasedFrameID
Definition D3D12Adapter.h:466
bool bTransient
Definition D3D12Adapter.h:469
bool bHeap
Definition D3D12Adapter.h:470
bool bBackBuffer
Definition D3D12Adapter.h:468
D3D12_GPU_VIRTUAL_ADDRESS GPUVirtualAddress
Definition D3D12Adapter.h:462
Definition D3D12Adapter.h:627
uint64 Stack[MaxStackDepth]
Definition D3D12Adapter.h:633
static const int32 MaxStackDepth
Definition D3D12Adapter.h:628
uint64 AllocationSize
Definition D3D12Adapter.h:631
uint32 StackDepth
Definition D3D12Adapter.h:632
FD3D12ResourceLocation * ResourceAllocation
Definition D3D12Adapter.h:630
Definition D3D12Adapter.h:47
uint32 NumDeviceNodes
Definition D3D12Adapter.h:52
ERHIFeatureLevel::Type MaxRHIFeatureLevel
Definition D3D12Adapter.h:56
bool bSupportsAtomic64
Definition D3D12Adapter.h:54
D3D_SHADER_MODEL MaxShaderModel
Definition D3D12Adapter.h:49
bool bSupportsWaveOps
Definition D3D12Adapter.h:53
D3D12_RESOURCE_HEAP_TIER ResourceHeapTier
Definition D3D12Adapter.h:51
bool bUMA
Definition D3D12Adapter.h:55
D3D_FEATURE_LEVEL MaxFeatureLevel
Definition D3D12Adapter.h:48
D3D12_RESOURCE_BINDING_TIER ResourceBindingTier
Definition D3D12Adapter.h:50
Definition D3D12Adapter.h:106
uint32 UpdateFrameNumber
Definition D3D12Adapter.h:110
uint64 DemotedLocalMemory
Definition D3D12Adapter.h:113
DXGI_QUERY_VIDEO_MEMORY_INFO NonLocalMemoryInfo
Definition D3D12Adapter.h:108
uint64 AvailableLocalMemory
Definition D3D12Adapter.h:112
DXGI_QUERY_VIDEO_MEMORY_INFO LocalMemoryInfo
Definition D3D12Adapter.h:107
bool IsOverBudget() const
Definition D3D12Adapter.h:115
Definition D3D12Resources.h:134
Definition RHIResources.h:1417
Definition MultiGPU.h:33
Definition RHITransition.h:382
Definition RHITransition.h:475
Definition D3D12Resources.h:827