UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RHIUtilities.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
7#include "HAL/UnrealMemory.h"
11#include "UObject/NameTypes.h"
12#include "Logging/LogMacros.h"
13#include "HAL/IConsoleManager.h"
14#include "RHIDefinitions.h"
15#include "RHICommandList.h"
16#include "Tasks/Task.h"
17
19{
20 switch (Format)
21 {
22 case PF_DXT1:
23 case PF_BC4:
24 case PF_ETC1:
25 case PF_ETC2_RGB:
26 case PF_ETC2_R11_EAC:
27 return PF_R32G32_UINT;
28
29 case PF_DXT3:
30 case PF_DXT5:
31 case PF_BC5:
32 case PF_BC6H:
33 case PF_BC7:
34 case PF_ETC2_RGBA:
37 }
38
39 return Format;
40}
41
43{
44 switch (Format)
45 {
46 case PF_R5G6B5_UNORM:
49 return true;
50
51 default:
52 break;
53 }
54 return false;
55}
56
58{
59 switch (Format)
60 {
63 case PF_G16R16_SNORM:
64 return true;
65
66 default:
67 break;
68 }
69 return false;
70}
71
73{
74 switch (Format)
75 {
76 case PF_R32_UINT:
77 case PF_R16_UINT:
80 case PF_R16G16_UINT:
81 case PF_R8_UINT:
83 case PF_R32G32_UINT:
84 return true;
85
86 default:
87 break;
88 }
89 return false;
90}
91
93{
94 switch (Format)
95 {
96 case PF_R32_SINT:
97 case PF_R16_SINT:
99 return true;
100
101 default:
102 break;
103 }
104 return false;
105}
106
109
112
115{
120
121 FTextureRWBuffer() = default;
122
124 {
125 Release();
126 }
127
129
131 {
132 NumBytes = SizeX * SizeY * BytesPerElement;
133
134 const FRHITextureCreateDesc Desc =
136 .SetFlags(Flags);
137
138 Buffer = RHICmdList.CreateTexture(Desc);
139 UAV = RHICmdList.CreateUnorderedAccessView(Buffer, FRHIViewDesc::CreateTextureUAV().SetDimensionFromTexture(Buffer));
140 SRV = RHICmdList.CreateShaderResourceView(Buffer, FRHIViewDesc::CreateTextureSRV().SetDimensionFromTexture(Buffer));
141 }
142
143 UE_DEPRECATED(5.7, "A command list argument is now required")
145 {
147 Initialize2D(RHICmdList, InDebugName, BytesPerElement, SizeX, SizeY, Format, Flags);
148 }
149
151 {
152 NumBytes = SizeX * SizeY * SizeZ * BytesPerElement;
153
154 const FRHITextureCreateDesc Desc =
156 .SetFlags(Flags);
157
158 Buffer = RHICmdList.CreateTexture(Desc);
159 UAV = RHICmdList.CreateUnorderedAccessView(Buffer, FRHIViewDesc::CreateTextureUAV().SetDimensionFromTexture(Buffer));
160 SRV = RHICmdList.CreateShaderResourceView(Buffer, FRHIViewDesc::CreateTextureSRV().SetDimensionFromTexture(Buffer));
161 }
162
163 UE_DEPRECATED(5.7, "A command list argument is now required")
165 {
167 Initialize3D(RHICmdList, InDebugName, BytesPerElement, SizeX, SizeY, SizeZ, Format, Flags);
168 }
169
170 void Release()
171 {
172 NumBytes = 0;
176 }
177};
178
181{
186 FName ClassName = NAME_None; // The owner class of Buffer used for Insight asset metadata tracing, set it before calling Initialize()
187 FName OwnerName = NAME_None; // The owner name used for Insight asset metadata tracing, set it before calling Initialize()
188
190 : NumBytes(0)
191 {}
192
198 {
199 Other.NumBytes = 0;
200 }
201
204 , UAV(Other.UAV)
205 , SRV(Other.SRV)
207 {
208 }
209
211 {
212 Buffer = MoveTemp(Other.Buffer);
213 UAV = MoveTemp(Other.UAV);
214 SRV = MoveTemp(Other.SRV);
215 NumBytes = Other.NumBytes;
216 Other.NumBytes = 0;
217
218 return *this;
219 }
220
222 {
223 Buffer = Other.Buffer;
224 UAV = Other.UAV;
225 SRV = Other.SRV;
226 NumBytes = Other.NumBytes;
227
228 return *this;
229 }
230
232 {
233 Release();
234 }
235
236 // @param AdditionalUsage passed down to RHICreateBuffer(), get combined with "BUF_UnorderedAccess | BUF_ShaderResource" e.g. BUF_Static
238 {
239 // Provide a debug name if using Fast VRAM so the allocators diagnostics will work
241
242 NumBytes = BytesPerElement * NumElements;
243
244 FRHIBufferCreateDesc CreateDesc =
250
251 if (InResourceArray)
252 {
254 }
255
256 Buffer = RHICmdList.CreateBuffer(CreateDesc);
257 UAV = RHICmdList.CreateUnorderedAccessView(
258 Buffer,
261 .SetFormat(Format));
262
263 SRV = RHICmdList.CreateShaderResourceView(
264 Buffer,
267 .SetFormat(Format));
268 }
269
274
275 template<typename LAMBDA>
306
307 void Release()
308 {
309 NumBytes = 0;
313 }
314};
315
318{
322
325 {
326 Release();
327 }
328
330
332 {
333 NumBytes = SizeX * SizeY * BytesPerElement;
334
335 const FRHITextureCreateDesc Desc =
339
340 Buffer = RHICmdList.CreateTexture(Desc);
341 SRV = RHICmdList.CreateShaderResourceView(Buffer, FRHIViewDesc::CreateTextureSRV().SetDimensionFromTexture(Buffer));
342 }
343
344 UE_DEPRECATED(5.7, "A command list argument is now required")
346 {
348 Initialize(RHICmdList, InDebugName, BytesPerElement, SizeX, SizeY, Format, Flags, InBulkData);
349 }
350
351 void Release()
352 {
353 NumBytes = 0;
356 }
357};
358
361{
365
367
389
390 template<typename LAMBDA>
412
413 void Release()
414 {
415 NumBytes = 0;
418 }
419};
420
423{
428
430
432 {
433 Release();
434 }
435
436 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)
437 {
438 // Provide a debug name if using Fast VRAM so the allocators diagnostics will work
440
441 NumBytes = BytesPerElement * NumElements;
442
443 const FRHIBufferCreateDesc CreateDesc =
446 .SetInitialState(InitialState);
447
448 Buffer = RHICmdList.CreateBuffer(CreateDesc);
449 UAV = RHICmdList.CreateUnorderedAccessView(
450 Buffer,
452 .SetTypeFromBuffer(Buffer)
453 .SetAtomicCounter(bUseUavCounter)
454 .SetAppendBuffer(bAppendBuffer));
455 SRV = RHICmdList.CreateShaderResourceView(Buffer, FRHIViewDesc::CreateBufferSRV().SetTypeFromBuffer(Buffer));
456 }
457
458 template<typename LAMBDA>
459 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)
460 {
461 // Provide a debug name if using Fast VRAM so the allocators diagnostics will work
463
464 NumBytes = BytesPerElement * NumElements;
465
466 const FRHIBufferCreateDesc CreateDesc =
469 .SetInitialState(InitialState)
471
474 Buffer = Initializer.Finalize();
475
476 UAV = RHICmdList.CreateUnorderedAccessView(
477 Buffer,
479 .SetTypeFromBuffer(Buffer)
480 .SetAtomicCounter(bUseUavCounter)
481 .SetAppendBuffer(bAppendBuffer));
482 SRV = RHICmdList.CreateShaderResourceView(Buffer, FRHIViewDesc::CreateBufferSRV().SetTypeFromBuffer(Buffer));
483 }
484
485 void Release()
486 {
487 NumBytes = 0;
491 }
492};
493
495{
499
501
515
516 template<typename TElement>
532
533 void Release()
534 {
535 NumBytes = 0;
538 }
539};
540
558
560{
563
566 : MappedBuffer(nullptr)
567 {
568 }
569
571 {
572 Release();
573 }
574
575 void Initialize(FRHICommandListBase& RHICmdList, const TCHAR* DebugName, uint32 BytesPerElement, uint32 NumElements, EPixelFormat Format, EBufferUsageFlags AdditionalUsage = BUF_None)
576 {
577 // Commented out due to the hack made in FGlobalDynamicReadBuffer::AllocateInternal to use static in D3D11.
578 //ensure(
579 // EnumHasAnyFlags(AdditionalUsage, BUF_Dynamic | BUF_Volatile | BUF_Static) && // buffer should be Dynamic or Volatile or Static
580 // EnumHasAnyFlags(AdditionalUsage, BUF_Dynamic) != EnumHasAnyFlags(AdditionalUsage, BUF_Volatile) // buffer should not be both
581 // );
582
583 FReadBuffer::Initialize(RHICmdList, DebugName, BytesPerElement, NumElements, Format, AdditionalUsage);
584 }
585
589 void Lock(FRHICommandListBase& RHICmdList)
590 {
591 check(MappedBuffer == nullptr);
594 }
595
599 void Unlock(FRHICommandListBase& RHICmdList)
600 {
603 RHICmdList.UnlockBuffer(Buffer);
604 MappedBuffer = nullptr;
605 }
606};
607
613
615{
617 int32 TransitionIndex = 0;
618 uint32 NumColorRenderTargets = RPInfo.GetNumColorRenderTargets();
619 for (uint32 Index = 0; Index < NumColorRenderTargets; Index++)
620 {
621 const FRHIRenderPassInfo::FColorEntry& ColorRenderTarget = RPInfo.ColorRenderTargets[Index];
622 if (ColorRenderTarget.RenderTarget != nullptr)
623 {
624 Transitions[TransitionIndex] = FRHITransitionInfo(ColorRenderTarget.RenderTarget, ERHIAccess::Unknown, ERHIAccess::RTV);
625 TransitionIndex++;
626 }
627 }
628
629 const FRHIRenderPassInfo::FDepthStencilEntry& DepthStencilTarget = RPInfo.DepthStencilRenderTarget;
630 if (DepthStencilTarget.DepthStencilTarget != nullptr && (RPInfo.DepthStencilRenderTarget.ExclusiveDepthStencil.IsAnyWrite()))
631 {
633 }
634
635 RHICmdList.Transition(MakeArrayView(Transitions, TransitionIndex));
636}
637
639inline void ClearRenderTarget(FRHICommandList& RHICmdList, FRHITexture* Texture, uint32 MipIndex = 0, uint32 ArraySlice = 0)
640{
641 check(Texture);
642 const FIntPoint Extent = Texture->GetSizeXY();
644 Info.ColorRenderTargets[0].MipIndex = (uint8)MipIndex;
645 Info.ColorRenderTargets[0].ArraySlice = (int32)ArraySlice;
646 RHICmdList.BeginRenderPass(Info, TEXT("ClearRenderTarget"));
647 RHICmdList.EndRenderPass();
648}
649
651{
652 check(SrcTexture && DstTexture);
653 check(SrcTexture->GetNumSamples() == DstTexture->GetNumSamples());
654
655 if (SrcTexture == DstTexture)
656 {
657 RHICmdList.Transition({
659 });
660 return;
661 }
662
663 RHICmdList.Transition({
666 });
667
668 RHICmdList.CopyTexture(SrcTexture, DstTexture, Info);
669
670 RHICmdList.Transition({
673 });
674}
675
682inline uint32 GetVertexCountForPrimitiveCount(uint32 NumPrimitives, uint32 PrimitiveType)
683{
684 static_assert(PT_Num == 6, "This function needs to be updated");
685 uint32 Factor = (PrimitiveType == PT_TriangleList) ? 3 : (PrimitiveType == PT_LineList) ? 2 : (PrimitiveType == PT_RectList) ? 3 : 1;
686 uint32 Offset = (PrimitiveType == PT_TriangleStrip) ? 2 : 0;
687
688 return NumPrimitives * Factor + Offset;
689
690}
691
693{
694 static const auto CVar = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.MaxAnisotropy"));
695 int32 CVarValue = CVar->GetValueOnAnyThread(); // this is sometimes called from main thread during initialization of static RHI states
696
698}
699
700#if UE_BUILD_SHIPPING || UE_BUILD_TEST
701#define ENABLE_TRANSITION_DUMP 0
702#else
703#define ENABLE_TRANSITION_DUMP 1
704#endif
705
707{
708public:
709 RHI_API static void DumpResourceTransition(const FName& ResourceName, const ERHIAccess TransitionType);
710
711private:
712 static void DumpTransitionForResourceHandler();
713
714 static TAutoConsoleVariable<FString> CVarDumpTransitionsForResource;
715 static FAutoConsoleVariableSink CVarDumpTransitionsForResourceSink;
716 static FName DumpTransitionForResource;
717};
718
719#if ENABLE_TRANSITION_DUMP
720#define DUMP_TRANSITION(ResourceName, TransitionType) FDumpTransitionsHelper::DumpResourceTransition(ResourceName, TransitionType);
721#else
722#define DUMP_TRANSITION(ResourceName, TransitionType)
723#endif
724
725extern RHI_API void SetDepthBoundsTest(FRHICommandList& RHICmdList, float WorldSpaceDepthNear, float WorldSpaceDepthFar, const FMatrix& ProjectionMatrix);
726
729
731extern RHI_API float RHIGetSyncSlackMS();
732
735
737extern RHI_API bool RHIGetSyncAllowVariable();
738
740UE_DEPRECATED(5.4, "RHICompleteGraphEventOnFlip is replaced with RHITriggerTaskEventOnFlip")
742
743extern RHI_API void RHITriggerTaskEventOnFlip(uint64 PresentIndex, const UE::Tasks::FTaskEvent& TaskEvent);
744
746extern RHI_API void RHISetFrameDebugInfo(uint64 PresentIndex, uint64 FrameIndex, uint64 InputTime);
747
750
752extern RHI_API void RHIShutdownFlipTracking();
753
755extern RHI_API float RHIGetFrameTime();
756
757extern RHI_API void RHICalculateFrameTime();
758
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
#define TEXT(x)
Definition Platform.h:1272
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
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
bool IsValidRef(const FVertexBufferAndSRV &Buffer)
Definition GPUSkinVertexFactory.h:92
EPixelFormat
Definition PixelFormat.h:16
@ PF_R8G8B8A8_UINT
Definition PixelFormat.h:77
@ PF_R32G32_UINT
Definition PixelFormat.h:85
@ PF_B5G5R5A1_UNORM
Definition PixelFormat.h:89
@ PF_R16_SINT
Definition PixelFormat.h:50
@ PF_BC5
Definition PixelFormat.h:40
@ PF_R5G6B5_UNORM
Definition PixelFormat.h:53
@ PF_R16G16B16A16_SINT
Definition PixelFormat.h:52
@ PF_BC7
Definition PixelFormat.h:73
@ PF_ETC2_RGBA
Definition PixelFormat.h:64
@ PF_ETC2_RG11_EAC
Definition PixelFormat.h:87
@ PF_DXT3
Definition PixelFormat.h:23
@ PF_R8G8B8A8_SNORM
Definition PixelFormat.h:78
@ PF_R16G16B16A16_SNORM
Definition PixelFormat.h:80
@ PF_ETC2_R11_EAC
Definition PixelFormat.h:86
@ PF_DXT1
Definition PixelFormat.h:22
@ PF_R8_UINT
Definition PixelFormat.h:74
@ PF_G16R16_SNORM
Definition PixelFormat.h:95
@ PF_R16G16B16A16_UNORM
Definition PixelFormat.h:79
@ PF_R16G16_UINT
Definition PixelFormat.h:66
@ PF_R32_SINT
Definition PixelFormat.h:46
@ PF_R32_UINT
Definition PixelFormat.h:45
@ PF_R32G32B32A32_UINT
Definition PixelFormat.h:65
@ PF_BC4
Definition PixelFormat.h:56
@ PF_R16G16B16A16_UINT
Definition PixelFormat.h:51
@ PF_DXT5
Definition PixelFormat.h:24
@ PF_R16_UINT
Definition PixelFormat.h:49
@ PF_ETC1
Definition PixelFormat.h:62
@ PF_BC6H
Definition PixelFormat.h:72
@ PF_ETC2_RGB
Definition PixelFormat.h:63
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
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
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
static FRHICommandListImmediate & Get()
Definition RHICommandList.h:5522
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
Definition Task.h:236
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
Definition IntPoint.h:25