55 void ReleaseHeap(FEntry&& Entry);
62 uint32 NumAllocatedEntries = 0;
119 check(MaxWorkerCount > 0u);
134#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
136 bool bBindless =
false;
139 template<
typename KeyType>
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_NONCOPYABLE(TypeName)
Definition CoreMiscDefines.h:457
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
void Init()
Definition LockFreeList.h:4
ERHIBindlessConfiguration
Definition RHIDefinitions.h:1432
Definition D3D12CommandContext.h:513
Definition D3D12DescriptorCache.h:312
Definition D3D12RHICommon.h:78
Definition D3D12Device.h:176
Definition D3D12RHIPrivate.h:160
Definition D3D12ExplicitDescriptorCache.h:109
FD3D12ExplicitDescriptorHeap ViewHeap
Definition D3D12ExplicitDescriptorCache.h:131
TArray< FWorkerThreadData > WorkerData
Definition D3D12ExplicitDescriptorCache.h:197
void ReserveViewDescriptors(uint32 Count, uint32 WorkerIndex)
Definition D3D12ExplicitDescriptorCache.h:180
int32 Allocate(const D3D12_CPU_DESCRIPTOR_HANDLE *Descriptors, uint32 NumDescriptors, D3D12_DESCRIPTOR_HEAP_TYPE Type, uint32 WorkerIndex)
Definition D3D12ExplicitDescriptorCache.cpp:396
FD3D12ExplicitDescriptorHeap SamplerHeap
Definition D3D12ExplicitDescriptorCache.h:132
int32 AllocateDeduplicated(const uint32 *DescriptorVersions, const D3D12_CPU_DESCRIPTOR_HANDLE *Descriptors, uint32 NumDescriptors, D3D12_DESCRIPTOR_HEAP_TYPE Type, uint32 WorkerIndex)
Definition D3D12ExplicitDescriptorCache.cpp:340
Definition D3D12ExplicitDescriptorCache.h:25
void FlushFreeList()
Definition D3D12ExplicitDescriptorCache.cpp:187
void DeferredReleaseHeap(FEntry &&Entry)
Definition D3D12ExplicitDescriptorCache.cpp:65
~FD3D12ExplicitDescriptorHeapCache()
Definition D3D12ExplicitDescriptorCache.cpp:42
FD3D12ExplicitDescriptorHeapCache(FD3D12Device *Device)
Definition D3D12ExplicitDescriptorCache.h:41
FEntry AllocateHeap(D3D12_DESCRIPTOR_HEAP_TYPE Type, uint32 NumDescriptors)
Definition D3D12ExplicitDescriptorCache.cpp:88
U16 Index
Definition radfft.cpp:71
Definition D3D12StateCachePrivate.h:172
Definition D3D12View.h:54
Definition D3D12ExplicitDescriptorCache.h:155
int32 Cursor
Definition D3D12ExplicitDescriptorCache.h:165
int32 Allocate(int32 Count)
Definition D3D12ExplicitDescriptorCache.h:168
int32 Begin
Definition D3D12ExplicitDescriptorCache.h:164
FDescriptorSlotRange()=default
int32 End
Definition D3D12ExplicitDescriptorCache.h:166
FDescriptorSlotRange(int32 BaseIndex, int32 Count)
Definition D3D12ExplicitDescriptorCache.h:157
Definition D3D12ExplicitDescriptorCache.h:190
TDescriptorHashMap ViewDescriptorTableCache
Definition D3D12ExplicitDescriptorCache.h:191
TDescriptorHashMap SamplerDescriptorTableCache
Definition D3D12ExplicitDescriptorCache.h:192
FDescriptorSlotRange ReservedViewDescriptors
Definition D3D12ExplicitDescriptorCache.h:194
Definition D3D12ExplicitDescriptorCache.h:141
static FORCEINLINE uint32 GetKeyHash(KeyType Key)
Definition D3D12ExplicitDescriptorCache.h:146
static FORCEINLINE bool Matches(KeyType A, KeyType B)
Definition D3D12ExplicitDescriptorCache.h:142
Definition D3D12ExplicitDescriptorCache.h:31
Definition D3D12ExplicitDescriptorCache.h:66
uint32 DescriptorSize
Definition D3D12ExplicitDescriptorCache.h:97
D3D12_CPU_DESCRIPTOR_HANDLE CPUBase
Definition D3D12ExplicitDescriptorCache.h:98
TArray< D3D12_CPU_DESCRIPTOR_HANDLE > Descriptors
Definition D3D12ExplicitDescriptorCache.h:103
D3D12_DESCRIPTOR_HEAP_TYPE Type
Definition D3D12ExplicitDescriptorCache.h:88
ID3D12DescriptorHeap * D3D12Heap
Definition D3D12ExplicitDescriptorCache.h:89
D3D12_CPU_DESCRIPTOR_HANDLE GetDescriptorCPU(uint32 Index) const
Definition D3D12ExplicitDescriptorCache.cpp:300
~FD3D12ExplicitDescriptorHeap()
Definition D3D12ExplicitDescriptorCache.cpp:200
bool CompareDescriptors(int32 BaseIndex, const D3D12_CPU_DESCRIPTOR_HANDLE *InDescriptors, uint32 InNumDescriptors)
Definition D3D12ExplicitDescriptorCache.cpp:288
int32 NumWrittenSamplerDescriptors
Definition D3D12ExplicitDescriptorCache.h:95
int32 Allocate(uint32 InNumDescriptors)
Definition D3D12ExplicitDescriptorCache.cpp:246
FD3D12ExplicitDescriptorHeapCache::FEntry HeapCacheEntry
Definition D3D12ExplicitDescriptorCache.h:101
D3D12_GPU_DESCRIPTOR_HANDLE GPUBase
Definition D3D12ExplicitDescriptorCache.h:99
ID3D12Device * D3DDevice
Definition D3D12ExplicitDescriptorCache.h:86
uint32 MaxNumDescriptors
Definition D3D12ExplicitDescriptorCache.h:90
int32 NumAllocatedDescriptors
Definition D3D12ExplicitDescriptorCache.h:92
void CopyDescriptors(int32 BaseIndex, const D3D12_CPU_DESCRIPTOR_HANDLE *InDescriptors, uint32 InNumDescriptors)
Definition D3D12ExplicitDescriptorCache.cpp:275
bool bExhaustiveSamplerDeduplication
Definition D3D12ExplicitDescriptorCache.h:105
D3D12_GPU_DESCRIPTOR_HANDLE GetDescriptorGPU(uint32 Index) const
Definition D3D12ExplicitDescriptorCache.cpp:307
Definition D3D12StateCachePrivate.h:101
Definition D3D12StateCachePrivate.h:257
Definition D3D12StateCachePrivate.h:197
Definition D3D12StateCachePrivate.h:232
Definition D3D12StateCachePrivate.h:78