UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UploadingVirtualTexture.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
9#include "Containers/List.h"
10#include "Templates/UniquePtr.h"
12#include "VirtualTexturing.h"
13
14#include <atomic>
15
18
19class FVirtualTextureCodec : public TIntrusiveLinkedList<FVirtualTextureCodec>
20{
21 friend struct FTranscodeTask;
22public:
23 static void RetireOldCodecs();
24
26 void Init(IMemoryReadStreamRef& HeaderData);
27
28 // Tracks completion of FCreateCodecTask.
29 inline bool IsCreationComplete() const { return !CompletedEvent || CompletedEvent->IsComplete(); }
30
31 inline bool IsIdle() const { return IsCreationComplete() && AllTranscodeTasksComplete(); }
32
33 void LinkGlobalHead();
34 void LinkGlobalTail();
35
39
41
46
47protected:
48
49 // This codec may be used by transcode tasks (see FTranscodeTask),
50 // which must be all complete before the codec is released by RetireOldTasks().
51 inline bool AllTranscodeTasksComplete() const { return TaskRefs.load() == 0; }
52 inline void BeginTranscodeTask() const { TaskRefs.fetch_add(1); }
53 inline void EndTranscodeTask() const { TaskRefs.fetch_sub(1); }
54
55 mutable std::atomic<uint32> TaskRefs {};
56};
57
64
71
72// IVirtualTexture implementation that is uploading from CPU to GPU and gets its data from a FChunkProvider
74{
75public:
78
79 // IVirtualTexture interface
80 virtual uint32 GetLocalMipBias(uint8 vLevel, uint32 vAddress) const override;
81 virtual bool IsPageStreamed(uint8 vLevel, uint32 vAddress) const override { return true; }
82 virtual FVTRequestPageResult RequestPageData(FRHICommandListBase& RHICmdList, const FVirtualTextureProducerHandle& ProducerHandle, uint8 LayerMask, uint8 vLevel, uint64 vAddress, EVTRequestPagePriority Priority) override;
84 ERHIFeatureLevel::Type FeatureLevel,
86 const FVirtualTextureProducerHandle& ProducerHandle, uint8 LayerMask, uint8 vLevel, uint64 vAddress,
87 uint64 RequestHandle,
88 const FVTProduceTargetLayer* TargetLayers) override;
89 virtual void GatherProducePageDataTasks(FVirtualTextureProducerHandle const& ProducerHandle, FGraphEventArray& InOutTasks) const override;
90 virtual void GatherProducePageDataTasks(uint64 RequestHandle, FGraphEventArray& InOutTasks) const override;
91 virtual void DumpToConsole(bool verbose) override;
92 // End IVirtualTexture interface
93
94 inline const FName& GetName() const { return Name; }
95 inline const FVirtualTextureBuiltData* GetVTData() const { return Data; }
96
97 // gets the codec for the given chunk, data is not valid until returned OutCompletionEvents are complete
99
100 // read a portion of a chunk
102
103private:
105
106 FName Name;
110 TBitArray<> InvalidChunks; // marks chunks that failed to load
111 int32 FirstMipOffset;
112
113 struct FVirtualTextureChunkStreamingManager* StreamingManager;
114};
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
void Init()
Definition LockFreeList.h:4
#define VIRTUALTEXTURE_DATA_MAXLAYERS
Definition VirtualTextureBuiltData.h:15
EVTProducePageFlags
Definition VirtualTexturing.h:246
EVTRequestPageStatus
Definition VirtualTexturing.h:216
EVTRequestPagePriority
Definition VirtualTexturing.h:240
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
bool IsComplete() const
Definition TaskGraphInterfaces.h:529
Definition NameTypes.h:617
Definition RHICommandList.h:455
Definition UploadingVirtualTexture.h:74
virtual void GatherProducePageDataTasks(FVirtualTextureProducerHandle const &ProducerHandle, FGraphEventArray &InOutTasks) const override
Definition UploadingVirtualTexture.cpp:148
virtual ~FUploadingVirtualTexture()
Definition UploadingVirtualTexture.cpp:76
virtual IVirtualTextureFinalizer * ProducePageData(FRHICommandListBase &RHICmdList, ERHIFeatureLevel::Type FeatureLevel, EVTProducePageFlags Flags, const FVirtualTextureProducerHandle &ProducerHandle, uint8 LayerMask, uint8 vLevel, uint64 vAddress, uint64 RequestHandle, const FVTProduceTargetLayer *TargetLayers) override
Definition UploadingVirtualTexture.cpp:135
virtual void DumpToConsole(bool verbose) override
Definition UploadingVirtualTexture.cpp:441
FVTDataAndStatus ReadData(FGraphEventArray &OutCompletionEvents, uint32 ChunkIndex, size_t Offset, size_t Size, EVTRequestPagePriority Priority)
Definition UploadingVirtualTexture.cpp:326
FVTCodecAndStatus GetCodecForChunk(FGraphEventArray &OutCompletionEvents, uint32 ChunkIndex, EVTRequestPagePriority Priority)
Definition UploadingVirtualTexture.cpp:279
virtual uint32 GetLocalMipBias(uint8 vLevel, uint32 vAddress) const override
Definition UploadingVirtualTexture.cpp:98
virtual bool IsPageStreamed(uint8 vLevel, uint32 vAddress) const override
Definition UploadingVirtualTexture.h:81
virtual FVTRequestPageResult RequestPageData(FRHICommandListBase &RHICmdList, const FVirtualTextureProducerHandle &ProducerHandle, uint8 LayerMask, uint8 vLevel, uint64 vAddress, EVTRequestPagePriority Priority) override
Definition UploadingVirtualTexture.cpp:127
const FVirtualTextureBuiltData * GetVTData() const
Definition UploadingVirtualTexture.h:95
const FName & GetName() const
Definition UploadingVirtualTexture.h:94
Definition UploadingVirtualTexture.h:20
FGraphEventRef CompletedEvent
Definition UploadingVirtualTexture.h:40
static uint32 NumCodecs
Definition UploadingVirtualTexture.h:38
uint32 ChunkIndex
Definition UploadingVirtualTexture.h:44
static void RetireOldCodecs()
Definition UploadingVirtualTexture.cpp:158
~FVirtualTextureCodec()
Definition UploadingVirtualTexture.cpp:240
std::atomic< uint32 > TaskRefs
Definition UploadingVirtualTexture.h:55
bool IsCreationComplete() const
Definition UploadingVirtualTexture.h:29
bool IsIdle() const
Definition UploadingVirtualTexture.h:31
void * Contexts[VIRTUALTEXTURE_DATA_MAXLAYERS]
Definition UploadingVirtualTexture.h:43
static FVirtualTextureCodec * ListHead
Definition UploadingVirtualTexture.h:36
void BeginTranscodeTask() const
Definition UploadingVirtualTexture.h:52
void EndTranscodeTask() const
Definition UploadingVirtualTexture.h:53
static FVirtualTextureCodec ListTail
Definition UploadingVirtualTexture.h:37
uint32 LastFrameUsed
Definition UploadingVirtualTexture.h:45
void LinkGlobalTail()
Definition UploadingVirtualTexture.cpp:231
void LinkGlobalHead()
Definition UploadingVirtualTexture.cpp:222
class FUploadingVirtualTexture * Owner
Definition UploadingVirtualTexture.h:42
bool AllTranscodeTasksComplete() const
Definition UploadingVirtualTexture.h:51
Definition FileCache.h:32
Definition VirtualTexturing.h:207
Definition VirtualTexturing.h:289
Definition List.h:349
Type
Definition RHIFeatureLevel.h:20
Definition VirtualTextureTranscodeCache.cpp:64
Definition UploadingVirtualTexture.h:59
EVTRequestPageStatus Status
Definition UploadingVirtualTexture.h:62
const FVirtualTextureCodec * Codec
Definition UploadingVirtualTexture.h:61
FVTCodecAndStatus(EVTRequestPageStatus InStatus, const FVirtualTextureCodec *InCodec=nullptr)
Definition UploadingVirtualTexture.h:60
Definition UploadingVirtualTexture.h:66
FVTDataAndStatus(EVTRequestPageStatus InStatus, const IMemoryReadStreamRef &InData=nullptr)
Definition UploadingVirtualTexture.h:67
EVTRequestPageStatus Status
Definition UploadingVirtualTexture.h:69
IMemoryReadStreamRef Data
Definition UploadingVirtualTexture.h:68
Definition VirtualTexturing.h:266
Definition VirtualTexturing.h:254
Definition VirtualTextureBuiltData.h:131
Definition VirtualTextureChunkManager.h:29
Definition VirtualTexturing.h:33