7#include "Containers/Queue.h"
139 const uint32 NumDescriptors;
142 const uint32 DescriptorSize;
148 const bool bIsGlobal;
151 const bool bIsSuballocation;
254 operator bool ()
const {
return ptr != 0; }
290 uint32 NumDescriptorsPerHeap{};
#define checkNoEntry()
Definition AssertionMacros.h:316
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
ERHIDescriptorTypeMask D3D12DescriptorTypeMaskFromHeapType(ERHIDescriptorHeapType InHeapType)
Definition D3D12Descriptors.h:48
ED3D12DescriptorHeapFlags
Definition D3D12Descriptors.h:64
D3D12_DESCRIPTOR_HEAP_TYPE Translate(ERHIDescriptorHeapType InHeapType)
Definition D3D12Descriptors.h:19
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
void Init()
Definition LockFreeList.h:4
const bool
Definition NetworkReplayStreaming.h:178
ERHIDescriptorTypeMask
Definition RHIDefinitions.h:1367
ERHIDescriptorType
Definition RHIDefinitions.h:1348
ERHIDescriptorHeapType
Definition RHIDefinitions.h:1338
constexpr ERHIDescriptorTypeMask RHIDescriptorTypeMaskFromType(ERHIDescriptorType InType)
Definition RHIDefinitions.h:1391
ERHIPipeline
Definition RHIPipeline.h:13
#define FD3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER
Definition WindowsD3D12RHIDefinitions.h:14
Definition D3D12Descriptors.h:299
void Destroy()
Definition D3D12Descriptors.cpp:525
FD3D12DescriptorHeap * AllocateHeap(const TCHAR *InDebugName, ERHIDescriptorHeapType InHeapType, uint32 InNumDescriptors, ED3D12DescriptorHeapFlags InHeapFlags)
Definition D3D12Descriptors.cpp:564
void AddHeapToPool(TRefCountPtr< ID3D12DescriptorHeap > &&InHeap, ERHIDescriptorHeapType InType, uint32 InNumDescriptors, ED3D12DescriptorHeapFlags InFlags)
Definition D3D12Descriptors.cpp:624
FD3D12DescriptorHeap * AllocateIndependentHeap(const TCHAR *InDebugName, ERHIDescriptorHeapType InHeapType, uint32 InNumDescriptors, ED3D12DescriptorHeapFlags InHeapFlags)
Definition D3D12Descriptors.cpp:550
void ImmediateFreeHeap(FD3D12DescriptorHeap *InHeap)
Definition D3D12Descriptors.cpp:604
~FD3D12DescriptorHeapManager()
Definition D3D12Descriptors.cpp:469
void DeferredFreeHeap(FD3D12DescriptorHeap *InHeap)
Definition D3D12Descriptors.cpp:583
Definition D3D12Descriptors.h:157
~FD3D12DescriptorManager()
bool HandlesAllocationWithFlags(ERHIDescriptorType InDescriptorType, ED3D12DescriptorHeapFlags InHeapFlags) const
Definition D3D12Descriptors.h:171
FD3D12DescriptorHeap * GetHeap()
Definition D3D12Descriptors.h:163
bool IsHeapAChild(const FD3D12DescriptorHeap *InHeap)
Definition D3D12Descriptors.h:177
const FD3D12DescriptorHeap * GetHeap() const
Definition D3D12Descriptors.h:164
FD3D12DescriptorManager()=delete
bool HandlesHeapAllocationsWithFlags(ERHIDescriptorHeapType InHeapType, ED3D12DescriptorHeapFlags InHeapFlags) const
Definition D3D12Descriptors.h:166
Definition D3D12RHICommon.h:78
Definition D3D12Device.h:176
Definition D3D12Descriptors.h:270
FD3D12OfflineDescriptor AllocateHeapSlot()
Definition D3D12Descriptors.cpp:372
FD3D12OfflineDescriptorManager()=delete
~FD3D12OfflineDescriptorManager()
void CleanupResources()
Definition D3D12Descriptors.cpp:453
void FreeHeapSlot(FD3D12OfflineDescriptor &Descriptor)
Definition D3D12Descriptors.cpp:406
ERHIDescriptorHeapType GetHeapType() const
Definition D3D12Descriptors.h:276
Definition D3D12Descriptors.h:203
D3D12_CPU_DESCRIPTOR_HANDLE GetCPUSlotHandle(ERHIPipeline Pipeline, FD3D12OnlineDescriptorBlock *InBlock) const
Definition D3D12Descriptors.h:219
void CleanupResources()
Definition D3D12Descriptors.cpp:268
~FD3D12OnlineDescriptorManager()
ID3D12DescriptorHeap * GetHeap(ERHIPipeline Pipeline)
Definition D3D12Descriptors.h:216
void FreeHeapBlock(FD3D12OnlineDescriptorBlock *InHeapBlock)
Definition D3D12Descriptors.cpp:299
FD3D12OnlineDescriptorBlock * AllocateHeapBlock()
Definition D3D12Descriptors.cpp:277
D3D12_GPU_DESCRIPTOR_HANDLE GetGPUSlotHandle(ERHIPipeline Pipeline, FD3D12OnlineDescriptorBlock *InBlock) const
Definition D3D12Descriptors.h:220
FD3D12DescriptorHeap * GetDescriptorHeap(ERHIPipeline Pipeline)
Definition D3D12Descriptors.h:217
void Recycle(FD3D12OnlineDescriptorBlock *Block)
Definition D3D12Descriptors.cpp:310
Definition D3D12View.h:221
Definition RHIDescriptorAllocator.h:87
bool HandlesAllocation(ERHIDescriptorType InType) const
Definition RHIDescriptorAllocator.h:107
bool HandlesAllocations(ERHIDescriptorTypeMask InTypeMask) const
Definition RHIDescriptorAllocator.h:112
Definition RefCounting.h:283
bool AddTail(const ElementType &InElement)
Definition List.h:573
Definition RHIPipeline.h:55
Definition RefCounting.h:454
UE_FORCEINLINE_HINT ReferencedType * GetReference() const
Definition RefCounting.h:584
Definition D3D12Descriptors.h:82
FD3D12OfflineDescriptor CreateOfflineCopy(FD3D12Device *Device, D3D12_CPU_DESCRIPTOR_HANDLE InDescriptor, ERHIDescriptorHeapType InType)
Definition D3D12Descriptors.cpp:101
void CopyDescriptors(FD3D12Device *Device, FD3D12DescriptorHeap *TargetHeap, FD3D12DescriptorHeap *SourceHeap, uint32 FirstDescriptor, uint32 NumDescriptors)
Definition D3D12Descriptors.cpp:19
void FreeOfflineCopy(FD3D12Device *Device, FD3D12OfflineDescriptor &InDescriptor, ERHIDescriptorHeapType InType)
Definition D3D12Descriptors.cpp:118
FD3D12DescriptorHeap * CreateDescriptorHeap(FD3D12Device *Device, const TCHAR *DebugName, ERHIDescriptorHeapType HeapType, uint32 NumDescriptors, ED3D12DescriptorHeapFlags Flags, bool bGlobal=false)
void CopyDescriptor(FD3D12Device *Device, FD3D12DescriptorHeap *TargetHeap, FRHIDescriptorHandle DstHandle, D3D12_CPU_DESCRIPTOR_HANDLE SrcCpuHandle)
Definition D3D12Descriptors.cpp:8
Definition D3D12Descriptors.h:95
ID3D12DescriptorHeap * GetHeap() const
Definition D3D12Descriptors.h:107
ERHIDescriptorTypeMask GetDescriptorTypeMask() const
Definition D3D12Descriptors.h:111
uint32 GetNumDescriptors() const
Definition D3D12Descriptors.h:117
D3D12_CPU_DESCRIPTOR_HANDLE GetCPUSlotHandle(uint32 Slot) const
Definition D3D12Descriptors.h:124
FD3D12DescriptorHeap()=delete
ERHIDescriptorHeapType GetType() const
Definition D3D12Descriptors.h:108
ED3D12DescriptorHeapFlags GetFlags() const
Definition D3D12Descriptors.h:109
D3D12_GPU_DESCRIPTOR_HANDLE GetGPUSlotHandle(uint32 Slot) const
Definition D3D12Descriptors.h:125
uint32 GetDescriptorSize() const
Definition D3D12Descriptors.h:118
bool IsSuballocation() const
Definition D3D12Descriptors.h:120
uint32 GetOffset() const
Definition D3D12Descriptors.h:116
~FD3D12DescriptorHeap()
Definition D3D12Descriptors.cpp:167
uint32 GetMemorySize() const
Definition D3D12Descriptors.h:122
bool IsGlobal() const
Definition D3D12Descriptors.h:119
bool CanBePooled() const
Definition D3D12Descriptors.h:127
Definition D3D12Descriptors.h:252
uint32 GetVersion() const
Definition D3D12Descriptors.h:260
void IncrementVersion()
Definition D3D12Descriptors.h:259
FD3D12OfflineDescriptor()
Definition D3D12Descriptors.h:255
Definition D3D12Descriptors.h:240
TDoubleLinkedList< FD3D12OfflineHeapFreeRange > FreeList
Definition D3D12Descriptors.h:248
TRefCountPtr< FD3D12DescriptorHeap > Heap
Definition D3D12Descriptors.h:247
FD3D12OfflineHeapEntry(FD3D12DescriptorHeap *InHeap, const D3D12_CPU_DESCRIPTOR_HANDLE &InHeapBase, size_t InSize)
Definition D3D12Descriptors.h:241
Definition D3D12Descriptors.h:234
size_t Start
Definition D3D12Descriptors.h:235
size_t End
Definition D3D12Descriptors.h:236
Definition D3D12Descriptors.h:188
uint32 Size
Definition D3D12Descriptors.h:197
uint32 SizeUsed
Definition D3D12Descriptors.h:198
uint32 BaseSlot
Definition D3D12Descriptors.h:196
FD3D12OnlineDescriptorBlock(uint32 InBaseSlot, uint32 InSize)
Definition D3D12Descriptors.h:190
FD3D12OnlineDescriptorBlock()=delete
Definition RHIDefinitions.h:1401