UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TextureStreamIn.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4FTextureStreamIn.h: Implement a generic texture stream in strategy.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "RenderAssetUpdate.h"
11#include "TextureMipAllocator.h"
13
14class UTexture;
15
25class FTextureStreamIn : public TRenderAssetUpdate<FTextureUpdateContext>
26{
27public:
28
31
32 // Route FTextureMipDataProvider::Init()
34
35 // Route FTextureMipAllocator::AllocateMips()
36 void AllocateNewMips(const FContext& Context);
37
38 // Route FTextureMipDataProvider::GetMips()
39 void GetMipData(const FContext& Context);
40
41 // Route FTextureMipDataProvider::PollMips()
42 void PollMipData(const FContext& Context);
43
44 // Route FTextureMipAllocator::UploadMips()
45 void UploadNewMips(const FContext& Context);
46
47 // Route FTextureMipDataProvider::PostprocessGPUMipData
49
50 // Update the texture resource with the new RHI texture. Update is completed after this step and can not be canceled afterward.
51 void FinalizeNewMips(const FContext& Context);
52
53 // Route FTextureMipDataProvider::CleanUp()
55
56 // Execute the cancellation for both MipAllocator and MipDataProviders.
57 void Cancel(const FContext& Context);
58
59 // Start an async task to cancel pending IO requests.
60 void Abort() final override;
61
62protected:
63
64 // The first mip to be processed for DoGetMipData(). Starts at PendingFirstLODIdx and goes up to CurrentFirstLODIdx.
66
69
72
73 // The actual implementation of the update steps which redirect to FTextureMipAllocator and FTextureMipDataProvider.
76 void DoGetMipData(const FContext& Context);
77 bool DoPollMipData(const FContext& Context);
78 bool DoUploadNewMips(const FContext& Context);
82
85
87
88private:
89
90 // An async task that will call FTextureMipDataProvider::AbortPollMips() on each mip data provider upon cancellation.
92 {
93 public:
95 : PendingUpdate(InPendingUpdate)
96 , bIsPollingMipData(bInIsPollingMipData)
97 , bIsPostprocessingGPUMipData(bInIsPostprocessingGPUMipData)
98 {
99 }
100 void DoWork();
101 FORCEINLINE TStatId GetStatId() const
102 {
104 }
105 protected:
106 TRefCountPtr<FTextureStreamIn> PendingUpdate;
107 bool bIsPollingMipData;
108 bool bIsPostprocessingGPUMipData;
109 };
110
111 bool bIsPollingMipData = false; // Used to prevent indirecting any pointer in the abort task.
112 bool bIsPostprocessingGPUMipData = false; // Used to prevent indirecting any pointer in the abort task.
113 typedef FAutoDeleteAsyncTask<FAbortPollMipsTask> FAsyncAbortPollMipsTask;
114 friend class FAbortPollMipsTask;
115
116 // Whether FTextureMipAllocator::ETickThread is the same thread as EThreadType (as int32).
118
119 // Whether FTextureMipDataProvider::ETickThread is the same thread as EThreadType (as int32).
121};
122
#define FORCEINLINE
Definition AndroidPlatform.h:140
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define RETURN_QUICK_DECLARE_CYCLE_STAT(StatId, GroupId)
Definition Stats.h:655
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition AsyncWork.h:63
Definition AsyncWork.h:663
EThreadType
Definition RenderAssetUpdate.h:43
Definition TextureMipAllocator.h:19
ETickState
Definition TextureMipAllocator.h:23
ETickThread
Definition TextureMipAllocator.h:30
Definition TextureMipDataProvider.h:92
ETickThread
Definition TextureMipDataProvider.h:106
ETickState
Definition TextureMipDataProvider.h:96
Definition TextureStreamIn.h:26
void GetMipData(const FContext &Context)
Definition TextureStreamIn.cpp:332
friend class FAbortPollMipsTask
Definition TextureStreamIn.h:114
void AllocateNewMips(const FContext &Context)
Definition TextureStreamIn.cpp:292
EThreadType GetMipDataProviderThread(FTextureMipDataProvider::ETickState TickState) const
Definition TextureStreamIn.cpp:88
TUniquePtr< FTextureMipAllocator > MipAllocator
Definition TextureStreamIn.h:67
int32 StartingMipIndex
Definition TextureStreamIn.h:65
EThreadType GetMipAllocatorThread(FTextureMipAllocator::ETickState TickState) const
Definition TextureStreamIn.cpp:112
FTextureMipInfoArray MipInfos
Definition TextureStreamIn.h:71
FTextureMipDataProviderArray MipDataProviders
Definition TextureStreamIn.h:68
void CleanUpMipDataProviders(const FContext &Context)
Definition TextureStreamIn.cpp:526
FTextureUpdateSyncOptions SyncOptions
Definition TextureStreamIn.h:70
void InitMipDataProviders(const FContext &Context)
Definition TextureStreamIn.cpp:264
bool DoFinalizeNewMips(const FContext &Context)
Definition TextureStreamIn.cpp:241
bool DoAllocateNewMips(const FContext &Context)
Definition TextureStreamIn.cpp:179
void DoGetMipData(const FContext &Context)
Definition TextureStreamIn.cpp:185
void UploadNewMips(const FContext &Context)
Definition TextureStreamIn.cpp:416
void PostprocessGPUMipData(const FContext &Context)
Definition TextureStreamIn.cpp:454
bool DoPollMipData(const FContext &Context)
Definition TextureStreamIn.cpp:198
bool DoUploadNewMips(const FContext &Context)
Definition TextureStreamIn.cpp:215
bool DoPostprocessGPUMipData(const FContext &Context)
Definition TextureStreamIn.cpp:221
void DoCleanUpMipDataProviders(const FContext &Context)
Definition TextureStreamIn.cpp:247
void PollMipData(const FContext &Context)
Definition TextureStreamIn.cpp:374
void Abort() final override
Definition TextureStreamIn.cpp:603
~FTextureStreamIn()
Definition TextureStreamIn.cpp:84
void DoInitMipDataProviders(const FContext &Context)
Definition TextureStreamIn.cpp:166
void FinalizeNewMips(const FContext &Context)
Definition TextureStreamIn.cpp:483
EThreadType GetCancelThread() const
Definition TextureStreamIn.cpp:130
Definition RefCounting.h:454
Definition RenderAssetUpdate.h:243
EThreadType TaskThread
Definition RenderAssetUpdate.h:272
Definition UniquePtr.h:107
Definition Texture.h:1219
Definition TextureMipDataProvider.h:65
Definition TextureMipDataProvider.h:48
Definition LightweightStats.h:416