132 NumBytes = SizeX * SizeY * BytesPerElement;
143 UE_DEPRECATED(5.7,
"A command list argument is now required")
152 NumBytes = SizeX * SizeY * SizeZ * BytesPerElement;
163 UE_DEPRECATED(5.7,
"A command list argument is now required")
242 NumBytes = BytesPerElement * NumElements;
275 template<
typename LAMBDA>
281 NumBytes = BytesPerElement * NumElements;
333 NumBytes = SizeX * SizeY * BytesPerElement;
344 UE_DEPRECATED(5.7,
"A command list argument is now required")
370 NumBytes = BytesPerElement * NumElements;
390 template<
typename LAMBDA>
393 NumBytes = BytesPerElement * NumElements;
441 NumBytes = BytesPerElement * NumElements;
452 .SetTypeFromBuffer(
Buffer)
454 .SetAppendBuffer(bAppendBuffer));
458 template<
typename LAMBDA>
464 NumBytes = BytesPerElement * NumElements;
479 .SetTypeFromBuffer(
Buffer)
481 .SetAppendBuffer(bAppendBuffer));
516 template<
typename TElement>
617 int32 TransitionIndex = 0;
618 uint32 NumColorRenderTargets =
RPInfo.GetNumColorRenderTargets();
630 if (DepthStencilTarget.
DepthStencilTarget !=
nullptr && (
RPInfo.DepthStencilRenderTarget.ExclusiveDepthStencil.IsAnyWrite()))
644 Info.ColorRenderTargets[0].MipIndex = (
uint8)MipIndex;
645 Info.ColorRenderTargets[0].ArraySlice = (
int32)ArraySlice;
684 static_assert(
PT_Num == 6,
"This function needs to be updated");
688 return NumPrimitives * Factor +
Offset;
700#if UE_BUILD_SHIPPING || UE_BUILD_TEST
701#define ENABLE_TRANSITION_DUMP 0
703#define ENABLE_TRANSITION_DUMP 1
712 static void DumpTransitionForResourceHandler();
716 static FName DumpTransitionForResource;
719#if ENABLE_TRANSITION_DUMP
720#define DUMP_TRANSITION(ResourceName, TransitionType) FDumpTransitionsHelper::DumpResourceTransition(ResourceName, TransitionType);
722#define DUMP_TRANSITION(ResourceName, TransitionType)
740UE_DEPRECATED(5.4,
"RHICompleteGraphEventOnFlip is replaced with RHITriggerTaskEventOnFlip")
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define check(expr)
Definition AssertionMacros.h:314
#define checkNoEntry()
Definition AssertionMacros.h:316
#define ensure( InExpression)
Definition AssertionMacros.h:464
#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
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
bool IsValidRef(const FVertexBufferAndSRV &Buffer)
Definition GPUSkinVertexFactory.h:92
ERHIAccess
Definition RHIAccess.h:11
#define BUF_UnorderedAccess
Definition RHIDefinitions.h:983
ESimpleRenderTargetMode
Definition RHIDefinitions.h:1291
@ MaxSimultaneousRenderTargets
Definition RHIDefinitions.h:287
EBufferUsageFlags
Definition RHIDefinitions.h:892
@ RLM_WriteOnly
Definition RHIDefinitions.h:787
#define BUF_FastVRAM
Definition RHIDefinitions.h:990
ERenderTargetStoreAction
Definition RHIDefinitions.h:1272
#define BUF_None
Definition RHIDefinitions.h:979
ETextureCreateFlags
Definition RHIDefinitions.h:1091
ERenderTargetLoadAction
Definition RHIDefinitions.h:1253
EGpuVendorId
Definition RHIDefinitions.h:1006
@ PT_RectList
Definition RHIDefinitions.h:844
@ PT_LineList
Definition RHIDefinitions.h:830
@ PT_TriangleList
Definition RHIDefinitions.h:824
@ PT_Num
Definition RHIDefinitions.h:846
@ PT_TriangleStrip
Definition RHIDefinitions.h:827
void TransitionAndCopyTexture(FRHICommandList &RHICmdList, FRHITexture *SrcTexture, FRHITexture *DstTexture, const FRHICopyTextureInfo &Info)
Definition RHIUtilities.h:650
bool IsSnormFormat(EPixelFormat Format)
Definition RHIUtilities.h:57
RHI_API void SetDepthBoundsTest(FRHICommandList &RHICmdList, float WorldSpaceDepthNear, float WorldSpaceDepthFar, const FMatrix &ProjectionMatrix)
Definition RHIUtilities.cpp:62
RHI_API float RHIGetSyncSlackMS()
Definition RHIUtilities.cpp:543
RHI_API void RHITriggerTaskEventOnFlip(uint64 PresentIndex, const UE::Tasks::FTaskEvent &TaskEvent)
Definition RHIUtilities.cpp:564
void ClearRenderTarget(FRHICommandList &RHICmdList, FRHITexture *Texture, uint32 MipIndex=0, uint32 ArraySlice=0)
Definition RHIUtilities.h:639
EPixelFormat GetBlockCompressedFormatUAVAliasFormat(EPixelFormat Format)
Definition RHIUtilities.h:18
RHI_API void RHICalculateFrameTime()
Definition RHIUtilities.cpp:619
RHI_API void RHIInitializeFlipTracking()
Definition RHIUtilities.cpp:611
bool IsUnormFormat(EPixelFormat Format)
Definition RHIUtilities.h:42
void TransitionRenderPassTargets(FRHICommandList &RHICmdList, const FRHIRenderPassInfo &RPInfo)
Definition RHIUtilities.h:614
RHI_API void RHISetVsyncDebugInfo(FRHIFlipDetails &NewFlipFrame)
Definition RHIUtilities.cpp:576
uint32 GetVertexCountForPrimitiveCount(uint32 NumPrimitives, uint32 PrimitiveType)
Definition RHIUtilities.h:682
RHI_API uint32 RHIGetSyncInterval()
Definition RHIUtilities.cpp:538
uint32 ComputeAnisotropyRT(int32 InitializerMaxAnisotropy)
Definition RHIUtilities.h:692
RHI_API ERHIAccess RHIGetDefaultResourceState(ETextureCreateFlags InUsage, bool bInHasInitialData)
Definition RHIUtilities.cpp:639
RHI_API EGpuVendorId RHIGetPreferredAdapterVendor()
Definition RHIUtilities.cpp:804
RHI_API void RHIShutdownFlipTracking()
Definition RHIUtilities.cpp:631
bool IsSintFormat(EPixelFormat Format)
Definition RHIUtilities.h:92
void RHICompleteGraphEventOnFlip(uint64 PresentIndex, FGraphEventRef Event)
Definition RHIUtilities.h:741
RHI_API void RHISetFrameDebugInfo(uint64 PresentIndex, uint64 FrameIndex, uint64 InputTime)
Definition RHIUtilities.cpp:569
RHI_API void DecodeRenderTargetMode(ESimpleRenderTargetMode Mode, ERenderTargetLoadAction &ColorLoadAction, ERenderTargetStoreAction &ColorStoreAction, ERenderTargetLoadAction &DepthLoadAction, ERenderTargetStoreAction &DepthStoreAction, ERenderTargetLoadAction &StencilLoadAction, ERenderTargetStoreAction &StencilStoreAction, FExclusiveDepthStencil DepthStencilUsage)
Definition RHIUtilities.cpp:729
RHI_API float RHIGetFrameTime()
Definition RHIUtilities.cpp:626
RHI_API bool RHIGetSyncAllowVariable()
Definition RHIUtilities.cpp:553
RHI_API void RHIGetPresentThresholds(float &OutTopPercent, float &OutBottomPercent)
Definition RHIUtilities.cpp:558
bool IsUintFormat(EPixelFormat Format)
Definition RHIUtilities.h:72
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition IConsoleManager.h:1397
Definition RHIUtilities.h:707
static RHI_API void DumpResourceTransition(const FName &ResourceName, const ERHIAccess TransitionType)
Definition RHIUtilities.cpp:46
Definition RHIResources.h:409
Definition NameTypes.h:617
Definition RHICommandList.h:455
void * LockBuffer(FRHIBuffer *Buffer, uint32 Offset, uint32 SizeRHI, EResourceLockMode LockMode)
Definition RHICommandList.h:747
FBufferRHIRef CreateBuffer(const FRHIBufferCreateDesc &CreateDesc)
Definition RHICommandList.h:800
void UnlockBuffer(FRHIBuffer *Buffer)
Definition RHICommandList.h:755
FUnorderedAccessViewRHIRef CreateUnorderedAccessView(FRHIBuffer *Buffer, FRHIViewDesc::FBufferUAV::FInitializer const &ViewDesc)
Definition RHICommandList.h:989
FTextureRHIRef CreateTexture(const FRHITextureCreateDesc &CreateDesc)
Definition RHICommandList.h:941
FRHIBufferInitializer CreateBufferInitializer(const FRHIBufferCreateDesc &CreateDesc)
Definition RHICommandList.h:792
FShaderResourceViewRHIRef CreateShaderResourceView(FRHIBuffer *Buffer, FRHIViewDesc::FBufferSRV::FInitializer const &ViewDesc)
Definition RHICommandList.h:975
Definition RHICommandList.h:3819
void BeginRenderPass(const FRHIRenderPassInfo &InInfo, const TCHAR *Name)
Definition RHICommandList.h:4259
void CopyTexture(FRHITexture *SourceTextureRHI, FRHITexture *DestTextureRHI, const FRHICopyTextureInfo &CopyInfo)
Definition RHICommandList.h:4213
void EndRenderPass()
Definition RHICommandList.h:4291
RHI_API void Transition(TArrayView< const FRHITransitionInfo > Infos, ERHITransitionCreateFlags CreateFlags=ERHITransitionCreateFlags::None)
Definition RHICommandList.cpp:1947
Definition RHIResources.h:2153
uint32 GetNumSamples() const
Definition RHIResources.h:2347
Definition ResourceArray.h:102
Definition IConsoleManager.h:1792
UE_FORCEINLINE_HINT void SafeRelease()
Definition RefCounting.h:599
U16 Index
Definition radfft.cpp:71
Definition RHIUtilities.h:495
FByteAddressBuffer()=default
void Initialize(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 InNumBytes, EBufferUsageFlags AdditionalUsage=EBufferUsageFlags::None)
Definition RHIUtilities.h:502
FShaderResourceViewRHIRef SRV
Definition RHIUtilities.h:497
FBufferRHIRef Buffer
Definition RHIUtilities.h:496
void Release()
Definition RHIUtilities.h:533
void Initialize(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, TConstArrayView< TElement > InData)
Definition RHIUtilities.h:517
uint32 NumBytes
Definition RHIUtilities.h:498
Definition RHIUtilities.h:560
void Unlock(FRHICommandListBase &RHICmdList)
Definition RHIUtilities.h:599
void Lock(FRHICommandListBase &RHICmdList)
Definition RHIUtilities.h:589
FDynamicReadBuffer()
Definition RHIUtilities.h:565
void Initialize(FRHICommandListBase &RHICmdList, const TCHAR *DebugName, uint32 BytesPerElement, uint32 NumElements, EPixelFormat Format, EBufferUsageFlags AdditionalUsage=BUF_None)
Definition RHIUtilities.h:575
uint8 * MappedBuffer
Definition RHIUtilities.h:562
virtual ~FDynamicReadBuffer()
Definition RHIUtilities.h:570
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
Definition RHIResources.h:1417
static FRHIBufferCreateDesc CreateStructured(const TCHAR *InDebugName)
Definition RHIResources.h:1470
FRHIBufferCreateDesc & SetInitActionInitializer()
Definition RHIResources.h:1542
FRHIBufferCreateDesc & SetInitActionResourceArray(FResourceArrayUploadInterface *InInitialData)
Definition RHIResources.h:1546
FRHIBufferCreateDesc & SetInitialState(ERHIAccess InInitialState)
Definition RHIResources.h:1528
static FRHIBufferCreateDesc CreateVertex(const TCHAR *InDebugName)
Definition RHIResources.h:1438
FRHIBufferCreateDesc & SetOwnerName(FName InOwnerName)
Definition RHIResources.h:1532
FRHIBufferCreateDesc & AddUsage(EBufferUsageFlags InUsage)
Definition RHIResources.h:1524
FRHIBufferCreateDesc & SetClassName(FName InClassName)
Definition RHIResources.h:1531
Definition RHIBufferInitializer.h:12
Definition RHICommandList.h:183
Definition DynamicRHI.h:49
Definition RHIResources.h:5250
FRHITexture * RenderTarget
Definition RHIResources.h:5251
Definition RHIResources.h:5260
FRHITexture * DepthStencilTarget
Definition RHIResources.h:5261
Definition RHIResources.h:5248
Definition RHIResources.h:1938
FRHITextureCreateDesc & SetFlags(ETextureCreateFlags InFlags)
Definition RHIResources.h:2063
FRHITextureCreateDesc & SetInitActionBulkData(FResourceBulkDataInterface *InBulkData)
Definition RHIResources.h:2108
static FRHITextureCreateDesc Create2D(const TCHAR *InDebugName)
Definition RHIResources.h:1944
static FRHITextureCreateDesc Create3D(const TCHAR *InDebugName)
Definition RHIResources.h:1954
Definition RHITransition.h:119
static FBufferUAV::FInitializer CreateBufferUAV()
Definition RHIResources.h:3129
static FTextureUAV::FInitializer CreateTextureUAV()
Definition RHIResources.h:3139
static FTextureSRV::FInitializer CreateTextureSRV()
Definition RHIResources.h:3134
static FBufferSRV::FInitializer CreateBufferSRV()
Definition RHIResources.h:3124
Definition RHIUtilities.h:423
FUnorderedAccessViewRHIRef UAV
Definition RHIUtilities.h:425
FRWBufferStructured()
Definition RHIUtilities.h:429
FBufferRHIRef Buffer
Definition RHIUtilities.h:424
void Initialize(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 BytesPerElement, uint32 NumElements, EBufferUsageFlags AdditionalUsage=EBufferUsageFlags::None, bool bUseUavCounter=false, bool bAppendBuffer=false, ERHIAccess InitialState=ERHIAccess::UAVMask)
Definition RHIUtilities.h:436
void InitializeWithData(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 BytesPerElement, uint32 NumElements, LAMBDA &&InitializerFunction, EBufferUsageFlags AdditionalUsage=EBufferUsageFlags::None, bool bUseUavCounter=false, bool bAppendBuffer=false, ERHIAccess InitialState=ERHIAccess::UAVMask)
Definition RHIUtilities.h:459
~FRWBufferStructured()
Definition RHIUtilities.h:431
uint32 NumBytes
Definition RHIUtilities.h:427
FShaderResourceViewRHIRef SRV
Definition RHIUtilities.h:426
void Release()
Definition RHIUtilities.h:485
Definition RHIUtilities.h:181
void Initialize(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 BytesPerElement, uint32 NumElements, EPixelFormat Format, EBufferUsageFlags AdditionalUsage=BUF_None, FResourceArrayUploadInterface *InResourceArray=nullptr)
Definition RHIUtilities.h:270
void InitializeWithData(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 BytesPerElement, uint32 NumElements, EPixelFormat Format, ERHIAccess InResourceState, EBufferUsageFlags AdditionalUsage, LAMBDA &&InitializerFunction)
Definition RHIUtilities.h:276
void Initialize(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 BytesPerElement, uint32 NumElements, EPixelFormat Format, ERHIAccess InResourceState, EBufferUsageFlags AdditionalUsage=BUF_None, FResourceArrayUploadInterface *InResourceArray=nullptr)
Definition RHIUtilities.h:237
FShaderResourceViewRHIRef SRV
Definition RHIUtilities.h:184
FRWBuffer(FRWBuffer &&Other)
Definition RHIUtilities.h:193
~FRWBuffer()
Definition RHIUtilities.h:231
FRWBuffer & operator=(const FRWBuffer &Other)
Definition RHIUtilities.h:221
FName OwnerName
Definition RHIUtilities.h:187
FRWBuffer()
Definition RHIUtilities.h:189
FRWBuffer & operator=(FRWBuffer &&Other)
Definition RHIUtilities.h:210
FName ClassName
Definition RHIUtilities.h:186
FRWBuffer(const FRWBuffer &Other)
Definition RHIUtilities.h:202
FUnorderedAccessViewRHIRef UAV
Definition RHIUtilities.h:183
void Release()
Definition RHIUtilities.h:307
uint32 NumBytes
Definition RHIUtilities.h:185
FBufferRHIRef Buffer
Definition RHIUtilities.h:182
Definition RHIUtilities.h:543
void Initialize(FRHICommandListBase &RHICmdList, const TCHAR *DebugName, uint32 InNumBytes, EBufferUsageFlags AdditionalUsage=BUF_None)
Definition RHIUtilities.h:546
void Release()
Definition RHIUtilities.h:552
FUnorderedAccessViewRHIRef UAV
Definition RHIUtilities.h:544
Definition RHIUtilities.h:361
void Release()
Definition RHIUtilities.h:413
uint32 NumBytes
Definition RHIUtilities.h:364
FShaderResourceViewRHIRef SRV
Definition RHIUtilities.h:363
void Initialize(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 BytesPerElement, uint32 NumElements, EPixelFormat Format, EBufferUsageFlags AdditionalUsage=BUF_None, FResourceArrayUploadInterface *InResourceArray=nullptr)
Definition RHIUtilities.h:368
FBufferRHIRef Buffer
Definition RHIUtilities.h:362
void InitializeWithData(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 BytesPerElement, uint32 NumElements, EPixelFormat Format, EBufferUsageFlags AdditionalUsage, LAMBDA &&InitializerFunction)
Definition RHIUtilities.h:391
FReadBuffer()
Definition RHIUtilities.h:366
Definition ResourceArray.h:31
Definition ResourceArray.h:10
Definition RHIUtilities.h:115
static constexpr ETextureCreateFlags DefaultTextureInitFlag
Definition RHIUtilities.h:128
FTextureRWBuffer()=default
void Initialize3D(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 BytesPerElement, uint32 SizeX, uint32 SizeY, uint32 SizeZ, EPixelFormat Format, ETextureCreateFlags Flags=DefaultTextureInitFlag)
Definition RHIUtilities.h:150
FShaderResourceViewRHIRef SRV
Definition RHIUtilities.h:118
FUnorderedAccessViewRHIRef UAV
Definition RHIUtilities.h:117
void Release()
Definition RHIUtilities.h:170
uint32 NumBytes
Definition RHIUtilities.h:119
void Initialize2D(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 BytesPerElement, uint32 SizeX, uint32 SizeY, EPixelFormat Format, ETextureCreateFlags Flags=DefaultTextureInitFlag)
Definition RHIUtilities.h:130
~FTextureRWBuffer()
Definition RHIUtilities.h:123
FTextureRHIRef Buffer
Definition RHIUtilities.h:116
Definition RHIUtilities.h:318
void Release()
Definition RHIUtilities.h:351
~FTextureReadBuffer2D()
Definition RHIUtilities.h:324
FTextureRHIRef Buffer
Definition RHIUtilities.h:319
FTextureReadBuffer2D()=default
static constexpr ETextureCreateFlags DefaultTextureInitFlag
Definition RHIUtilities.h:329
uint32 NumBytes
Definition RHIUtilities.h:321
void Initialize(FRHICommandListBase &RHICmdList, const TCHAR *InDebugName, uint32 BytesPerElement, uint32 SizeX, uint32 SizeY, EPixelFormat Format, ETextureCreateFlags Flags=DefaultTextureInitFlag, FResourceBulkDataInterface *InBulkData=nullptr)
Definition RHIUtilities.h:331
FShaderResourceViewRHIRef SRV
Definition RHIUtilities.h:320
TConsoleVariableData< int32 > * FindTConsoleVariableDataInt(const TCHAR *Name) const
Definition IConsoleManager.h:1203
static IConsoleManager & Get()
Definition IConsoleManager.h:1270