8#include "Containers/HashTable.h"
33 uint32 GetNumPages()
const {
return FMath::Max(NumPages, NumReservedPages) - NumReservedPages; }
146 static const uint32 PAGE_MAPPING_CAPACITY = 0x00ffffff;
158 uint32 PageTableLayerIndex : 8;
166 uint32 PackedProducerHandle;
167 uint32 Local_vAddress : 24;
173 static uint16 GetPageHash(
const FPageEntry& Entry);
180 FPageMapping& Mapping = PageMapping[
Index];
181 PageMapping[Mapping.PrevIndex].NextIndex = Mapping.NextIndex;
182 PageMapping[Mapping.NextIndex].PrevIndex = Mapping.PrevIndex;
183 Mapping.NextIndex = Mapping.PrevIndex =
Index;
188 FPageMapping& Head = PageMapping[
HeadIndex];
189 FPageMapping& Mapping = PageMapping[
Index];
198 Mapping.PrevIndex = Head.PrevIndex;
199 PageMapping[Head.PrevIndex].NextIndex =
Index;
200 Head.PrevIndex =
Index;
205 const uint32 FreeHeadIndex = NumPages;
206 FPageMapping& FreeHead = PageMapping[FreeHeadIndex];
208 if (
Index != FreeHeadIndex)
210 RemoveMappingFromList(
Index);
216 FPageMapping& Mapping = PageMapping[
Index];
217 Mapping.NextIndex = Mapping.PrevIndex =
Index;
223 const uint32 FreeHeadIndex = NumPages;
224 RemoveMappingFromList(
Index);
225 AddMappingToList(FreeHeadIndex,
Index);
246 static const uint32 NumReservedPages;
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
EVTInvalidatePriority
Definition VirtualTextureEnum.h:29
Definition BinaryHeap.h:20
uint32 Num() const
Definition BinaryHeap.h:37
Definition HashTable.h:210
Definition TexturePagePool.h:24
uint8 GetLocalLevelForAddress(uint16 pAddress) const
Definition TexturePagePool.h:73
FCriticalSection & GetLock()
Definition TexturePagePool.h:31
void CollectProducerCounts(TMap< uint32, FUintVector2 > &OutProducerCountMap) const
Definition TexturePagePool.cpp:371
uint32 GetNumVisiblePages(uint32 Frame) const
Definition TexturePagePool.cpp:348
~FTexturePagePool()
Definition TexturePagePool.cpp:20
uint32 FindPageAddress(const FVirtualTextureProducerHandle &ProducerHandle, uint8 GroupIndex, uint32 Local_vAddress, uint8 Local_vLevel) const
Definition TexturePagePool.cpp:222
void RemapPages(FVirtualTextureSystem *System, uint8 SpaceID, FVirtualTexturePhysicalSpace *PhysicalSpace, FVirtualTextureProducerHandle const &ProducerHandleOld, uint32 OldVirtualAddress, FVirtualTextureProducerHandle const &ProducerHandleNew, uint32 NewVirtualAddress, int32 vLevelBias, uint32 Frame)
Definition TexturePagePool.cpp:453
uint32 Alloc(FVirtualTextureSystem *System, uint32 Frame, const FVirtualTextureProducerHandle &ProducerHandle, uint8 GroupIndex, uint32 Local_vAddress, uint8 Local_vLevel, bool bLock)
Definition TexturePagePool.cpp:275
FTexturePagePool()
Definition TexturePagePool.cpp:12
uint32 GetNumAllocatedPages() const
Definition TexturePagePool.h:36
void EvictAllPages(FVirtualTextureSystem *System)
Definition TexturePagePool.cpp:46
uint32 FindNearestPageLevel(const FVirtualTextureProducerHandle &ProducerHandle, uint8 GroupIndex, uint32 Local_vAddress, uint8 Local_vLevel) const
Definition TexturePagePool.cpp:259
void EvictPages(FVirtualTextureSystem *System, const FVirtualTextureProducerHandle &ProducerHandle)
Definition TexturePagePool.cpp:104
void UpdateUsage(uint32 Frame, uint16 pAddress)
Definition TexturePagePool.cpp:339
void GetAllLockedPages(FVirtualTextureSystem *System, TSet< union FVirtualTextureLocalTile > &OutPages)
Definition TexturePagePool.cpp:185
uint32 GetNumPages() const
Definition TexturePagePool.h:33
uint32 FindNearestPageAddress(const FVirtualTextureProducerHandle &ProducerHandle, uint8 GroupIndex, uint32 Local_vAddress, uint8 Local_vLevel, uint8 MaxLevel) const
Definition TexturePagePool.cpp:243
bool AnyFreeAvailable(uint32 Frame, uint32 FreeThreshold) const
Definition TexturePagePool.cpp:203
void MapPage(FVirtualTextureSpace *Space, FVirtualTexturePhysicalSpace *PhysicalSpace, uint8 PageTableLayerIndex, uint8 MaxLevel, uint8 vLogSize, uint32 vAddress, uint8 Local_vLevel, uint16 pAddress)
Definition TexturePagePool.cpp:385
FVirtualTextureLocalTile GetLocalTileFromPhysicalAddress(uint16 pAddress)
Definition TexturePagePool.cpp:198
void UnmapAllPagesForSpace(FVirtualTextureSystem *System, uint8 SpaceID, uint32 vAddress, uint32 Width, uint32 Height, uint32 MaxLevel)
Definition TexturePagePool.cpp:63
uint32 GetNumLockedPages() const
Definition TexturePagePool.h:34
void Unlock(uint32 Frame, uint16 pAddress)
Definition TexturePagePool.cpp:327
uint32 GetNumMappedPages() const
Definition TexturePagePool.h:35
Definition VirtualTexturePhysicalSpace.h:86
Definition VirtualTextureSpace.h:48
Definition VirtualTextureSystem.h:108
SizeType AddDefaulted()
Definition Array.h:2795
Definition UnrealString.h.inl:34
U16 Index
Definition radfft.cpp:71
Definition VirtualTexturing.h:148
Definition VirtualTexturing.h:495
Definition VirtualTexturing.h:33