48template<
typename ResourceType>
51template<
typename ResourceType>
56template<
typename ResourceType>
94 template<
typename ResourceType>
222#if ENABLE_LOW_LEVEL_MEM_TRACKER || UE_MEMORY_TRACE_ENABLED
270 template <
typename T>
289 template <
typename T>
329 uint32 GetFinalNumScatters()
const
331 check(bNumScattersPreSized || State == EState::Unlocked);
340 bool bNumScattersPreSized =
false;
342 enum class EState :
uint8
349 std::atomic<EState> State{ EState::Empty };
358 Uploader->
Lock(RHICmdList);
366 Uploader->
Unlock(RHICmdList);
400 uint32 NumBytesPerElement,
406 return Builder->
Execute(GraphBuilder);
414 uint32 NumBytesPerElement,
420 return Builder->
Execute(GraphBuilder);
431 uint32 NumBytesPerElement,
435 Passes.Emplace(UploadBuffer, UploadBuffer.
Begin(GraphBuilder, DstResource, NumElements, NumBytesPerElement,
Name),
MoveTemp(
Function));
436 MaxBytes += NumElements * NumBytesPerElement;
445 uint32 NumBytesPerElement,
450 MaxBytes += NumElements * NumBytesPerElement;
495 ResourceUploadToInternal(GraphBuilder, DstResource);
509 bool bFloat4Buffer =
false;
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
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
#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
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 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