16template<
typename ResourceType,
class ResourcePoolPolicy,
class ResourceCreationArguments>
41 const uint32 BucketIndex = Policy.GetPoolBucketIndex(Args);
42 return Policy.GetPoolBucketSize(BucketIndex);
52 const uint32 BucketIndex = Policy.GetPoolBucketIndex(Args);
66 return Policy.CreateResource(RHICmdList, Args);
74 FPooledResource NewEntry;
75 NewEntry.CreationArguments = Policy.GetCreationArguments(Resource);
78 NewEntry.BucketIndex = Policy.GetPoolBucketIndex(NewEntry.CreationArguments);
93 uint32 CullAfterFramesNum = ResourcePoolPolicy::CullAfterFramesNum;
129 for (
int32 FrameIndex = 0; FrameIndex < ResourcePoolPolicy::NumSafeFrames; FrameIndex++)
131 for (FPooledResource&
PoolEntry : SafeResourceBuckets[FrameIndex])
135 SafeResourceBuckets[FrameIndex].
Reset();
140 for (
int32 BucketIndex = 0; BucketIndex < ResourcePoolPolicy::NumPoolBuckets; BucketIndex++)
142 for (
int32 EntryIndex = ResourceBuckets[BucketIndex].
Num() - 1; EntryIndex >= 0; EntryIndex--)
144 FPooledResource&
PoolEntry = ResourceBuckets[BucketIndex][EntryIndex];
149 Policy.FreeResource(ResourceBuckets[BucketIndex][EntryIndex].Resource);
176 check(!Pool.bLocked);
182 Pool.bLocked =
false;
195 struct FPooledResource
198 ResourceType Resource;
208 bool bLocked =
false;
218template<
typename ResourceType,
class ResourcePoolPolicy,
class ResourceCreationArguments>
254 return ResourceType();
258 UE_DEPRECATED(5.4,
"CreatePooledResource requires an RHI command list.")
267 return ResourceType();
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
uint32 GFrameNumberRenderThread
Definition CoreGlobals.cpp:427
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
CORE_API bool IsInRenderingThread()
Definition ThreadingBase.cpp:273
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
Definition RHICommandList.h:455
Definition RenderResource.h:37
bool IsInitialized() const
Definition RenderResource.h:114
Definition TickableObjectRenderThread.h:15
void Unregister()
Definition TickableObjectRenderThread.h:61
void Register()
Definition TickableObjectRenderThread.h:79
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_FORCEINLINE_HINT void RemoveAtSwap(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2185
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
Definition ResourcePool.h:220
virtual bool NeedsRenderingResumedForRenderingThreadTick() const override
Definition ResourcePool.h:295
virtual void Tick(FRHICommandListImmediate &RHICmdList, float DeltaTime) override
Definition ResourcePool.h:283
virtual void ReleaseRHI() override
Definition ResourcePool.h:306
void ReleasePooledResource(ResourceType &&Resource)
Definition ResourcePool.h:274
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition ResourcePool.h:301
virtual bool IsTickable() const override
Definition ResourcePool.h:290
TRenderResourcePool(ResourcePoolPolicy InPolicy)
Definition ResourcePool.h:231
TRenderResourcePool()
Definition ResourcePool.h:223
virtual ~TRenderResourcePool()
Definition ResourcePool.h:238
ResourceType CreatePooledResource(FRHICommandListBase &RHICmdList, ResourceCreationArguments Args)
Definition ResourcePool.h:246
Definition ResourcePool.h:170
FLockScope(TResourcePool &InPool)
Definition ResourcePool.h:172
~FLockScope()
Definition ResourcePool.h:180
Definition ResourcePool.h:18
virtual ~TResourcePool()
Definition ResourcePool.h:30
void ReleasePooledResource(ResourceType &&Resource)
Definition ResourcePool.h:72
TResourcePool(ResourcePoolPolicy InPolicy)
Definition ResourcePool.h:25
uint32 PooledSizeForCreationArguments(ResourceCreationArguments Args)
Definition ResourcePool.h:39
ResourceType CreatePooledResource(FRHICommandListBase &RHICmdList, ResourceCreationArguments Args)
Definition ResourcePool.h:49
void DrainPool(bool bForceDrainAll)
Definition ResourcePool.h:90
Definition ScopeLock.h:53
Definition ScopeLock.h:21
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71