UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UnifiedBuffer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "CoreMinimal.h"
9#include "HAL/Platform.h"
10#include "HAL/UnrealMemory.h"
12#include "PixelFormat.h"
13#include "RHI.h"
14#include "RHIUtilities.h"
18
19class FRDGBuilder;
20class FRHICommandList;
21
22/*
23 * Can store arbitrary data so long as it follows alignment restrictions. Intended mostly for read only data uploaded from CPU.
24 * Allows sparse allocations and updates from CPU.
25 * Float4 versions exist for platforms that don't yet support byte address buffers.
26 */
27
34
41
47
48template<typename ResourceType>
49extern RENDERCORE_API void MemsetResource(FRHICommandList& RHICmdList, const ResourceType& DstBuffer, const FMemsetResourceParams& Params);
50
51template<typename ResourceType>
52extern RENDERCORE_API void MemcpyResource(FRHICommandList& RHICmdList, const ResourceType& DstBuffer, const ResourceType& SrcBuffer, const FMemcpyResourceParams& Params, bool bAlreadyInUAVOverlap = false);
53
55
56template<typename ResourceType>
57extern RENDERCORE_API bool ResizeResourceIfNeeded(FRHICommandList& RHICmdList, ResourceType& Buffer, uint32 NumBytes, const TCHAR* DebugName);
58
59RENDERCORE_API bool ResizeResourceIfNeeded(FRHICommandList& RHICmdList, FRWBuffer& Buffer, EPixelFormat Format, uint32 NumElements, const TCHAR* DebugName);
60
65RENDERCORE_API bool ResizeResourceIfNeeded(FRDGBuilder& GraphBuilder, FRWBufferStructured& Buffer, uint32 NumBytes, const TCHAR* DebugName);
66RENDERCORE_API bool ResizeResourceIfNeeded(FRDGBuilder& GraphBuilder, FRWByteAddressBuffer& Buffer, uint32 NumBytes, const TCHAR* DebugName);
67RENDERCORE_API bool ResizeResourceIfNeeded(FRDGBuilder& GraphBuilder, FRWBuffer& Buffer, EPixelFormat Format, uint32 NumElements, const TCHAR* DebugName);
68
70{
71public:
74
75 uint32* ScatterData = nullptr;
76 uint8* UploadData = nullptr;
77
83
84 bool bFloat4Buffer = false;
85 bool bUploadViaCreate = false;
86
88 {
89 Release();
90 }
91
92 RENDERCORE_API void Init( uint32 NumElements, uint32 InNumBytesPerElement, bool bInFloat4Buffer, const TCHAR* DebugName );
93
94 template<typename ResourceType>
95 void ResourceUploadTo(FRHICommandList& RHICmdList, const ResourceType& DstBuffer, bool bFlush = false);
96
97 void Add( uint32 Index, const void* Data, uint32 Num = 1 )
98 {
99 void* Dst = Add_GetRef( Index, Num );
101 }
102
104 {
106 checkSlow( ScatterData != nullptr );
107 checkSlow( UploadData != nullptr );
108
110
111 for( uint32 i = 0; i < Num; i++ )
112 {
113 ScatterWriteData[ i ] = Index + i;
114 }
115
116 void* Result = UploadData + NumScatters * NumBytesPerElement;
117 NumScatters += Num;
118 return Result;
119 }
120
122 {
123 checkSlow(ElementIndex + Num <= MaxScatters );
124 checkSlow( ScatterData != nullptr );
125 checkSlow( UploadData != nullptr );
126 for (uint32 i = 0; i < Num; i++)
127 {
128 ScatterData[ElementIndex + i] = ElementScatterOffset + i;
129 }
130 return UploadData + ElementIndex * NumBytesPerElement;
131 }
132
133 void Release()
134 {
137
139 {
140 if (ScatterData)
141 {
143 ScatterData = nullptr;
144 }
145 if (UploadData)
146 {
148 UploadData = nullptr;
149 }
150 ScatterDataSize = 0;
151 UploadDataSize = 0;
152 }
153 }
154
159
163 RENDERCORE_API void InitPreSized(uint32 NumElements, uint32 InNumBytesPerElement, bool bInFloat4Buffer, const TCHAR* DebugName);
164
172 inline void* GetRef(uint32 ElementIndex)
173 {
174 checkSlow(ScatterData != nullptr);
175 checkSlow(UploadData != nullptr);
176
177 return UploadData + ElementIndex * NumBytesPerElement;
178 }
179
181 {
183 {
184 // When switching the upload path, just free everything.
185 Release();
186
188 }
189 }
190};
191
192extern RENDERCORE_API void MemsetResource(FRDGBuilder& GraphBuilder, FRDGBuffer* DstResource, const FMemsetResourceParams& Params);
193extern RENDERCORE_API void MemcpyResource(FRDGBuilder& GraphBuilder, FRDGBuffer* DstResource, FRDGBuffer* SrcResource, const FMemcpyResourceParams& Params);
194
195extern RENDERCORE_API void MemsetResource(FRDGBuilder& GraphBuilder, FRDGBufferUAV* DstResource, const FMemsetResourceParams& Params);
196extern RENDERCORE_API void MemcpyResource(FRDGBuilder& GraphBuilder, FRDGBufferUAV* DstResource, FRDGBufferSRV* SrcResource, const FMemcpyResourceParams& Params);
197
199{
202 int32 NumElementsPerScatter = INDEX_NONE; // INDEX_NONE lets the setup figure it out, otherwise it will run NumScatters * NumElementsPerScatter threads to copy the source data.
203};
204
206
208{
211 int32 NumElementsPerScatter = INDEX_NONE; // INDEX_NONE lets the setup figure it out, otherwise it will run NumScatters * NumElementsPerScatter threads to copy the source data.
212};
213
215
221// Same as ResizeByteAddressBufferIfNeeded but will rebase the allocated buffer under the current LLM tag.
222#if ENABLE_LOW_LEVEL_MEM_TRACKER || UE_MEMORY_TRACE_ENABLED
224#else
229#endif
231
233{
234public:
245
246 void Add(uint32 Index, const void* Data, uint32 Num = 1)
247 {
248 void* Dst = Add_GetRef(Index, Num);
250 }
251
253 {
255 checkSlow(ScatterData != nullptr);
256 checkSlow(UploadData != nullptr);
257
259
260 for (uint32 i = 0; i < Num; i++)
261 {
262 ScatterWriteData[i] = Index + i;
263 }
264
265 void* Result = UploadData + NumScatters * NumBytesPerElement;
266 NumScatters += Num;
267 return Result;
268 }
269
270 template <typename T>
272 {
273 return MakeArrayView(reinterpret_cast<T*>(Add_GetRef(Index, Num)), Num);
274 }
275
277 {
278 checkSlow(ElementIndex + Num <= MaxScatters);
279 checkSlow(ScatterData != nullptr);
280 checkSlow(UploadData != nullptr);
281
282 for (uint32 i = 0; i < Num; i++)
283 {
284 ScatterData[ElementIndex + i] = ElementScatterOffset + i;
285 }
286 return UploadData + ElementIndex * NumBytesPerElement;
287 }
288
289 template <typename T>
294
298 inline void* GetRef(uint32 ElementIndex)
299 {
300 checkSlow(ScatterData != nullptr);
301 checkSlow(UploadData != nullptr);
302
303 return UploadData + ElementIndex * NumBytesPerElement;
304 }
305
306protected:
307 uint32* ScatterData = nullptr;
308 uint8* UploadData = nullptr;
312
314};
315
317 : public FRDGScatterUploadBase
318{
319public:
320 RENDERCORE_API void Lock(FRHICommandListBase& RHICmdList);
321 RENDERCORE_API void Unlock(FRHICommandListBase& RHICmdList);
322
324 {
325 return DstResource;
326 }
327
328private:
329 uint32 GetFinalNumScatters() const
330 {
331 check(bNumScattersPreSized || State == EState::Unlocked);
332 return NumScatters;
333 }
334
335 FRDGViewableResource* DstResource = nullptr;
336 FRHIBuffer* ScatterBuffer = nullptr;
337 FRHIBuffer* UploadBuffer = nullptr;
338 uint32 ScatterBytes = 0;
339 uint32 UploadBytes = 0;
340 bool bNumScattersPreSized = false;
341
342 enum class EState : uint8
343 {
344 Empty,
345 Locked,
346 Unlocked
347 };
348
349 std::atomic<EState> State{ EState::Empty };
350
352};
353
354inline void LockIfValid(FRHICommandListBase& RHICmdList, FRDGScatterUploader* Uploader)
355{
356 if (Uploader)
357 {
358 Uploader->Lock(RHICmdList);
359 }
360}
361
362inline void UnlockIfValid(FRHICommandListBase& RHICmdList, FRDGScatterUploader* Uploader)
363{
364 if (Uploader)
365 {
366 Uploader->Unlock(RHICmdList);
367 }
368}
369
371{
372public:
374 RENDERCORE_API FRDGScatterUploader* Begin(FRDGBuilder& GraphBuilder, FRDGViewableResource* DstResource, uint32 NumElements, uint32 NumBytesPerElement, const TCHAR* Name);
375
377 RENDERCORE_API FRDGScatterUploader* BeginPreSized(FRDGBuilder& GraphBuilder, FRDGViewableResource* DstResource, uint32 NumElements, uint32 NumBytesPerElement, const TCHAR* Name);
378
379 RENDERCORE_API void End(FRDGBuilder& GraphBuilder, FRDGScatterUploader* Uploader);
380
381 RENDERCORE_API void Release();
382
384
385private:
386 TRefCountPtr<FRDGPooledBuffer> ScatterBuffer;
388};
389
391{
392public:
394
396 FRDGBuilder& GraphBuilder,
397 FRDGAsyncScatterUploadBuffer& UploadBuffer,
398 FRDGViewableResource* DstResource,
399 uint32 NumElements,
400 uint32 NumBytesPerElement,
401 const TCHAR* Name,
403 {
404 FRDGScatterUploadBuilder* Builder = Create(GraphBuilder);
405 Builder->AddPass(GraphBuilder, UploadBuffer, DstResource, NumElements, NumBytesPerElement, Name, MoveTemp(Function));
406 return Builder->Execute(GraphBuilder);
407 }
408
410 FRDGBuilder& GraphBuilder,
411 FRDGAsyncScatterUploadBuffer& UploadBuffer,
412 FRDGViewableResource* DstResource,
413 uint32 NumElements,
414 uint32 NumBytesPerElement,
415 const TCHAR* Name,
417 {
418 FRDGScatterUploadBuilder* Builder = Create(GraphBuilder);
419 Builder->AddPass_PreSized(GraphBuilder, UploadBuffer, DstResource, NumElements, NumBytesPerElement, Name, MoveTemp(Function));
420 return Builder->Execute(GraphBuilder);
421 }
422
424
427 FRDGBuilder& GraphBuilder,
428 FRDGAsyncScatterUploadBuffer& UploadBuffer,
429 FRDGViewableResource* DstResource,
430 uint32 NumElements,
431 uint32 NumBytesPerElement,
432 const TCHAR* Name,
434 {
435 Passes.Emplace(UploadBuffer, UploadBuffer.Begin(GraphBuilder, DstResource, NumElements, NumBytesPerElement, Name), MoveTemp(Function));
436 MaxBytes += NumElements * NumBytesPerElement;
437 }
438
441 FRDGBuilder& GraphBuilder,
442 FRDGAsyncScatterUploadBuffer& UploadBuffer,
443 FRDGViewableResource* DstResource,
444 uint32 NumElements,
445 uint32 NumBytesPerElement,
446 const TCHAR* Name,
448 {
449 Passes.Emplace(UploadBuffer, UploadBuffer.BeginPreSized(GraphBuilder, DstResource, NumElements, NumBytesPerElement, Name), MoveTemp(Function));
450 MaxBytes += NumElements * NumBytesPerElement;
451 }
452
454
455private:
456 FRDGScatterUploadBuilder() = default;
457
458 struct FPass
459 {
461 : UploadBuffer(InUploadBuffer)
462 , Uploader(InUploader)
464 {}
465
466 FRDGAsyncScatterUploadBuffer& UploadBuffer;
467 FRDGScatterUploader* Uploader = nullptr;
469 };
470
472 uint32 MaxBytes = 0;
473
475};
476
478 : public FRDGScatterUploadBase
479{
480public:
484 RENDERCORE_API void InitPreSized(FRDGBuilder& GraphBuilder, uint32 NumElements, uint32 InNumBytesPerElement, bool bInFloat4Buffer, const TCHAR* DebugName);
485
490
491 RENDERCORE_API void Init(FRDGBuilder& GraphBuilder, uint32 NumElements, uint32 NumBytesPerElement, bool bInFloat4Buffer, const TCHAR* Name);
492
493 inline void ResourceUploadTo(FRDGBuilder& GraphBuilder, FRDGBuffer* DstResource)
494 {
495 ResourceUploadToInternal(GraphBuilder, DstResource);
496 }
497
498 RENDERCORE_API void Release();
499
501
502private:
503 RENDERCORE_API void ResourceUploadToInternal(FRDGBuilder& GraphBuilder, FRDGViewableResource* DstResource);
504 RENDERCORE_API void Reset();
505
506 TRefCountPtr<FRDGPooledBuffer> ScatterBuffer;
508
509 bool bFloat4Buffer = false;
510};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
@ Num
Definition MetalRHIPrivate.h:234
EPixelFormat
Definition PixelFormat.h:16
#define RDG_FRIEND_ALLOCATOR_FRIEND(Type)
Definition RenderGraphAllocator.h:155
RENDERCORE_API bool ResizeResourceSOAIfNeeded(FRHICommandList &RHICmdList, FRWBufferStructured &Texture, const FResizeResourceSOAParams &Params, const TCHAR *DebugName)
Definition UnifiedBuffer.cpp:1287
RENDERCORE_API void MemcpyResource(FRHICommandList &RHICmdList, const ResourceType &DstBuffer, const ResourceType &SrcBuffer, const FMemcpyResourceParams &Params, bool bAlreadyInUAVOverlap=false)
Definition UnifiedBuffer.cpp:1123
RENDERCORE_API FRDGBuffer * ResizeBufferIfNeeded(FRDGBuilder &GraphBuilder, TRefCountPtr< FRDGPooledBuffer > &ExternalBuffer, const FRDGBufferDesc &BufferDesc, const TCHAR *Name)
Definition UnifiedBuffer.cpp:479
void RENDERCORE_API ScatterCopyResource(FRDGBuilder &GraphBuilder, FRDGBuffer *DstResource, FRDGBufferSRV *ScatterBufferSRV, FRDGBufferSRV *UploadBufferSRV, const FScatterCopyParams &Params)
Definition UnifiedBuffer.cpp:811
FRDGBuffer * ResizeByteAddressBufferIfNeededWithCurrentLLMTag(FRDGBuilder &GraphBuilder, TRefCountPtr< FRDGPooledBuffer > &ExternalBuffer, uint32 NumBytes, const TCHAR *Name)
Definition UnifiedBuffer.h:225
void LockIfValid(FRHICommandListBase &RHICmdList, FRDGScatterUploader *Uploader)
Definition UnifiedBuffer.h:354
RENDERCORE_API void MemsetResource(FRHICommandList &RHICmdList, const ResourceType &DstBuffer, const FMemsetResourceParams &Params)
Definition UnifiedBuffer.cpp:1080
RENDERCORE_API bool ResizeResourceIfNeeded(FRHICommandList &RHICmdList, ResourceType &Buffer, uint32 NumBytes, const TCHAR *DebugName)
RENDERCORE_API FRDGBuffer * ResizeStructuredBufferSOAIfNeeded(FRDGBuilder &GraphBuilder, TRefCountPtr< FRDGPooledBuffer > &ExternalBuffer, const FResizeResourceSOAParams &Params, const TCHAR *DebugName)
Definition UnifiedBuffer.cpp:541
void UnlockIfValid(FRHICommandListBase &RHICmdList, FRDGScatterUploader *Uploader)
Definition UnifiedBuffer.h:362
RENDERCORE_API FRDGBuffer * ResizeByteAddressBufferIfNeeded(FRDGBuilder &GraphBuilder, TRefCountPtr< FRDGPooledBuffer > &ExternalBuffer, uint32 NumBytes, const TCHAR *Name)
Definition UnifiedBuffer.cpp:599
RENDERCORE_API FRDGBuffer * ResizeStructuredBufferIfNeeded(FRDGBuilder &GraphBuilder, TRefCountPtr< FRDGPooledBuffer > &ExternalBuffer, uint32 NumBytes, const TCHAR *Name)
Definition UnifiedBuffer.cpp:530
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
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition UnifiedBuffer.h:371
RENDERCORE_API FRDGScatterUploader * BeginPreSized(FRDGBuilder &GraphBuilder, FRDGViewableResource *DstResource, uint32 NumElements, uint32 NumBytesPerElement, const TCHAR *Name)
Definition UnifiedBuffer.cpp:973
RENDERCORE_API FRDGScatterUploader * Begin(FRDGBuilder &GraphBuilder, FRDGViewableResource *DstResource, uint32 NumElements, uint32 NumBytesPerElement, const TCHAR *Name)
Definition UnifiedBuffer.cpp:921
RENDERCORE_API void Release()
Definition UnifiedBuffer.cpp:1034
RENDERCORE_API uint32 GetNumBytes() const
Definition UnifiedBuffer.cpp:1040
Definition RenderGraphResources.h:1426
Definition RenderGraphResources.h:1452
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition UnifiedBuffer.h:233
uint8 * UploadData
Definition UnifiedBuffer.h:308
TArrayView< T > Set_GetRef(uint32 Index, uint32 ElementScatterOffset, uint32 Num=1)
Definition UnifiedBuffer.h:290
void * Add_GetRef(uint32 Index, uint32 Num=1)
Definition UnifiedBuffer.h:252
void * Set_GetRef(uint32 ElementIndex, uint32 ElementScatterOffset, uint32 Num=1)
Definition UnifiedBuffer.h:276
friend FRDGAsyncScatterUploadBuffer
Definition UnifiedBuffer.h:313
void * GetRef(uint32 ElementIndex)
Definition UnifiedBuffer.h:298
uint32 MaxScatters
Definition UnifiedBuffer.h:310
void Add(TArrayView< const uint32 > ElementScatterOffsets)
Definition UnifiedBuffer.h:235
TArrayView< T > Add_GetRef(uint32 Index, uint32 Num=1)
Definition UnifiedBuffer.h:271
uint32 NumScatters
Definition UnifiedBuffer.h:309
void Add(uint32 Index, const void *Data, uint32 Num=1)
Definition UnifiedBuffer.h:246
uint32 * ScatterData
Definition UnifiedBuffer.h:307
uint32 NumBytesPerElement
Definition UnifiedBuffer.h:311
Definition UnifiedBuffer.h:479
void ResourceUploadTo(FRDGBuilder &GraphBuilder, FRDGBuffer *DstResource)
Definition UnifiedBuffer.h:493
RENDERCORE_API uint32 GetNumBytes() const
Definition UnifiedBuffer.cpp:628
RENDERCORE_API void Release()
Definition UnifiedBuffer.cpp:621
RENDERCORE_API void InitPreSized(FRDGBuilder &GraphBuilder, uint32 NumElements, uint32 InNumBytesPerElement, bool bInFloat4Buffer, const TCHAR *DebugName)
Definition UnifiedBuffer.cpp:640
Definition UnifiedBuffer.h:391
void AddPass(FRDGBuilder &GraphBuilder, FRDGAsyncScatterUploadBuffer &UploadBuffer, FRDGViewableResource *DstResource, uint32 NumElements, uint32 NumBytesPerElement, const TCHAR *Name, FPassFunction &&Function)
Definition UnifiedBuffer.h:426
TFunction< void(FRDGScatterUploader &)> FPassFunction
Definition UnifiedBuffer.h:393
void AddPass_PreSized(FRDGBuilder &GraphBuilder, FRDGAsyncScatterUploadBuffer &UploadBuffer, FRDGViewableResource *DstResource, uint32 NumElements, uint32 NumBytesPerElement, const TCHAR *Name, FPassFunction &&Function)
Definition UnifiedBuffer.h:440
RENDERCORE_API UE::Tasks::FTask Execute(FRDGBuilder &GraphBuilder)
Definition UnifiedBuffer.cpp:1050
static UE::Tasks::FTask Process(FRDGBuilder &GraphBuilder, FRDGAsyncScatterUploadBuffer &UploadBuffer, FRDGViewableResource *DstResource, uint32 NumElements, uint32 NumBytesPerElement, const TCHAR *Name, FPassFunction &&Function)
Definition UnifiedBuffer.h:395
static UE::Tasks::FTask Process_PreSized(FRDGBuilder &GraphBuilder, FRDGAsyncScatterUploadBuffer &UploadBuffer, FRDGViewableResource *DstResource, uint32 NumElements, uint32 NumBytesPerElement, const TCHAR *Name, FPassFunction &&Function)
Definition UnifiedBuffer.h:409
Definition UnifiedBuffer.h:318
RENDERCORE_API void Lock(FRHICommandListBase &RHICmdList)
Definition UnifiedBuffer.cpp:905
RENDERCORE_API void Unlock(FRHICommandListBase &RHICmdList)
Definition UnifiedBuffer.cpp:913
FRDGViewableResource * GetDstResource() const
Definition UnifiedBuffer.h:323
Definition RenderGraphResources.h:291
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHICommandList.h:3819
Definition UnifiedBuffer.h:70
void ResourceUploadTo(FRHICommandList &RHICmdList, const ResourceType &DstBuffer, bool bFlush=false)
Definition UnifiedBuffer.cpp:1578
void * GetRef(uint32 ElementIndex)
Definition UnifiedBuffer.h:172
void * Set_GetRef(uint32 ElementIndex, uint32 ElementScatterOffset, uint32 Num=1)
Definition UnifiedBuffer.h:121
uint8 * UploadData
Definition UnifiedBuffer.h:76
RENDERCORE_API void InitPreSized(uint32 NumElements, uint32 InNumBytesPerElement, bool bInFloat4Buffer, const TCHAR *DebugName)
Definition UnifiedBuffer.cpp:1571
~FScatterUploadBuffer()
Definition UnifiedBuffer.h:87
void SetUploadViaCreate(bool bInUploadViaCreate)
Definition UnifiedBuffer.h:180
FByteAddressBuffer UploadBuffer
Definition UnifiedBuffer.h:73
uint32 ScatterDataSize
Definition UnifiedBuffer.h:78
uint32 MaxScatters
Definition UnifiedBuffer.h:81
uint32 NumBytesPerElement
Definition UnifiedBuffer.h:82
void Release()
Definition UnifiedBuffer.h:133
FByteAddressBuffer ScatterBuffer
Definition UnifiedBuffer.h:72
bool bFloat4Buffer
Definition UnifiedBuffer.h:84
void * Add_GetRef(uint32 Index, uint32 Num=1)
Definition UnifiedBuffer.h:103
uint32 UploadDataSize
Definition UnifiedBuffer.h:79
uint32 NumScatters
Definition UnifiedBuffer.h:80
bool bUploadViaCreate
Definition UnifiedBuffer.h:85
uint32 * ScatterData
Definition UnifiedBuffer.h:75
uint32 GetNumBytes() const
Definition UnifiedBuffer.h:155
void Add(uint32 Index, const void *Data, uint32 Num=1)
Definition UnifiedBuffer.h:97
Definition ArrayView.h:139
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition RefCounting.h:454
U16 Index
Definition radfft.cpp:71
Definition UnifiedBuffer.h:208
uint32 NumBytesPerElement
Definition UnifiedBuffer.h:210
TFunction< uint64()> GetNumScatters
Definition UnifiedBuffer.h:209
int32 NumElementsPerScatter
Definition UnifiedBuffer.h:211
Definition RHIUtilities.h:495
void Release()
Definition RHIUtilities.h:533
uint32 NumBytes
Definition RHIUtilities.h:498
Definition UnifiedBuffer.h:36
uint32 Count
Definition UnifiedBuffer.h:37
uint32 SrcOffset
Definition UnifiedBuffer.h:38
uint32 DstOffset
Definition UnifiedBuffer.h:39
static FORCENOINLINE CORE_API void Free(void *Original)
Definition UnrealMemory.cpp:685
static UE_FORCEINLINE_HINT void * ParallelMemcpy(void *Dest, const void *Src, SIZE_T Count, EMemcpyCachePolicy Policy=EMemcpyCachePolicy::StoreCached)
Definition UnrealMemory.h:182
Definition UnifiedBuffer.h:29
uint32 Value
Definition UnifiedBuffer.h:30
uint32 Count
Definition UnifiedBuffer.h:31
uint32 DstOffset
Definition UnifiedBuffer.h:32
Definition RenderGraphResources.h:940
Definition RHIUtilities.h:423
Definition RHIUtilities.h:181
Definition RHIUtilities.h:543
Definition UnifiedBuffer.h:43
uint32 NumArrays
Definition UnifiedBuffer.h:45
uint32 NumBytes
Definition UnifiedBuffer.h:44
Definition UnifiedBuffer.h:199
uint32 NumScatters
Definition UnifiedBuffer.h:200
int32 NumElementsPerScatter
Definition UnifiedBuffer.h:202
uint32 NumBytesPerElement
Definition UnifiedBuffer.h:201