UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RHITransientResourceAllocator.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "RHI.h"
6#include "RHIResources.h"
7#include "Tasks/Task.h"
8
13
23{
24public:
25 // Returns the fence at which the Acquire operation can occur for the given pair of resources transitioning from Discard -> Acquire.
27 {
28 check(Acquire.IsSinglePipeline());
29
30 if (Discard.Graphics != Invalid)
31 {
32 // Graphics -> Graphics | AsyncCompute
33 if (Discard.AsyncCompute == Invalid)
34 {
35 return Discard.Graphics;
36 }
37
38 // All -> AsyncCompute
39 if (Acquire.AsyncCompute != Invalid)
40 {
41 // All -> AsyncCompute - The acquire graphics fork pass is used because a fence from Graphics -> AsyncCompute after the discard's graphics pass must be present.
42 return Acquire.GraphicsForkJoin.Min;
43 }
44 }
45
46 // AsyncCompute -> AsyncCompute
47 if (Acquire.AsyncCompute != Invalid)
48 {
49 return Discard.AsyncCompute;
50 }
51
52 // All | AsyncCompute -> Graphics - The discard graphics fork pass is used because because a fence from AsyncCompute -> Graphics after the discard's async compute pass must be present.
53 return Discard.GraphicsForkJoin.Max;
54 }
55
56 // Returns whether two regions described by the discard and acquire fences contain each other. If they do, that means the memory would being used by both pipes simultaneously and cannot be aliased.
58 {
59 return
60 Contains(Discard.GraphicsForkJoin, Acquire.Graphics) ||
61 Contains(Acquire.GraphicsForkJoin, Discard.Graphics) ||
62 // We have to discard on the graphics pipe, which means we can't alias with async compute resources that have a graphics fork pass earlier than the discard join pass.
64 Discard.GetPipelines() == ERHIPipeline::All &&
66 Acquire.GraphicsForkJoin.Min < Discard.GraphicsForkJoin.Max);
67 }
68
70
71 // Expects the bitmask of the pipes this transient allocation was accessed on, which can be different from the fences themselves.
75
77 {
79 check(!GraphicsForkJoin.IsValid() || Contains(GraphicsForkJoin, InGraphics));
80 Graphics = InGraphics;
81 }
82
91
93 {
94 return Pipelines;
95 }
96
98 {
100 return Graphics != Invalid ? Graphics : AsyncCompute;
101 }
102
103 bool IsSinglePipeline() const
104 {
105 return Pipelines != ERHIPipeline::All;
106 }
107
108private:
109 static bool Contains(TInterval<uint32> Interval, uint32 Element)
110 {
111 return Interval.IsValid() && Element > Interval.Min && Element < Interval.Max;
112 }
113
114 static const uint32 Invalid = std::numeric_limits<uint32>::max();
115 uint32 Graphics = Invalid;
116 uint32 AsyncCompute = Invalid;
117 TInterval<uint32> GraphicsForkJoin;
119};
120
122{
123 // Offset of the span in the page pool in pages.
125
126 // Number of pages in the span.
128};
129
132{
133 bool IsValid() const { return Pool != nullptr; }
134
135 // The transient page pool which made the allocation.
137
138 // A unique hash identifying this allocation to the allocator implementation.
140
141 // The index identifying the allocation to the page pool.
143
144 // Offsets into the array of spans for the allocator implementation.
147};
148
151{
152 // The list of allocations by pool.
154
155 // The full list of spans indexed by each allocation.
157};
158
161{
162 bool IsValid() const { return Size != 0; }
163
164 // Transient heap which made the allocation.
166
167 // Size of the allocation made from the allocator (aligned).
169
170 // Offset in the transient heap; front of the heap starts at 0.
172
173 // Number of bytes of padding were added to the offset.
175};
176
178{
179 Texture,
180 Buffer
181};
182
184{
185 Heap,
186 Page
187};
188
190{
191public:
193
199
201
209
216
218
221
223 {
224 Name = InName;
225 AcquirePasses = TInterval<uint32>(0, InAcquirePassIndex);
226 DiscardPass = kInvalidPassIndex;
227 bAcquired = true;
228 AcquirePipeline = InAcquirePipeline;
229 AcquireCycle = InAllocatorCycle;
230 AcquireCount++;
231 AliasingOverlaps.Reset();
232 }
233
235 {
236 bAcquired = false;
237
239 {
240 bDiscardOnGraphicsWorkaround = true;
241 }
242 }
243
245 {
246 check(!InBeforeResource->IsAcquired());
247
248 // Aliasing overlaps are currently only tracked with RHI validation, as no RHI is actually using them.
250 {
252 }
253
254 AcquirePasses.Min = FMath::Max(AcquirePasses.Min, InAcquirePassIndex);
255
256 if (AcquirePipeline == ERHIPipeline::AsyncCompute && InBeforeResource->bDiscardOnGraphicsWorkaround)
257 {
258 InBeforeResource->DiscardPass = FMath::Min(InBeforeResource->DiscardPass, AcquirePasses.Min);
259 }
260 else
261 {
262 InBeforeResource->DiscardPass = FMath::Min(InBeforeResource->DiscardPass, AcquirePasses.Max);
263 }
264
265 check(AcquirePasses.Min <= AcquirePasses.Max);
266 }
267
268 void Finish(FRHICommandListBase& RHICmdList)
269 {
270 if (ResourceTask.IsValid())
271 {
272 FResourceTaskResult Result = MoveTemp(ResourceTask.GetResult());
273 Resource = MoveTemp(Result.Resource);
274 GpuVirtualAddress = Result.GpuVirtualAddress;
275 ResourceTask = {};
276 }
277 BindDebugLabelName(RHICmdList);
278 }
279
281 {
282 check(AllocationType == ERHITransientAllocationType::Heap);
283 return HeapAllocation;
284 }
285
287 {
288 check(AllocationType == ERHITransientAllocationType::Heap);
289 return HeapAllocation;
290 }
291
293 {
295 return PageAllocation;
296 }
297
299 {
301 return PageAllocation;
302 }
303
305
306 // Returns the underlying RHI resource.
307 FRHIResource* GetRHI() const { check(!ResourceTask.IsValid()); return Resource; }
308
309 // Returns the gpu virtual address of the transient resource.
310 uint64 GetGpuVirtualAddress() const { return GpuVirtualAddress; }
311
312 // Returns whether a resource has a pending task.
313 bool HasResourceTask() const { return ResourceTask.IsValid(); }
314
315 // Returns the name assigned to the transient resource at allocation time.
316 const TCHAR* GetName() const { return Name; }
317
318 // Returns the hash used to uniquely identify this resource if cached.
319 uint64 GetHash() const { return Hash; }
320
321 // Returns the required size in bytes of the resource.
322 uint64 GetSize() const { return Size; }
323
324 // Returns the last allocator cycle this resource was acquired.
325 uint64 GetAcquireCycle() const { return AcquireCycle; }
326
327 // Returns the number of times Acquire has been called.
328 uint32 GetAcquireCount() const { return AcquireCount; }
329
330 // Returns the list of aliasing overlaps used when transitioning the resource.
332
333 // Returns the pass index which may end acquiring this resource.
334 uint32 GetAcquirePass() const { return AcquirePasses.Min; }
335
336 // Returns the pass index which discarded this resource.
337 uint32 GetDiscardPass() const { return DiscardPass; }
338
339 // Returns whether this resource is still in an acquired state.
340 bool IsAcquired() const { return bAcquired; }
341 bool IsDiscarded() const { return !bAcquired; }
342
343 ERHITransientResourceType GetResourceType() const { return ResourceType; }
344
345 bool IsTexture() const { return ResourceType == ERHITransientResourceType::Texture; }
346 bool IsBuffer() const { return ResourceType == ERHITransientResourceType::Buffer; }
347
348 ERHITransientAllocationType GetAllocationType() const { return AllocationType; }
349
350 bool IsHeapAllocated() const { return AllocationType == ERHITransientAllocationType::Heap; }
351 bool IsPageAllocated() const { return AllocationType == ERHITransientAllocationType::Page; }
352
353private:
354 virtual void BindDebugLabelName(FRHICommandListBase& RHICmdList) = 0;
355
356 // Underlying RHI resource.
358 FResourceTask ResourceTask;
359
360 // The Gpu virtual address of the RHI resource.
361 uint64 GpuVirtualAddress = 0;
362
363 // The hash used to uniquely identify this resource if cached.
364 uint64 Hash;
365
366 // Size of the resource in bytes.
367 uint64 Size;
368
369 // Alignment of the resource in bytes.
370 uint32 Alignment;
371
372 // Tracks the number of times Acquire has been called.
373 uint32 AcquireCount = 0;
374
375 // Cycle count used to deduce age of the resource.
376 uint64 AcquireCycle = 0;
377
378 // Debug name of the resource. Updated with each allocation.
379 const TCHAR* Name = nullptr;
380
381 FRHITransientHeapAllocation HeapAllocation;
382 FRHITransientPageAllocation PageAllocation;
383
384 // List of aliasing resources overlapping with this one.
386
387 // Start -> End split pass index intervals for acquire / discard operations.
388 TInterval<uint32> AcquirePasses = TInterval<uint32>(0, 0);
389 uint32 DiscardPass = 0;
390 ERHIPipeline AcquirePipeline = ERHIPipeline::None;
391 bool bAcquired = false;
392 bool bDiscardOnGraphicsWorkaround = false;
393
394 ERHITransientAllocationType AllocationType;
395 ERHITransientResourceType ResourceType;
396};
397
399{
400public:
407
415
417
418 // Returns the underlying RHI texture.
419 FRHITexture* GetRHI() const { return static_cast<FRHITexture*>(FRHITransientResource::GetRHI()); }
420
421 // Returns the create info struct used when creating this texture.
423
424 // Finds a UAV matching the descriptor in the cache or creates a new one and updates the cache.
426
427 // Finds a SRV matching the descriptor in the cache or creates a new one and updates the cache.
429
430 // The create info describing the texture.
432
433 // The persistent view cache containing all views created for this texture.
435
436private:
437 RHI_API void BindDebugLabelName(FRHICommandListBase& RHICmdList) override;
438};
439
441{
442public:
452
463
465
466 // Returns the underlying RHI buffer.
467 FRHIBuffer* GetRHI() const { return static_cast<FRHIBuffer*>(FRHITransientResource::GetRHI()); }
468
469 // Returns the create info used when creating this buffer.
471
472 // Finds a UAV matching the descriptor in the cache or creates a new one and updates the cache.
474
475 // Finds a SRV matching the descriptor in the cache or creates a new one and updates the cache.
477
478 // The create info describing the texture.
480
481 // The persistent view cache containing all views created for this buffer.
483
484private:
485 RHI_API void BindDebugLabelName(FRHICommandListBase& RHICmdList) override;
486};
487
489{
490public:
497
499
501 {
502 None = 0,
503
504 // The memory range references platform specific fast RAM.
505 FastVRAM = 1 << 0
506 };
507
509 {
510 // Number of bytes available for use in the memory range.
512
513 // Number of bytes allocated for use in the memory range.
515
516 // Flags specified for this memory range.
518 };
519
522};
523
525
527{
528 // Transient resources are always created inline inside of the Create call.
529 Inline,
530
531 // Transient resource creation may be offloaded to a task (dependent on platform), in which case FRHITransientResource::Finish must be called prior to accessing the underlying RHI resource.
532 Task
533};
534
536{
537public:
539
540 // Supports transient allocations of given resource type
542
543 // Sets the create mode for allocations.
545
546 // Allocates a new transient resource with memory backed by the transient allocator.
547 virtual FRHITransientTexture* CreateTexture(const FRHITextureCreateInfo& CreateInfo, const TCHAR* DebugName, const FRHITransientAllocationFences& Fences) = 0;
548 virtual FRHITransientBuffer* CreateBuffer(const FRHIBufferCreateInfo& CreateInfo, const TCHAR* DebugName, const FRHITransientAllocationFences& Fences) = 0;
549
550 // Deallocates the underlying memory for use by a future resource creation call.
553
554 // Flushes any pending allocations prior to rendering. Optionally emits stats if OutStats is valid.
555 virtual void Flush(FRHICommandListImmediate& RHICmdList, FRHITransientAllocationStats* OutStats = nullptr) = 0;
556
557 // Releases this instance of the transient allocator. Invalidates any outstanding transient resources.
558 virtual void Release(FRHICommandListImmediate& RHICmdList) { delete this; }
559};
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
FRHIGlobals GRHIGlobals
Definition RHIGlobals.cpp:6
ERHIPipeline
Definition RHIPipeline.h:13
ERHITransientResourceType
Definition RHITransientResourceAllocator.h:178
ERHITransientResourceCreateMode
Definition RHITransientResourceAllocator.h:527
ERHITransientAllocationType
Definition RHITransientResourceAllocator.h:184
const bool GRHIValidationEnabled
Definition RHIValidationCommon.h:20
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RHIResources.h:5806
RHI_API FRHIShaderResourceView * GetOrCreateSRV(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, const FRHIBufferSRVCreateInfo &CreateInfo)
Definition RHI.cpp:2000
RHI_API FRHIUnorderedAccessView * GetOrCreateUAV(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, const FRHIBufferUAVCreateInfo &CreateInfo)
Definition RHI.cpp:2054
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHICommandList.h:4626
Definition RHIResources.h:54
Definition RHIResources.h:3304
Definition RHIResources.h:5785
RHI_API FRHIShaderResourceView * GetOrCreateSRV(FRHICommandListBase &RHICmdList, FRHITexture *Texture, const FRHITextureSRVCreateInfo &CreateInfo)
Definition RHI.cpp:1937
RHI_API FRHIUnorderedAccessView * GetOrCreateUAV(FRHICommandListBase &RHICmdList, FRHITexture *Texture, const FRHITextureUAVCreateInfo &CreateInfo)
Definition RHI.cpp:1969
Definition RHIResources.h:2153
Definition RHITransientResourceAllocator.h:23
bool IsSinglePipeline() const
Definition RHITransientResourceAllocator.h:103
static bool Contains(const FRHITransientAllocationFences &Discard, const FRHITransientAllocationFences &Acquire)
Definition RHITransientResourceAllocator.h:57
void SetAsyncCompute(uint32 InAsyncCompute, TInterval< uint32 > InGraphicsForkJoin)
Definition RHITransientResourceAllocator.h:83
FRHITransientAllocationFences(ERHIPipeline InPipelines)
Definition RHITransientResourceAllocator.h:72
ERHIPipeline GetPipelines() const
Definition RHITransientResourceAllocator.h:92
uint32 GetSinglePipeline() const
Definition RHITransientResourceAllocator.h:97
static uint32 GetAcquireFence(const FRHITransientAllocationFences &Discard, const FRHITransientAllocationFences &Acquire)
Definition RHITransientResourceAllocator.h:26
void SetGraphics(uint32 InGraphics)
Definition RHITransientResourceAllocator.h:76
Definition RHITransientResourceAllocator.h:489
TArray< FMemoryRange > MemoryRanges
Definition RHITransientResourceAllocator.h:520
EMemoryRangeFlags
Definition RHITransientResourceAllocator.h:501
TMap< const FRHITransientResource *, FAllocationArray > Resources
Definition RHITransientResourceAllocator.h:521
Definition RHITransientResourceAllocator.h:441
FRHITransientBuffer(const FResourceTask &InResourceTask, uint64 InHash, uint64 InSize, ERHITransientAllocationType InAllocationType, const FRHIBufferCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:443
FRHIBuffer * GetRHI() const
Definition RHITransientResourceAllocator.h:467
FRHIUnorderedAccessView * GetOrCreateUAV(FRHICommandListBase &RHICmdList, const FRHIBufferUAVCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:473
const FRHIBufferCreateInfo CreateInfo
Definition RHITransientResourceAllocator.h:479
FRHIBufferViewCache ViewCache
Definition RHITransientResourceAllocator.h:482
FRHITransientBuffer(FRHIResource *InBuffer, uint64 InGpuVirtualAddress, uint64 InHash, uint64 InSize, ERHITransientAllocationType InAllocationType, const FRHIBufferCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:453
FRHIShaderResourceView * GetOrCreateSRV(FRHICommandListBase &RHICmdList, const FRHIBufferSRVCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:476
const FRHIBufferCreateInfo & GetCreateInfo() const
Definition RHITransientResourceAllocator.h:470
virtual RHI_API ~FRHITransientBuffer()
Definition RHICoreTransientResourceAllocator.h:467
Definition RHICoreTransientResourceAllocator.h:887
Definition RHITransientResourceAllocator.h:190
bool IsPageAllocated() const
Definition RHITransientResourceAllocator.h:351
void Acquire(const TCHAR *InName, uint32 InAcquirePassIndex, ERHIPipeline InAcquirePipeline, uint64 InAllocatorCycle)
Internal Allocator API.
Definition RHITransientResourceAllocator.h:222
bool IsBuffer() const
Definition RHITransientResourceAllocator.h:346
bool IsTexture() const
Definition RHITransientResourceAllocator.h:345
FRHITransientPageAllocation & GetPageAllocation()
Definition RHITransientResourceAllocator.h:292
bool IsDiscarded() const
Definition RHITransientResourceAllocator.h:341
const FRHITransientPageAllocation & GetPageAllocation() const
Definition RHITransientResourceAllocator.h:298
ERHITransientAllocationType GetAllocationType() const
Definition RHITransientResourceAllocator.h:348
uint64 GetSize() const
Definition RHITransientResourceAllocator.h:322
void AddAliasingOverlap(FRHITransientResource *InBeforeResource, uint32 InAcquirePassIndex)
Definition RHITransientResourceAllocator.h:244
uint64 GetHash() const
Definition RHITransientResourceAllocator.h:319
uint32 GetAcquireCount() const
Definition RHITransientResourceAllocator.h:328
bool IsAcquired() const
Definition RHITransientResourceAllocator.h:340
uint64 GetGpuVirtualAddress() const
Definition RHITransientResourceAllocator.h:310
TConstArrayView< FRHITransientAliasingOverlap > GetAliasingOverlaps() const
Definition RHITransientResourceAllocator.h:331
ERHITransientResourceType GetResourceType() const
Definition RHITransientResourceAllocator.h:343
const TCHAR * GetName() const
Definition RHITransientResourceAllocator.h:316
bool HasResourceTask() const
Definition RHITransientResourceAllocator.h:313
void Finish(FRHICommandListBase &RHICmdList)
Definition RHITransientResourceAllocator.h:268
uint32 GetAcquirePass() const
Definition RHITransientResourceAllocator.h:334
FRHITransientHeapAllocation & GetHeapAllocation()
Definition RHITransientResourceAllocator.h:280
bool IsHeapAllocated() const
Definition RHITransientResourceAllocator.h:350
virtual RHI_API ~FRHITransientResource()
const FRHITransientHeapAllocation & GetHeapAllocation() const
Definition RHITransientResourceAllocator.h:286
FRHIResource * GetRHI() const
Definition RHITransientResourceAllocator.h:307
void Discard(const FRHITransientAllocationFences &Fences)
Definition RHITransientResourceAllocator.h:234
uint32 GetDiscardPass() const
Definition RHITransientResourceAllocator.h:337
static const uint32 kInvalidPassIndex
Definition RHITransientResourceAllocator.h:192
uint64 GetAcquireCycle() const
Definition RHITransientResourceAllocator.h:325
UE::Tasks::TTask< FResourceTaskResult > FResourceTask
Definition RHITransientResourceAllocator.h:200
Definition RHITransientResourceAllocator.h:399
FRHIShaderResourceView * GetOrCreateSRV(FRHICommandListBase &RHICmdList, const FRHITextureSRVCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:428
const FRHITextureCreateInfo CreateInfo
Definition RHITransientResourceAllocator.h:431
FRHITextureViewCache ViewCache
Definition RHITransientResourceAllocator.h:434
FRHITexture * GetRHI() const
Definition RHITransientResourceAllocator.h:419
virtual RHI_API ~FRHITransientTexture()
FRHIUnorderedAccessView * GetOrCreateUAV(FRHICommandListBase &RHICmdList, const FRHITextureUAVCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:425
const FRHITextureCreateInfo & GetCreateInfo() const
Definition RHITransientResourceAllocator.h:422
Definition RHIResources.h:3294
Definition RHITransientResourceAllocator.h:536
virtual void Flush(FRHICommandListImmediate &RHICmdList, FRHITransientAllocationStats *OutStats=nullptr)=0
virtual ~IRHITransientResourceAllocator()=default
virtual void DeallocateMemory(FRHITransientBuffer *Buffer, const FRHITransientAllocationFences &Fences)=0
virtual FRHITransientBuffer * CreateBuffer(const FRHIBufferCreateInfo &CreateInfo, const TCHAR *DebugName, const FRHITransientAllocationFences &Fences)=0
virtual FRHITransientTexture * CreateTexture(const FRHITextureCreateInfo &CreateInfo, const TCHAR *DebugName, const FRHITransientAllocationFences &Fences)=0
virtual bool SupportsResourceType(ERHITransientResourceType Type) const =0
virtual void Release(FRHICommandListImmediate &RHICmdList)
Definition RHITransientResourceAllocator.h:558
virtual void SetCreateMode(ERHITransientResourceCreateMode CreateMode)
Definition RHITransientResourceAllocator.h:544
virtual void DeallocateMemory(FRHITransientTexture *Texture, const FRHITransientAllocationFences &Fences)=0
Definition Array.h:670
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
bool IsValid() const
Definition Task.h:62
ResultType & GetResult()
Definition Task.h:196
@ Invalid
Definition BTCompositeNode.h:38
Definition RHIResources.h:1321
Definition RHIResources.h:5700
Definition RHIResources.h:5754
bool NeedsTransientDiscardOnGraphicsWorkaround
Definition RHIGlobals.h:732
Definition RHIResources.h:1689
Definition RHIResources.h:5570
Definition RHIResources.h:5651
Definition RHITransientResourceAllocator.h:492
uint64 OffsetMax
Definition RHITransientResourceAllocator.h:494
uint32 MemoryRangeIndex
Definition RHITransientResourceAllocator.h:495
uint64 OffsetMin
Definition RHITransientResourceAllocator.h:493
Definition RHITransientResourceAllocator.h:509
uint64 Capacity
Definition RHITransientResourceAllocator.h:511
EMemoryRangeFlags Flags
Definition RHITransientResourceAllocator.h:517
uint64 CommitSize
Definition RHITransientResourceAllocator.h:514
Definition RHITransientResourceAllocator.h:161
uint64 Size
Definition RHITransientResourceAllocator.h:168
uint32 AlignmentPad
Definition RHITransientResourceAllocator.h:174
FRHITransientHeap * Heap
Definition RHITransientResourceAllocator.h:165
bool IsValid() const
Definition RHITransientResourceAllocator.h:162
uint64 Offset
Definition RHITransientResourceAllocator.h:171
Definition RHITransientResourceAllocator.h:151
TArray< FRHITransientPagePoolAllocation > PoolAllocations
Definition RHITransientResourceAllocator.h:153
TArray< FRHITransientPageSpan > Spans
Definition RHITransientResourceAllocator.h:156
Definition RHITransientResourceAllocator.h:132
uint16 SpanOffsetMin
Definition RHITransientResourceAllocator.h:145
uint64 Hash
Definition RHITransientResourceAllocator.h:139
FRHITransientPagePool * Pool
Definition RHITransientResourceAllocator.h:136
uint16 SpanOffsetMax
Definition RHITransientResourceAllocator.h:146
uint16 SpanIndex
Definition RHITransientResourceAllocator.h:142
bool IsValid() const
Definition RHITransientResourceAllocator.h:133
Definition RHITransientResourceAllocator.h:122
uint16 Count
Definition RHITransientResourceAllocator.h:127
uint16 Offset
Definition RHITransientResourceAllocator.h:124
Definition RHITransientResourceAllocator.h:195
uint64 GpuVirtualAddress
Definition RHITransientResourceAllocator.h:197
TRefCountPtr< FRHIResource > Resource
Definition RHITransientResourceAllocator.h:196
Definition Interval.h:33
bool IsValid() const
Definition Interval.h:132
ElementType Max
Definition Interval.h:38
ElementType Min
Definition Interval.h:35
Definition NumericLimits.h:41