UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VirtualTextureUploadCache.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "PixelFormat.h"
7#include "RendererInterface.h"
8#include "RenderResource.h"
9
10class FRDGTexture;
11class FRHITexture;
12class FRHIBuffer;
14
17{
19 : Index(InIndex)
20 {}
21
22 inline bool IsValid() const { return Index != ~0u; }
23
25};
26
32{
33 void* Memory = nullptr;
36};
37
49
60
65{
66public:
70 void Free(FRHICommandListBase& RHICmdList, uint32 InHandle);
71
76
78 uint64 TotalAllocatedBytes() const { return NumAllocatedBytes; }
79
80private:
82 UE::FMutex Mutex;
83
85 union FHandle
86 {
87 uint32 PackedValue = 0u;
88 struct
89 {
90 uint32 FormatIndex : 5;
91 uint32 StagingBufferIndex : 14;
92 uint32 TileIndex : 13;
93 };
94
95 static const uint32 MaxFormats = 1 << 5;
96 static const uint32 MaxStagingBuffers = 1 << 14;
97 static const uint32 MaxTiles = 1 << 13;
98 };
99
105 struct FStagingBuffer
106 {
107 ~FStagingBuffer();
108
110 void Release(FRHICommandListBase* RHICmdList);
111
113 TRefCountPtr<FRHIBuffer> RHIBuffer;
114
116 void* Memory = nullptr;
117 uint32 TileSize = 0u;
118 uint32 TileSizeAligned = 0u;
119 uint32 NumTiles = 0u;
121 TArray<uint16> TileFreeList;
122 };
123
125 struct FSharedFormatBuffers
126 {
127 TArray<FStagingBuffer> StagingBuffers;
128 };
129
134 struct FSharedFormatDesc
135 {
136 uint32 BlockBytes = 0u;
137 uint32 Stride = 0u;
138 uint32 MemorySize = 0u;
139 };
140
142 TArray<FSharedFormatDesc> FormatDescs;
144 TArray<FSharedFormatBuffers> FormatBuffers;
146 uint64 NumAllocatedBytes = 0;
147};
148
154{
155public:
157
158 //~ Begin FRenderResource Interface.
159 virtual void ReleaseRHI() override;
160 //~ End FRenderResource Interface.
161
171
172 //~ Begin IVirtualTextureFinalizer Interface.
173 virtual void Finalize(FRDGBuilder& GraphBuilder) override;
174 //~ End IVirtualTextureFinalizer Interface.
175
177 void UpdateFreeList(FRHICommandListBase& RHICmdList, bool bForceFreeAll = false);
178
180 uint32 IsInMemoryBudget() const;
181
182private:
184 int32 GetOrCreatePoolIndex(EPixelFormat InFormat, uint32 InTileSize);
185
187 void FinalizeWithLegacyCopyTexture(FRDGBuilder& GraphBuilder);
189 void FinalizeWithUpdateTexture(FRDGBuilder& GraphBuilder);
190
192 struct FTileEntry
193 {
194 uint32 PoolIndex = 0;
195 uint32 TileHandle = 0;
196 IPooledRenderTarget* PooledRenderTarget = nullptr;
197 FRDGTexture* Texture = nullptr;
198 int32 SubmitDestX = 0;
199 int32 SubmitDestY = 0;
200 int32 SubmitSkipBorderSize = 0;
201 uint32 FrameSubmitted = 0;
202 };
203
205 struct FStagingTexture
206 {
207 TRefCountPtr<FRHITexture> RHITexture;
208 uint32 WidthInTiles = 0u;
209 uint32 BatchCapacity = 0u;
210 bool bIsCPUWritable;
211 };
212
214 struct FPoolEntry
215 {
217 uint32 TileSize = 0u;
218
219 static const uint32 NUM_STAGING_TEXTURES = 3u;
220 FStagingTexture StagingTexture[NUM_STAGING_TEXTURES];
221 uint32 BatchTextureIndex = 0u;
222
223 TArray<FTileEntry> PendingSubmit;
224 };
225
226 EVTUploadType UploadType;
227 TArray<FPoolEntry> Pools;
228 FVTUploadTileAllocator TileAllocator;
229 TSparseArray<FTileEntry> PendingUpload;
230 TSparseArray<FTileEntry> PendingRelease;
231};
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
EPixelFormat
Definition PixelFormat.h:16
@ PF_Unknown
Definition PixelFormat.h:17
EVTUploadType
Definition VirtualTextureUploadCache.h:52
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:571
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHIResources.h:2153
Definition RenderResource.h:37
Definition VirtualTextureUploadCache.h:65
FVTUploadTileBufferExt GetBufferFromHandleExt(uint32 InHandle) const
Definition VirtualTextureUploadCache.cpp:153
uint64 TotalAllocatedBytes() const
Definition VirtualTextureUploadCache.h:78
FVTUploadTileBuffer GetBufferFromHandle(uint32 InHandle) const
Definition VirtualTextureUploadCache.cpp:138
uint32 Allocate(FRHICommandListBase &RHICmdList, EVTUploadType InUploadType, EPixelFormat InFormat, uint32 InTileSize)
Definition VirtualTextureUploadCache.cpp:42
Definition VirtualTextureUploadCache.h:154
void CancelTile(FRHICommandListBase &RHICmdList, const FVTUploadTileHandle &InHandle)
Definition VirtualTextureUploadCache.cpp:584
void SubmitTile(FRHICommandListBase &RHICmdList, const FVTUploadTileHandle &InHandle, const FVTProduceTargetLayer &Target, int InSkipBorderSize)
Definition VirtualTextureUploadCache.cpp:563
FVTUploadTileHandle PrepareTileForUpload(FRHICommandListBase &RHICmdList, FVTUploadTileBuffer &OutBuffer, EPixelFormat InFormat, uint32 InTileSize)
Definition VirtualTextureUploadCache.cpp:545
void UpdateFreeList(FRHICommandListBase &RHICmdList, bool bForceFreeAll=false)
Definition VirtualTextureUploadCache.cpp:592
uint32 IsInMemoryBudget() const
Definition VirtualTextureUploadCache.cpp:610
FVirtualTextureUploadCache()
Definition VirtualTextureUploadCache.cpp:247
virtual void ReleaseRHI() override
Definition VirtualTextureUploadCache.cpp:530
Definition VirtualTexturing.h:207
Definition Array.h:670
Definition RefCounting.h:454
Definition SparseArray.h:524
Definition Mutex.h:18
constexpr int32 TileSize
Definition MegaLights.cpp:463
U16 Index
Definition radfft.cpp:71
Definition VirtualTexturing.h:266
Definition VirtualTextureUploadCache.h:43
uint32 BufferOffset
Definition VirtualTextureUploadCache.h:46
void * BufferMemory
Definition VirtualTextureUploadCache.h:45
FRHIBuffer * RHIBuffer
Definition VirtualTextureUploadCache.h:44
uint32 Stride
Definition VirtualTextureUploadCache.h:47
Definition VirtualTextureUploadCache.h:32
void * Memory
Definition VirtualTextureUploadCache.h:33
uint32 MemorySize
Definition VirtualTextureUploadCache.h:34
uint32 Stride
Definition VirtualTextureUploadCache.h:35
Definition VirtualTextureUploadCache.h:17
uint32 Index
Definition VirtualTextureUploadCache.h:24
bool IsValid() const
Definition VirtualTextureUploadCache.h:22
FVTUploadTileHandle(uint32 InIndex=~0u)
Definition VirtualTextureUploadCache.h:18
Definition RendererInterface.h:494