UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DynamicRHI.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4DynamicRHI.h: Dynamically bound Render Hardware Interface definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreTypes.h"
11#include "RHIContext.h"
12#include "RHIFeatureLevel.h"
13#include "RHIShaderLibrary.h"
15#include "MultiGPU.h"
18#include "Misc/EnumClassFlags.h"
20
25class FRHICommandList;
36struct FRHIResourceInfo;
40struct FRHIGPUMask;
43
46
69
70//UE_DEPRECATED(5.3, "Use the CreateShaderResourceView function that takes an FRHIBufferSRVCreateDesc.")
81
82
83/*
84* FRawBufferShaderResourceViewInitializer can be used to explicitly create a raw view for any buffer,
85* even if it was not created with EBufferUsageFlags::ByteAddressBuffer flag.
86* Can only be used if GRHIGlobals.SupportsRawViewsForAnyBuffer is set.
87*/
88//UE_DEPRECATED(5.3, "Use the CreateShaderResourceView function that takes an FRHIBufferSRVCreateDesc, and call SetRawAccess(true).")
97
98class FDynamicRHI;
99
101{
102public:
106
108
109private:
110 RHI_API virtual FRHIPooledRenderQuery AllocateQuery() override;
111 RHI_API virtual void ReleaseQuery(TRefCountPtr<FRHIRenderQuery>&& Query) override;
112
113 const ERenderQueryType QueryType;
114 uint32 AllocatedQueries = 0;
116 UE::FMutex QueriesMutex;
117};
118
120{
121 // The total size of the texture, in bytes.
123
124 // The required address alignment for the texture.
126};
127
129{
134
136 {
137 return Texture == Other.Texture
138 && FaceIndex == Other.FaceIndex
139 && ArrayIndex == Other.ArrayIndex
140 && MipIndex == Other.MipIndex;
141 }
143 {
144 return !(*this == Other);
145 }
146};
147
149{
151 {
152 FRHILockTextureArgs Result;
153
154 Result.Texture = InTexture;
155 Result.LockMode = InLockMode;
156 Result.MipIndex = InMipIndex;
157 Result.bLockWithinMiptail = bInLockWithinMiptail;
158 Result.bNeedsDefaultRHIFlush = bFlushRHIThread;
159
160 return Result;
161 }
163 {
164 FRHILockTextureArgs Result;
165
166 Result.Texture = InTexture;
167 Result.LockMode = InLockMode;
168 Result.ArrayIndex = InArrayIndex;
169 Result.MipIndex = InMipIndex;
170 Result.bLockWithinMiptail = bInLockWithinMiptail;
171
172 return Result;
173 }
175 {
176 FRHILockTextureArgs Result;
177
178 Result.Texture = InTexture;
179 Result.LockMode = InLockMode;
180 Result.FaceIndex = InFaceIndex;
181 Result.ArrayIndex = InArrayIndex;
182 Result.MipIndex = InMipIndex;
183 Result.bLockWithinMiptail = bInLockWithinMiptail;
184
185 return Result;
186 }
187
189 bool bLockWithinMiptail = false;
191
192protected:
193 // Default constructor restricted to use in static functions
195};
196
198{
199 void* Data = nullptr;
202};
203
206{
207public:
209
212
214 virtual void Init() = 0;
215
217 virtual void PostInit() {}
218
220 virtual void Shutdown() = 0;
221
222 virtual const TCHAR* GetName() = 0;
223
225 virtual FDynamicRHI* GetNonValidationRHI() { return this; }
226
232
234
236
238 {
239 // Increments once per call to RHIEndFrame
241
242 #if WITH_RHI_BREADCRUMBS
243 const TRHIPipelineArray<FRHIBreadcrumbNode*>& GPUBreadcrumbs;
244 #endif
245 #if STATS
247 #endif
248 };
249 virtual void RHIEndFrame(const FRHIEndFrameArgs& Args) = 0;
250
251 // FlushType: Thread safe
253
254 // FlushType: Thread safe
256
257 // FlushType: Thread safe
259
260 // FlushType: Thread safe
262
263 // FlushType: Wait RHI Thread
265
266 // FlushType: Wait RHI Thread
268
269 // FlushType: Wait RHI Thread
271
272 // FlushType: Wait RHI Thread
274
275 // FlushType: Wait RHI Thread
280
281 // FlushType: Wait RHI Thread
286
287 // Some RHIs can have pending messages/logs for error tracking, or debug modes
288 virtual void FlushPendingLogs() {}
289
290 // FlushType: Wait RHI Thread
292
293 // FlushType: Wait RHI Thread
298
306 // FlushType: Must be Thread-Safe.
307 virtual FRHIShaderLibraryRef RHICreateShaderLibrary(EShaderPlatform Platform, FString const& FilePath, FString const& Name)
308 {
309 return nullptr;
310 }
311
313
314 //
315 // Called by the thread recording an RHI command list (via RHICmdList.WriteGPUFence()).
316 // Allows the platform RHI to perform operations on the GPU fence at the top-of-pipe.
317 // Default implementation just enqueues an RHI command to call IRHIComputeContext::WriteGPUFence().
318 //
320
321 virtual void RHICreateTransition(FRHITransition* Transition, const FRHITransitionCreateInfo& CreateInfo)
322 {
323 }
324
325 virtual void RHIReleaseTransition(FRHITransition* Transition)
326 {
327 }
328
333
338 // FlushType: Thread safe.
343
354
359 RHI_API virtual void RHIUnlockStagingBuffer(FRHIStagingBuffer* StagingBuffer);
360
372
378 RHI_API virtual void UnlockStagingBuffer_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHIStagingBuffer* StagingBuffer);
379
389 // FlushType: Thread safe, but varies depending on the RHI
391
392#if PLATFORM_SUPPORTS_MESH_SHADERS && PLATFORM_USE_FALLBACK_PSO
401 // FlushType: Thread safe, but varies depending on the RHI
403#endif
404
414 // FlushType: Thread safe
416
417 // FlushType: Thread safe
419
425
433 // FlushType: Thread safe, but varies depending on the RHI
435
436 virtual void RHIUpdateUniformBuffer(FRHICommandListBase& RHICmdList, FRHIUniformBuffer* UniformBufferRHI, const void* Contents) = 0;
437
444
446
449
450 // FlushType: Flush RHI Thread
451 RHI_API virtual void RHIUnlockBuffer(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer);
452 RHI_API virtual void RHIUnlockBufferMGPU(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer, uint32 GPUIndex);
453
455
456#if ENABLE_LOW_LEVEL_MEM_TRACKER || UE_MEMORY_TRACE_ENABLED
457 virtual void RHIUpdateAllocationTags(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer) = 0;
458#endif
459
468 // FlushType: Thread safe
470
475 // FlushType: Thread safe
477
482 // FlushType: Thread safe
484
496 // FlushType: Flush Immediate
497 virtual bool RHIGetTextureMemoryVisualizeData(FColor* TextureData, int32 SizeX, int32 SizeY, int32 Pitch, int32 PixelSize) = 0;
498
499 // Create a texture initializer, used for creating a RHITexture with data.
500 [[nodiscard]]
502
517 // FlushType: Thread safe
519
520
521
524
525 // SRV / UAV creation functions
528
533
537
544 // FlushType: Thread safe
545 virtual uint32 RHIComputeMemorySize(FRHITexture* TextureRHI) = 0;
546
562 // FlushType: Flush RHI Thread
563 // NP: Note that no RHI currently implements this as an async call, we should simplify the API.
565
567 virtual void RHIUnlockTexture(FRHICommandListImmediate& RHICmdList, const FRHILockTextureArgs& Arguments) = 0;
568
577 virtual void RHIUpdateTexture2D(FRHICommandListBase& RHICmdList, FRHITexture* Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D& UpdateRegion, uint32 SourcePitch, const uint8* SourceData) = 0;
578
587 virtual void RHIUpdateFromBufferTexture2D(FRHICommandListBase& RHICmdList, FRHITexture* Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D& UpdateRegion, uint32 SourcePitch, FRHIBuffer* Buffer, uint32 BufferOffset)
588 {
589 checkNoEntry();
590 }
591
601 virtual void RHIUpdateTexture3D(FRHICommandListBase& RHICmdList, FRHITexture* Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D& UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8* SourceData) = 0;
602
604 RHI_API virtual void RHIBindDebugLabelName(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer, const TCHAR* Name);
605 RHI_API virtual void RHIBindDebugLabelName(FRHICommandListBase& RHICmdList, FRHIUnorderedAccessView* UnorderedAccessViewRHI, const TCHAR* Name);
606
611 // FlushType: Flush Immediate (seems wrong)
613
614 // Default fallback; will not work for non-8-bit surfaces and it's extremely slow.
616
622#if PLATFORM_IOS
624#endif // PLATFORM_IOS
625
627 // FlushType: Flush Immediate (seems wrong)
628 virtual void RHIMapStagingSurface(FRHITexture* Texture, FRHIGPUFence* Fence, void*& OutData, int32& OutWidth, int32& OutHeight, uint32 GPUIndex = 0) = 0;
629
631 // FlushType: Flush Immediate (seems wrong)
632 virtual void RHIUnmapStagingSurface(FRHITexture* Texture, uint32 GPUIndex = 0) = 0;
633
634 // FlushType: Flush Immediate (seems wrong)
635 virtual void RHIReadSurfaceFloatData(FRHITexture* Texture, FIntRect Rect, TArray<FFloat16Color>& OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex) = 0;
636
637 // FlushType: Flush Immediate (seems wrong)
639
640 // FlushType: Flush Immediate (seems wrong)
642
643 // FlushType: Flush Immediate (seems wrong)
645
646 // FlushType: Wait RHI Thread
648
651
654
655 // CAUTION: Even though this is marked as threadsafe, it is only valid to call from the render thread. It is need not be threadsafe on platforms that do not support or aren't using an RHIThread
656 // FlushType: Thread safe, but varies by RHI
658
659 // FlushType: Thread safe
661 {
662 return 0; // By default, viewport need to be rendered on GPU0.
663 }
664
665 // With RHI thread, this is the current backbuffer from the perspective of the render thread.
666 // FlushType: Thread safe
668
673
675 {
676 return 0;
677 }
678
680 {
681 return 0;
682 }
683
685 {
686 checkNoEntry();
687 }
688
690 {
691 checkNoEntry();
692 return nullptr;
693 }
694
698
699 // Compute the hash of the state components of the PSO initializer for PSO Precaching (only hash data relevant for the RHI specific PSO)
701
702 // Compute the hash of the PSO initializer for PSO Precaching (only hash data relevant for the RHI specific PSO)
704
705 // Check if PSO Initializers are the same used during PSO Precaching (only compare data relevant for the RHI specific PSO)
707
708 // Only relevant with an RHI thread, this advances the backbuffer for the purpose of GetViewportBackBuffer
709 // FlushType: Thread safe
711
712 //
713 // Acquires or releases ownership of the platform-specific rendering context for the calling thread.
714 // Only required by OpenGL RHI.
715 //
718
719 // Flush driver resources. Typically called when switching contexts/threads
720 // FlushType: Flush RHI Thread
721 virtual void RHIFlushResources() = 0;
722
723 // must be called from the main thread.
724 // FlushType: Thread safe
725 virtual FViewportRHIRef RHICreateViewport(void* WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) = 0;
726
727 // must be called from the main thread.
728 // FlushType: Thread safe
729 virtual void RHIResizeViewport(FRHIViewport* Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen) = 0;
730
731 virtual void RHIResizeViewport(FRHIViewport* Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)
732 {
733 // Default implementation for RHIs that cannot change formats on the fly
734 RHIResizeViewport(Viewport, SizeX, SizeY, bIsFullscreen);
735 }
736
737 // Return preferred pixel format if given format is unsupported.
742
743 // Tests the viewport to see if its HDR status has changed. This is usually tested after a window has been moved
744 RHI_API virtual void RHICheckViewportHDRStatus(FRHIViewport* Viewport);
745
746 virtual void RHIHandleDisplayChange() {}
747
748 // must be called from the main thread.
749 // FlushType: Thread safe
750 virtual void RHITick(float DeltaTime) = 0;
751
752 // Blocks the CPU until the GPU catches up and goes idle.
753 // FlushType: Flush Immediate (seems wrong)
754 virtual void RHIBlockUntilGPUIdle() = 0;
755
756 // Tells the RHI we're about to suspend it
757 virtual void RHIBeginSuspendRendering() {};
758
759 // Operations to suspend title rendering and yield control to the system
760 // FlushType: Thread safe
761 virtual void RHISuspendRendering() {};
762
763 // FlushType: Thread safe
764 virtual void RHIResumeRendering() {};
765
766 // FlushType: Flush Immediate
767 virtual bool RHIIsRenderingSuspended() { return false; };
768
777 // FlushType: Thread safe
779
785 // FlushType: Thread safe
786 virtual void RHIGetSupportedResolution(uint32& Width, uint32& Height) = 0;
787
794 // FlushType: Wait RHI Thread
796
802 // FlushType: Wait RHI Thread
804
808 // FlushType: Flush RHI Thread
809 virtual void* RHIGetNativeDevice() = 0;
810
814 // FlushType: Flush RHI Thread
816 {
817 // Currently only exists on Vulkan, so no need to force every backend to implement this.
818 return nullptr;
819 }
820
824 // FlushType: Flush RHI Thread
826 {
827 return nullptr;
828 }
829
833 // FlushType: Flush RHI Thread
835 {
836 return nullptr;
837 }
838
842 // FlushType: Flush RHI Thread
843 virtual void* RHIGetNativeInstance() = 0;
844
848 // FlushType: Not Thread Safe!
850 {
851 return nullptr;
852 }
853
854
855 // FlushType: Thread safe
857
858 //
859 // Retrieves a new command context to begin the recording of a new platform command list.
860 // The returned context is specific to the given pipeline. It can later be converted to an IRHIPlatformCommandList
861 // by calling RHIFinalizeContext(), and then submitted to the GPU by calling RHISubmitCommandLists().
862 //
863 // Called by parallel worker threads, and the render thread. Platform implementations must be thread safe.
864 //
866
867 //
868 // Retrieves a new command context to begin the recording of a new platform command list.
869 // The returned context is only for graphics pipelines and is used in conjunction with SubCommandList
870 // The returned context is expected to be in a state to execute draw commands immediately, i.e. renderpasses must be created and state set.
871 //
872 // Called by parallel worker threads, and the render thread. Platform implementations must be thread safe.
873 //
881
883 {
884 return nullptr;
885 };
886
887 //
888 // Finalizes (i.e. closes) the specified command context, returning the completed platform command list object.
889 // The returned command list can later be submitted to the GPU by calling RHISubmitCommandLists().
890 //
891 // The context may be destroyed or recycled, so should not be used again. Call RHIGetCommandContext() to get a new context.
892 //
893 // Called by parallel worker threads, and the RHI thread. Platform implementations must be thread safe.
894 //
900
901 //
902 // Close the current translate chain or ignore if we are not finalizing
903 //
904 #if ENABLE_RHI_VALIDATION
905 virtual
906 #endif
908 {
909 if(bShouldFinalize)
910 {
912 }
913 }
914
916
929
930 //
931 // Submits a batch of previously recorded/finalized command lists to the GPU.
932 // Command lists are well-ordered in the array view. Platform implementations must submit in this order for correct rendering.
933 //
934 // Called by the RHI thread.
935 //
942
943 //
944 // Platform RHIs should implement this function to process their internal GPU resource/memory delete queues.
945 // Called only from RHI command list management code. Do not call directly.
946 //
947 virtual void RHIProcessDeleteQueue() {}
948
950
952 RHI_API virtual void RHIEndUpdateTexture3D(FRHICommandListBase& RHICmdList, FUpdateTexture3DData& UpdateData);
953
955
957
958 RHI_API virtual void RHIMapStagingSurface_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHITexture* Texture, uint32 GPUIndex, FRHIGPUFence* Fence, void*& OutData, int32& OutWidth, int32& OutHeight);
960 RHI_API virtual void RHIReadSurfaceFloatData_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHITexture* Texture, FIntRect Rect, TArray<FFloat16Color>& OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex);
962
963 // Buffer Lock/Unlock
965 {
966 // Either this function or RHILockBuffer must be implemented by the platform RHI.
967 checkNoEntry();
968 return nullptr;
969 }
970
972 {
973 // Either this function or RHIUnlockBuffer must be implemented by the platform RHI.
974 checkNoEntry();
975 }
976
977 //Utilities
978 static RHI_API void EnableIdealGPUCaptureOptions(bool bEnable);
979
981 virtual void RHISignalFlipEvent() { }
982
983
985
991
997
1003
1009
1015
1021
1023 {
1024 checkNoEntry();
1025 return nullptr;
1026 }
1027
1033
1039
1040#if !UE_BUILD_SHIPPING
1042 {
1043 checkNoEntry();
1044 }
1045#endif
1046
1048 {
1049 checkNoEntry();
1050 return nullptr;
1051 }
1052
1053protected:
1055 friend class FValidationRHI;
1056};
1057
1060
1061// Dynamic RHI for RHIs that do not support real Graphics/Compute Pipelines.
1075
1080
1081template<typename TRHI>
1083{
1084 return static_cast<TRHI*>(InDynamicRHI->GetNonValidationRHI());
1085}
1086
1087template<typename TRHI>
1089{
1091}
1092
1094{
1095 LLM_SCOPE(ELLMTag::Shaders);
1096 return GDynamicRHI->RHICreatePixelShader(Code, Hash);
1097}
1098
1100{
1101 LLM_SCOPE(ELLMTag::Shaders);
1102 return GDynamicRHI->RHICreateVertexShader(Code, Hash);
1103}
1104
1106{
1107 LLM_SCOPE(ELLMTag::Shaders);
1108 return GDynamicRHI->RHICreateMeshShader(Code, Hash);
1109}
1110
1116
1122
1124{
1125 LLM_SCOPE(ELLMTag::Shaders);
1127}
1128
1130{
1131 LLM_SCOPE(ELLMTag::Shaders);
1132 return GDynamicRHI->RHICreateWorkGraphShader(Code, Hash, ShaderFrequency);
1133}
1134
1139
1144
1150
1156
1162
1168
1170{
1171 LLM_SCOPE(ELLMTag::Shaders);
1172 return GDynamicRHI->RHICreateBoundShaderState(VertexDeclaration, VertexShader, PixelShader, GeometryShader);
1173}
1174
1175#if PLATFORM_SUPPORTS_MESH_SHADERS && PLATFORM_USE_FALLBACK_PSO
1177{
1178 LLM_SCOPE(ELLMTag::Shaders);
1179 return GDynamicRHI->RHICreateBoundShaderState(AmplificationShader, MeshShader, PixelShader);
1180}
1181#endif
1182
1189
1195
1196UE_DEPRECATED(5.6, "Creating a compute pipeline state with a pointer to a FRHIComputeShader is deprecated, please pass a FComputePipelineStateInitializer instead.")
1202
1208
1214
1216{
1217 return GDynamicRHI->RHICreateRenderQuery(QueryType);
1218}
1219
1224
1230
1236
1238{
1239 if ( ! Desc.IsValid() )
1240 {
1241 // Invalid texture desc; return zero to indicate failure
1243 return ZeroResult;
1244 }
1245
1246 return GDynamicRHI->RHICalcTexturePlatformSize(Desc, FirstMipIndex);
1247}
1248
1253
1258
1260{
1261 return GDynamicRHI->RHIComputeMemorySize(TextureRHI);
1262}
1263
1265{
1266 return GDynamicRHI->RHIGetRenderQueryResult(RenderQuery, OutResult, bWait, GPUIndex);
1267}
1268
1273
1278
1283
1284UE_DEPRECATED(5.7, "RHIGetHTilePlatformConfig(uint32,uint32) has been deprecated. Please use RHIGetHTilePlatformConfig(const FRHITextureDesc&) instead.")
1286{
1288}
1289
1294
1295UE_DEPRECATED(5.7, "RHIAdvanceFrameForGetViewportBackBuffer is deprecated. This happens automatically when RHIEndDrawingViewport is called. Remove calls to this function.")
1300
1302
1303inline FViewportRHIRef RHICreateViewport(void* WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)
1304{
1305 LLM_SCOPE(ELLMTag::RenderTargets);
1306 return GDynamicRHI->RHICreateViewport(WindowHandle, SizeX, SizeY, bIsFullscreen, PreferredPixelFormat);
1307}
1308
1309inline void RHIResizeViewport(FRHIViewport* Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)
1310{
1311 LLM_SCOPE(ELLMTag::RenderTargets);
1312 GDynamicRHI->RHIResizeViewport(Viewport, SizeX, SizeY, bIsFullscreen, PreferredPixelFormat);
1313}
1314
1315// UE_DEPRECATED(5.5, "This method is no longer used.")
1320
1322{
1324}
1325
1330
1331inline void RHITick(float DeltaTime)
1332{
1333 LLM_SCOPE_BYNAME(TEXT("RHIMisc/RHITick"));
1334 GDynamicRHI->RHITick(DeltaTime);
1335}
1336
1341
1343{
1345}
1346
1348{
1350}
1351
1356
1357inline void RHIGetSupportedResolution(uint32& Width, uint32& Height)
1358{
1359 GDynamicRHI->RHIGetSupportedResolution(Width, Height);
1360}
1361
1366
1368
1370
1371inline void RHIReleaseTransition(FRHITransition* Transition)
1372{
1373 GDynamicRHI->RHIReleaseTransition(Transition);
1374}
1375
1380
1385
1390
1395
1400
1405
1410
1412{
1413 return GDynamicRHI->RHICreateRayTracingShader(Code, Hash, ShaderFrequency);
1414}
1415
1417{
1418 return GDynamicRHI->RHICreateShaderBundle(CreateInfo);
1419}
1420
1425
1429inline bool appIsPoolTexture(FRHITexture* TextureRHI) { return false; }
1430
1436inline void appDumpTextureMemoryStats(const TCHAR* /*Message*/) {}
1437
1440{
1441 // Fraction on how much much the GPU clocks has been scaled down by driver for energy savings.
1442 float ClockScaling = 1.0f;
1443
1444 // Fraction of GPU resource dedicated for our own process at current clock scaling.
1445 float CurrentProcessMHz = 0.0f;
1446
1447 // Fraction of GPU resource dedicated for other processes at current clock scaling.
1449
1450 // Amount of VRAM used by the process in bytes.
1452
1453 // Amount of VRAM used by other processes in bytes.
1455
1456 // Remaining fraction of GPU resource that is idle.
1457 inline float GetUnused()
1458 {
1459 return FMath::Clamp(1.0f - CurrentProcessMHz - ExternalProcessesMHz, 0.0f, 1.0f);
1460 }
1461};
1462
1469
1483
1489
1490// Name of the RHI module that will be created when PlatformCreateDynamicRHI is called
1491// NOTE: This function is very slow when called before RHIInit
1492extern RHI_API const TCHAR* GetSelectedDynamicRHIModuleName(bool bCleanup = true);
1493
1495
1496//
1497// Helper for acquiring and releasing thread ownership of the RHI within a scope.
1498// For private use by the RHI and render thread management code only.
1499//
1501{
1502 bool const bCondition;
1503
1506 {
1507 if (bCondition)
1508 {
1509 SCOPED_NAMED_EVENT(RHIAcquireThreadOwnership, FColor::Red);
1511 }
1512 }
1513
1515 {
1516 if (bCondition)
1517 {
1518 SCOPED_NAMED_EVENT(RHIReleaseThreadOwnership, FColor::Red);
1520 }
1521 }
1522};
#define checkNoEntry()
Definition AssertionMacros.h:316
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#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
FBoundShaderStateRHIRef RHICreateBoundShaderState(FRHIVertexDeclaration *VertexDeclaration, FRHIVertexShader *VertexShader, FRHIPixelShader *PixelShader, FRHIGeometryShader *GeometryShader)
Definition DynamicRHI.h:1169
uint64 RHIGetMinimumAlignmentForBufferBackedSRV(EPixelFormat Format)
Definition DynamicRHI.h:1249
void RHIReleaseTransition(FRHITransition *Transition)
Definition DynamicRHI.h:1371
FRayTracingAccelerationStructureSize RHICalcRayTracingSceneSize(const FRayTracingSceneInitializer &Initializer)
Definition DynamicRHI.h:1401
FSamplerStateRHIRef RHICreateSamplerState(const FSamplerStateInitializerRHI &Initializer)
Definition DynamicRHI.h:1145
FUniformBufferRHIRef RHICreateUniformBuffer(const void *Contents, const FRHIUniformBufferLayout *Layout, EUniformBufferUsage Usage, EUniformBufferValidation Validation=EUniformBufferValidation::ValidateResources)
Definition DynamicRHI.h:1231
FRayTracingShaderRHIRef RHICreateRayTracingShader(TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency)
Definition DynamicRHI.h:1411
FRHICalcTextureSizeResult RHICalcTexturePlatformSize(FRHITextureDesc const &Desc, uint32 FirstMipIndex=0)
Definition DynamicRHI.h:1237
TRHI * CastDynamicRHI(FDynamicRHI *InDynamicRHI)
Definition DynamicRHI.h:1082
bool RHIGetRenderQueryResult(FRHIRenderQuery *RenderQuery, uint64 &OutResult, bool bWait, uint32 GPUIndex=INDEX_NONE)
Definition DynamicRHI.h:1264
FUnorderedAccessViewRHIRef RHIGetViewportBackBufferUAV(FRHIViewport *Viewport)
Definition DynamicRHI.h:1279
FUniformBufferLayoutRHIRef RHICreateUniformBufferLayout(const FRHIUniformBufferLayoutInitializer &Initializer)
Definition DynamicRHI.h:1225
FVertexShaderRHIRef RHICreateVertexShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1099
uint64 RHIComputeStatePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1386
void RHIGetTextureMemoryStats(FTextureMemoryStats &OutStats)
Definition DynamicRHI.h:1254
RHI_API FRenderQueryPoolRHIRef RHICreateRenderQueryPool(ERenderQueryType QueryType, uint32 NumQueries=UINT32_MAX)
Definition DynamicRHI.cpp:806
FComputePipelineStateRHIRef RHICreateComputePipelineState(FRHIComputeShader *ComputeShader)
Definition DynamicRHI.h:1197
void RHIGetDisplaysInformation(FDisplayInformationArray &OutDisplayInformation)
Definition DynamicRHI.h:1381
RHI_API const TCHAR * GetSelectedDynamicRHIModuleName(bool bCleanup=true)
Definition WindowsDynamicRHI.cpp:1261
class IRHICommandContext * RHIGetDefaultContext()
Definition DynamicRHI.h:1362
void RHICheckViewportHDRStatus(FRHIViewport *Viewport)
Definition DynamicRHI.h:1321
void RHITick(float DeltaTime)
Definition DynamicRHI.h:1331
FWorkGraphShaderRHIRef RHICreateWorkGraphShader(TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency)
Definition DynamicRHI.h:1129
FViewportRHIRef RHICreateViewport(void *WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)
Definition DynamicRHI.h:1303
FGeometryShaderRHIRef RHICreateGeometryShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1117
uint32 DepthHeight
Definition DynamicRHI.h:1286
FRayTracingSceneRHIRef RHICreateRayTracingScene(FRayTracingSceneInitializer Initializer)
Definition DynamicRHI.h:1406
FDynamicRHI * PlatformCreateDynamicRHI()
Definition AndroidDynamicRHI.cpp:123
uint64 RHIComputePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1391
FStagingBufferRHIRef RHICreateStagingBuffer()
Definition DynamicRHI.h:1140
RHI_API RHIGetGPUUsageType RHIGetGPUUsage
Definition DynamicRHI.cpp:36
FShaderBundleRHIRef RHICreateShaderBundle(const FShaderBundleCreateInfo &CreateInfo)
Definition DynamicRHI.h:1416
void appDumpTextureMemoryStats(const TCHAR *)
Definition DynamicRHI.h:1436
FGPUFenceRHIRef RHICreateGPUFence(const FName &Name)
Definition DynamicRHI.h:1135
void appDefragmentTexturePool()
Definition DynamicRHI.h:1424
TRefCountPtr< FRHIRayTracingPipelineState > RHICreateRayTracingPipelineState(const FRayTracingPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1220
FPixelShaderRHIRef RHICreatePixelShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1093
FTextureRHIRef RHIGetViewportBackBuffer(FRHIViewport *Viewport)
Definition DynamicRHI.h:1274
TRefCountPtr< FRHIWorkGraphPipelineState > RHICreateWorkGraphPipelineState(const FWorkGraphPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1209
RHI_API FDynamicRHI * GDynamicRHI
Definition DynamicRHI.cpp:35
FVertexDeclarationRHIRef RHICreateVertexDeclaration(const FVertexDeclarationElementList &Elements)
Definition DynamicRHI.h:1191
bool appIsPoolTexture(FRHITexture *TextureRHI)
Definition DynamicRHI.h:1429
void RHIHandleDisplayChange()
Definition DynamicRHI.h:1326
bool RHIGetAvailableResolutions(FScreenResolutionArray &Resolutions, bool bIgnoreRefreshRate)
Definition DynamicRHI.h:1352
FRenderQueryRHIRef RHICreateRenderQuery(ERenderQueryType QueryType)
Definition DynamicRHI.h:1215
uint32 RHIGetHTilePlatformConfig(const FRHITextureDesc &DepthDesc)
Definition DynamicRHI.h:1290
FRHIGPUUsageFractions(* RHIGetGPUUsageType)(uint32)
Definition DynamicRHI.h:1467
FBlendStateRHIRef RHICreateBlendState(const FBlendStateInitializerRHI &Initializer)
Definition DynamicRHI.h:1163
RHI_API uint32 RHIGetGPUFrameCycles(uint32 GPUIndex=0)
Definition GPUProfiler.cpp:2722
TArray< FScreenResolutionRHI > FScreenResolutionArray
Definition DynamicRHI.h:44
bool RHIMatchPrecachePSOInitializers(const FGraphicsPipelineStateInitializer &LHS, const FGraphicsPipelineStateInitializer &RHS)
Definition DynamicRHI.h:1396
FDepthStencilStateRHIRef RHICreateDepthStencilState(const FDepthStencilStateInitializerRHI &Initializer)
Definition DynamicRHI.h:1157
uint32 RHIComputeMemorySize(FRHITexture *TextureRHI)
Definition DynamicRHI.h:1259
EColorSpaceAndEOTF RHIGetColorSpace(FRHIViewport *Viewport)
Definition DynamicRHI.h:1316
TRHI * GetDynamicRHI()
Definition DynamicRHI.h:1088
void RHIResumeRendering()
Definition DynamicRHI.h:1347
ERHIInterfaceType RHIGetInterfaceType()
Definition DynamicRHI.h:1076
FAmplificationShaderRHIRef RHICreateAmplificationShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1111
void RHIResizeViewport(FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)
Definition DynamicRHI.h:1309
RHI_API bool GDynamicRHIFailedToInitializeAdvancedPlatform
Definition WindowsDynamicRHI.cpp:22
FMeshShaderRHIRef RHICreateMeshShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1105
RHI_API FRHITransition * RHICreateTransition(const FRHITransitionCreateInfo &CreateInfo)
Definition DynamicRHI.cpp:811
uint32 RHIGetViewportNextPresentGPUIndex(FRHIViewport *Viewport)
Definition DynamicRHI.h:1269
void RHIBeginSuspendRendering()
Definition DynamicRHI.h:1337
void RHIAdvanceFrameForGetViewportBackBuffer(FRHIViewport *Viewport)
Definition DynamicRHI.h:1296
FGraphicsPipelineStateRHIRef RHICreateGraphicsPipelineState(const FGraphicsPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1184
void RHISuspendRendering()
Definition DynamicRHI.h:1342
FComputeShaderRHIRef RHICreateComputeShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:1123
IRHITransientResourceAllocator * RHICreateTransientResourceAllocator()
Definition DynamicRHI.h:1376
FRasterizerStateRHIRef RHICreateRasterizerState(const FRasterizerStateInitializerRHI &Initializer)
Definition DynamicRHI.h:1151
void RHIGetSupportedResolution(uint32 &Width, uint32 &Height)
Definition DynamicRHI.h:1357
#define LLM_SCOPE_BYNAME(...)
Definition LowLevelMemTracker.h:1098
#define LLM_SCOPE(...)
Definition LowLevelMemTracker.h:1095
EPixelFormat
Definition PixelFormat.h:16
#define SCOPED_NAMED_EVENT(Name, Color)
Definition PlatformMisc.h:180
ERHIAccess
Definition RHIAccess.h:11
EShaderFrequency
Definition RHIDefinitions.h:202
EUniformBufferUsage
Definition RHIDefinitions.h:536
ECubeFace
Definition RHIDefinitions.h:525
EResourceLockMode
Definition RHIDefinitions.h:785
@ RLM_Num
Definition RHIDefinitions.h:789
EUniformBufferValidation
Definition RHIDefinitions.h:546
ERHIInterfaceType
Definition RHIDefinitions.h:157
ETextureCreateFlags
Definition RHIDefinitions.h:1091
ERenderQueryType
Definition RHIDefinitions.h:258
EColorSpaceAndEOTF
Definition RHIDefinitions.h:1471
TRefCountPtr< FRHIUnorderedAccessView > FUnorderedAccessViewRHIRef
Definition RHIFwd.h:137
TRefCountPtr< FRHIWorkGraphShader > FWorkGraphShaderRHIRef
Definition RHIFwd.h:143
TRefCountPtr< FRHIAmplificationShader > FAmplificationShaderRHIRef
Definition RHIFwd.h:102
TRefCountPtr< FRHIMeshShader > FMeshShaderRHIRef
Definition RHIFwd.h:113
ERHIPipeline
Definition RHIPipeline.h:13
EShaderPlatform
Definition RHIShaderPlatform.h:11
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
uint32 Size
Definition VulkanMemory.cpp:4034
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 RHI.h:403
Definition RHIResources.h:4820
Definition DynamicRHI.h:101
FDefaultRHIRenderQueryPool(ERenderQueryType InQueryType)
Definition DynamicRHI.h:103
virtual RHI_API ~FDefaultRHIRenderQueryPool()
Definition DynamicRHI.cpp:770
Definition DynamicRHI.h:1063
virtual FComputePipelineStateRHIRef RHICreateComputePipelineState(const FComputePipelineStateInitializer &Initializer) override
Definition DynamicRHI.h:1070
virtual FGraphicsPipelineStateRHIRef RHICreateGraphicsPipelineState(const FGraphicsPipelineStateInitializer &Initializer) override
Definition DynamicRHI.h:1065
Definition DynamicRHI.h:206
virtual void RHIEndRenderQueryBatch_TopOfPipe(FRHICommandListBase &RHICmdList, ERenderQueryType QueryType)
Definition DynamicRHI.h:650
virtual void RHIUpdateResourceCollection(FRHICommandListBase &RHICmdList, FRHIResourceCollection *InResourceCollection, uint32 InStartIndex, TConstArrayView< FRHIResourceCollectionMember > InMemberUpdates)
Definition DynamicRHI.h:534
virtual FShaderResourceViewRHIRef RHICreateShaderResourceView(class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc)=0
virtual FRayTracingShaderRHIRef RHICreateRayTracingShader(TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency)
Definition DynamicRHI.h:1022
virtual RHI_API uint64 RHIComputeStatePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer)
Definition DynamicRHI.cpp:584
virtual FGeometryShaderRHIRef RHICreateGeometryShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)=0
virtual void * RHIGetNativeDevice()=0
virtual RHI_API void RHIVirtualTextureSetFirstMipInMemory(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, uint32 FirstMip)
Definition DynamicRHI.cpp:569
virtual FShaderBindingTableRHIRef RHICreateShaderBindingTable(FRHICommandListBase &RHICmdList, const FRayTracingShaderBindingTableInitializer &Initializer)
Definition DynamicRHI.h:1034
virtual void Shutdown()=0
virtual RHI_API void RHIBindDebugLabelName(FRHICommandListBase &RHICmdList, FRHITexture *Texture, const TCHAR *Name)
Definition DynamicRHI.cpp:900
virtual void RHIHandleDisplayChange()
Definition DynamicRHI.h:746
friend class FValidationRHI
Definition DynamicRHI.h:1055
virtual RHI_API void RHIUnlockBuffer(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer)
Definition RHICommandList.cpp:2099
virtual void RHIBeginRenderQueryBatch_TopOfPipe(FRHICommandListBase &RHICmdList, ERenderQueryType QueryType)
Definition DynamicRHI.h:649
virtual IRHITransientResourceAllocator * RHICreateTransientResourceAllocator()
Definition DynamicRHI.h:332
virtual FGraphicsPipelineStateRHIRef RHICreateGraphicsPipelineState(const FGraphicsPipelineStateInitializer &Initializer)=0
virtual void RHISuspendRendering()
Definition DynamicRHI.h:761
virtual FTextureRHIRef RHIAsyncCreateTexture2D(uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags Flags, ERHIAccess InResourceState, void **InitialMipData, uint32 NumInitialMips, const TCHAR *DebugName, FGraphEventRef &OutCompletionEvent)=0
void RHICloseTranslateChain(FRHIFinalizeContextArgs &&Args, TRHIPipelineArray< IRHIPlatformCommandList * > &Output, bool bShouldFinalize)
Definition DynamicRHI.h:907
virtual FGPUFenceRHIRef RHICreateGPUFence(const FName &Name)=0
virtual void RHIBeginSuspendRendering()
Definition DynamicRHI.h:757
virtual RHI_API void RHIWriteGPUFence_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIGPUFence *FenceRHI)
Definition RHICommandList.cpp:2140
virtual void RHIReadSurfaceData(FRHITexture *Texture, FIntRect Rect, TArray< FColor > &OutData, FReadSurfaceDataFlags InFlags)=0
virtual void RHIGetTextureMemoryStats(FTextureMemoryStats &OutStats)=0
virtual void UnlockBuffer_BottomOfPipe(class FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer)
Definition DynamicRHI.h:971
virtual FVertexShaderRHIRef RHICreateVertexShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)=0
virtual RHI_API void RHIEndUpdateTexture3D(FRHICommandListBase &RHICmdList, FUpdateTexture3DData &UpdateData)
Definition RHICommandList.cpp:2242
virtual RHI_API ~FDynamicRHI()
virtual FRHIBufferInitializer RHICreateBufferInitializer(FRHICommandListBase &RHICmdList, const FRHIBufferCreateDesc &CreateDesc)=0
virtual FUnorderedAccessViewRHIRef RHIGetViewportBackBufferUAV(FRHIViewport *ViewportRHI)
Definition DynamicRHI.h:669
virtual RHI_API void RHIVirtualTextureSetFirstMipVisible(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, uint32 FirstMip)
Definition DynamicRHI.cpp:574
virtual uint32 RHIGetHTilePlatformConfig(const FRHITextureDesc &DepthDesc) const
Definition DynamicRHI.h:679
virtual void * RHIGetNativeCommandBuffer()
Definition DynamicRHI.h:849
virtual void RHITick(float DeltaTime)=0
virtual bool RHIIsRenderingSuspended()
Definition DynamicRHI.h:767
virtual void RHIReplaceResources(FRHICommandListBase &RHICmdList, TArray< FRHIResourceReplaceInfo > &&ReplaceInfos)=0
virtual FRayTracingSceneRHIRef RHICreateRayTracingScene(FRayTracingSceneInitializer Initializer)
Definition DynamicRHI.h:1016
virtual RHI_API bool RHIMatchPrecachePSOInitializers(const FGraphicsPipelineStateInitializer &LHS, const FGraphicsPipelineStateInitializer &RHS)
Definition DynamicRHI.cpp:716
virtual void RHIAcquireThreadOwnership()
Definition DynamicRHI.h:716
virtual FRayTracingClusterOperationSize RHICalcRayTracingClusterOperationSize(const FRayTracingClusterOperationInitializer &Initializer)
Definition DynamicRHI.h:998
virtual FVertexDeclarationRHIRef RHICreateVertexDeclaration(const FVertexDeclarationElementList &Elements)=0
virtual void RHIReadSurfaceFloatData(FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex)=0
virtual FAmplificationShaderRHIRef RHICreateAmplificationShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:282
virtual FRHIResourceCollectionRef RHICreateResourceCollection(FRHICommandListBase &RHICmdList, TConstArrayView< FRHIResourceCollectionMember > InMembers)
Definition DynamicRHI.h:529
virtual ERHIInterfaceType GetInterfaceType() const
Definition DynamicRHI.h:224
virtual FTextureRHIRef RHIAsyncReallocateTexture2D(FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus)=0
virtual FPixelShaderRHIRef RHICreatePixelShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)=0
virtual RHI_API void RHIEndFrame_RenderThread(FRHICommandListImmediate &RHICmdList)
Definition DynamicRHI.cpp:463
virtual RHI_API void * RHILockBuffer(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 Offset, uint32 Size, EResourceLockMode LockMode)
Definition RHICommandList.cpp:2064
virtual RHI_API FTextureReferenceRHIRef RHICreateTextureReference(FRHICommandListBase &RHICmdList, FRHITexture *InReferencedTexture)
Definition DynamicRHI.cpp:547
virtual FComputeShaderRHIRef RHICreateComputeShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)=0
virtual void RHISubmitCommandLists(FRHISubmitCommandListsArgs &&Args)=0
virtual RHI_API void RHIMapStagingSurface_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, uint32 GPUIndex, FRHIGPUFence *Fence, void *&OutData, int32 &OutWidth, int32 &OutHeight)
Definition RHICommandList.cpp:2265
virtual RHI_API void UnlockStagingBuffer_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHIStagingBuffer *StagingBuffer)
Definition RHICommandList.cpp:2205
virtual void RHIResizeViewport(FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)
Definition DynamicRHI.h:731
virtual FWorkGraphShaderRHIRef RHICreateWorkGraphShader(TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency)
Definition DynamicRHI.h:294
virtual void Init()=0
virtual IRHIUploadContext * RHIGetUploadContext()
Definition DynamicRHI.h:882
virtual RHI_API void * RHILockBufferMGPU(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 GPUIndex, uint32 Offset, uint32 Size, EResourceLockMode LockMode)
Definition DynamicRHI.cpp:823
virtual FRayTracingGeometryRHIRef RHICreateRayTracingGeometry(FRHICommandListBase &RHICmdList, const FRayTracingGeometryInitializer &Initializer)
Definition DynamicRHI.h:1010
virtual RHI_API void * LockStagingBuffer_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHIStagingBuffer *StagingBuffer, FRHIGPUFence *Fence, uint32 Offset, uint32 SizeRHI)
Definition RHICommandList.cpp:2183
::FRHICalcTextureSizeResult FRHICalcTextureSizeResult
Definition DynamicRHI.h:208
virtual void FlushPendingLogs()
Definition DynamicRHI.h:288
virtual FTextureRHIRef RHICreateAliasedTexture(FTextureRHIRef &SourceTexture)
Definition DynamicRHI.h:689
virtual void RHIBlockUntilGPUIdle()=0
virtual FRHIFlipDetails RHIWaitForFlip(double TimeoutInSeconds)
Definition DynamicRHI.h:980
virtual FRayTracingAccelerationStructureSize RHICalcRayTracingGeometrySize(const FRayTracingGeometryInitializer &Initializer)
Definition DynamicRHI.h:992
virtual RHI_API uint64 RHIComputePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer)
Definition DynamicRHI.cpp:648
virtual FBoundShaderStateRHIRef RHICreateBoundShaderState(FRHIVertexDeclaration *VertexDeclaration, FRHIVertexShader *VertexShader, FRHIPixelShader *PixelShader, FRHIGeometryShader *GeometryShader)=0
virtual FRHITextureInitializer RHICreateTextureInitializer(FRHICommandListBase &RHICmdList, const FRHITextureCreateDesc &CreateDesc)=0
virtual FRayTracingAccelerationStructureSize RHICalcRayTracingSceneSize(const FRayTracingSceneInitializer &Initializer)
Definition DynamicRHI.h:986
virtual RHI_API void * RHILockStagingBuffer(FRHIStagingBuffer *StagingBuffer, FRHIGPUFence *Fence, uint32 Offset, uint32 SizeRHI)
Definition RHICommandList.cpp:2171
virtual bool RHIGetTextureMemoryVisualizeData(FColor *TextureData, int32 SizeX, int32 SizeY, int32 Pitch, int32 PixelSize)=0
virtual FRasterizerStateRHIRef RHICreateRasterizerState(const FRasterizerStateInitializerRHI &Initializer)=0
virtual RHI_API void RHIBeginRenderQuery_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery)
Definition RHICommandList.cpp:2150
virtual void RHIUpdateFromBufferTexture2D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, FRHIBuffer *Buffer, uint32 BufferOffset)
Definition DynamicRHI.h:587
virtual void RHIMapStagingSurface(FRHITexture *Texture, FRHIGPUFence *Fence, void *&OutData, int32 &OutWidth, int32 &OutHeight, uint32 GPUIndex=0)=0
virtual void RHIEndFrame(const FRHIEndFrameArgs &Args)=0
virtual IRHIComputeContext * RHIGetParallelCommandContext(FRHIParallelRenderPassInfo const &ParallelRenderPass, FRHIGPUMask GPUMask)
Definition DynamicRHI.h:874
void InitPixelFormatInfo(const TArray< uint32 > &PixelFormatBlockBytesIn)
Definition DynamicRHI.h:228
virtual void RHIUnmapStagingSurface(FRHITexture *Texture, uint32 GPUIndex=0)=0
virtual EPixelFormat RHIPreferredPixelFormatHint(EPixelFormat PreferredPixelFormat)
Definition DynamicRHI.h:738
virtual void RHICreateTransition(FRHITransition *Transition, const FRHITransitionCreateInfo &CreateInfo)
Definition DynamicRHI.h:321
virtual FDepthStencilStateRHIRef RHICreateDepthStencilState(const FDepthStencilStateInitializerRHI &Initializer)=0
virtual RHI_API void RHICheckViewportHDRStatus(FRHIViewport *Viewport)
Definition DynamicRHI.cpp:819
virtual bool RHIGetRenderQueryResult(FRHIRenderQuery *RenderQuery, uint64 &OutResult, bool bWait, uint32 GPUIndex=INDEX_NONE)=0
virtual RHI_API void RHIReadSurfaceFloatData_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex)
Definition RHICommandList.cpp:2299
virtual void RHIResumeRendering()
Definition DynamicRHI.h:764
virtual FRHIShaderLibraryRef RHICreateShaderLibrary(EShaderPlatform Platform, FString const &FilePath, FString const &Name)
Definition DynamicRHI.h:307
virtual FBlendStateRHIRef RHICreateBlendState(const FBlendStateInitializerRHI &Initializer)=0
virtual FWorkGraphPipelineStateRHIRef RHICreateWorkGraphPipelineState(const FWorkGraphPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:420
virtual RHI_API FUpdateTexture3DData RHIBeginUpdateTexture3D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion)
Definition RHICommandList.cpp:2228
virtual IRHIComputeContext * RHIGetCommandContext(ERHIPipeline Pipeline, FRHIGPUMask GPUMask)=0
virtual RHI_API void RHIEndMultiUpdateTexture3D(FRHICommandListBase &RHICmdList, TArray< FUpdateTexture3DData > &UpdateDataArray)
Definition RHICommandList.cpp:2251
virtual void RHIReleaseTransition(FRHITransition *Transition)
Definition DynamicRHI.h:325
virtual void RHIGetDisplaysInformation(FDisplayInformationArray &OutDisplayInformation)
Definition DynamicRHI.h:695
virtual void RHIReleaseThreadOwnership()
Definition DynamicRHI.h:717
virtual void RHIRead3DSurfaceFloatData(FRHITexture *Texture, FIntRect Rect, FIntPoint ZMinMax, TArray< FFloat16Color > &OutData)=0
virtual FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView(class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc)=0
virtual void RHIAliasTextureResources(FTextureRHIRef &DestTexture, FTextureRHIRef &SrcTexture)
Definition DynamicRHI.h:684
virtual FSamplerStateRHIRef RHICreateSamplerState(const FSamplerStateInitializerRHI &Initializer)=0
virtual FRenderQueryRHIRef RHICreateRenderQuery(ERenderQueryType QueryType)=0
virtual void RHISignalFlipEvent()
Definition DynamicRHI.h:981
virtual uint32 RHIGetViewportNextPresentGPUIndex(FRHIViewport *Viewport)
Definition DynamicRHI.h:660
virtual void RHIAdvanceFrameForGetViewportBackBuffer(FRHIViewport *Viewport, bool bPresent)=0
virtual void PostInit()
Definition DynamicRHI.h:217
virtual const TCHAR * GetName()=0
virtual RHI_API void RHIUnmapStagingSurface_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, uint32 GPUIndex)
Definition RHICommandList.cpp:2286
virtual void * RHIGetNativeInstance()=0
virtual void RHIUpdateTexture3D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8 *SourceData)=0
virtual FRHICalcTextureSizeResult RHICalcTexturePlatformSize(FRHITextureDesc const &Desc, uint32 FirstMipIndex)=0
virtual FRHILockTextureResult RHILockTexture(FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments)=0
virtual FRayTracingAccelerationStructureOfflineMetadata RHIGetRayTracingGeometryOfflineMetadata(const FRayTracingGeometryOfflineDataHeader &OfflineDataHeader)
Definition DynamicRHI.h:1004
virtual void * LockBuffer_BottomOfPipe(class FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 Offset, uint32 SizeRHI, EResourceLockMode LockMode)
Definition DynamicRHI.h:964
virtual void RHISerializeAccelerationStructure(FRHICommandListImmediate &RHICmdList, FRHIRayTracingScene *Scene, const TCHAR *Path)
Definition DynamicRHI.h:1041
virtual void RHIUpdateTexture2D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, const uint8 *SourceData)=0
virtual RHI_API FRHIShaderLibraryRef RHICreateShaderLibrary_RenderThread(class FRHICommandListImmediate &RHICmdList, EShaderPlatform Platform, FString FilePath, FString Name)
Definition RHICommandList.cpp:2259
virtual FMeshShaderRHIRef RHICreateMeshShader(TArrayView< const uint8 > Code, const FSHAHash &Hash)
Definition DynamicRHI.h:276
virtual void RHIUpdateUniformBuffer(FRHICommandListBase &RHICmdList, FRHIUniformBuffer *UniformBufferRHI, const void *Contents)=0
virtual RHI_API uint64 RHIGetMinimumAlignmentForBufferBackedSRV(EPixelFormat Format)
Definition DynamicRHI.cpp:579
virtual RHI_API FTextureRHIRef AsyncReallocateTexture2D_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus)
Definition RHICommandList.cpp:2220
virtual RHI_API void RHIEndRenderQuery_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery)
Definition RHICommandList.cpp:2160
virtual uint32 RHIGetHTilePlatformConfig(uint32 DepthWidth, uint32 DepthHeight) const
Definition DynamicRHI.h:674
virtual void RHIFlushResources()=0
virtual FStagingBufferRHIRef RHICreateStagingBuffer()
Definition DynamicRHI.h:339
virtual FDynamicRHI * GetNonValidationRHI()
Definition DynamicRHI.h:225
virtual void RHIGetSupportedResolution(uint32 &Width, uint32 &Height)=0
virtual void RHIFinalizeContext(FRHIFinalizeContextArgs &&Args, TRHIPipelineArray< IRHIPlatformCommandList * > &Output)=0
virtual uint16 RHIGetPlatformTextureMaxSampleCount()
Definition DynamicRHI.h:984
virtual IRHIPlatformCommandList * RHIFinalizeParallelContext(IRHIComputeContext *Context)
Definition DynamicRHI.h:917
virtual uint32 RHIComputeMemorySize(FRHITexture *TextureRHI)=0
virtual FUniformBufferRHIRef RHICreateUniformBuffer(const void *Contents, const FRHIUniformBufferLayout *Layout, EUniformBufferUsage Usage, EUniformBufferValidation Validation)=0
virtual FShaderBundleRHIRef RHICreateShaderBundle(const FShaderBundleCreateInfo &CreateInfo)
Definition DynamicRHI.h:1047
virtual void RHIProcessDeleteQueue()
Definition DynamicRHI.h:947
virtual void * RHIGetNativeGraphicsQueue()
Definition DynamicRHI.h:825
static RHI_API void EnableIdealGPUCaptureOptions(bool bEnable)
Definition DynamicRHI.cpp:508
virtual void RHIUnlockTexture(FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments)=0
virtual FTextureRHIRef RHIGetViewportBackBuffer(FRHIViewport *Viewport)=0
virtual void RHIResizeViewport(FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen)=0
virtual RHI_API void RHIUnlockStagingBuffer(FRHIStagingBuffer *StagingBuffer)
Definition RHICommandList.cpp:2177
virtual void * RHIGetNativeComputeQueue()
Definition DynamicRHI.h:834
virtual IRHICommandContext * RHIGetDefaultContext()=0
virtual RHI_API void RHIUpdateTextureReference(FRHICommandListBase &RHICmdList, FRHITextureReference *TextureRef, FRHITexture *NewTexture)
Definition DynamicRHI.cpp:553
virtual FComputePipelineStateRHIRef RHICreateComputePipelineState(const FComputePipelineStateInitializer &Initializer)=0
virtual FRayTracingPipelineStateRHIRef RHICreateRayTracingPipelineState(const FRayTracingPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1028
virtual bool RHIGetAvailableResolutions(FScreenResolutionArray &Resolutions, bool bIgnoreRefreshRate)=0
virtual RHI_API void RHIUnlockBufferMGPU(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 GPUIndex)
Definition DynamicRHI.cpp:830
TArray< uint32 > PixelFormatBlockBytes
Definition DynamicRHI.h:1054
virtual void * RHIGetNativePhysicalDevice()
Definition DynamicRHI.h:815
virtual FViewportRHIRef RHICreateViewport(void *WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat)=0
Definition RHIResources.h:4001
Definition RHIResources.h:4572
Definition RHIResources.h:1666
Definition NameTypes.h:617
Definition RHIResources.h:966
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHICommandList.h:4626
Definition RHICommandList.h:3819
Definition RHIResources.h:5123
Definition RHIResources.h:1018
Definition RHIResources.h:2387
Definition RHIResources.h:978
Definition RHIResources.h:5097
Definition RHIResources.h:960
Definition RHIResources.h:972
Definition RHIResources.h:2452
Definition RHIResources.h:3755
Definition RHIResources.h:2480
Definition RHIResources.h:2444
Definition RHIResourceCollection.h:46
Definition RHIResources.h:3981
Definition RHITextureReference.h:8
Definition RHIResources.h:2153
Definition RHIResources.h:1232
Definition RHIResources.h:3294
Definition RHIResources.h:725
Definition RHIResources.h:954
Definition RHIResources.h:1265
Definition RHIResources.h:2515
Definition RHIResources.h:5023
Definition PipelineStateCache.cpp:1285
Definition RHITypes.h:16
Definition SecureHash.h:226
Definition ThreadSafeCounter.h:14
Definition RHIResources.h:4915
Definition DynamicRHI.h:1472
virtual bool IsSupported(ERHIFeatureLevel::Type RequestedFeatureLevel)
Definition DynamicRHI.h:1478
virtual FDynamicRHI * CreateRHI(ERHIFeatureLevel::Type RequestedFeatureLevel=ERHIFeatureLevel::Num)=0
virtual bool IsSupported()=0
Definition ModuleInterface.h:14
Definition RHIContext.h:693
virtual void RHIBeginRenderPass(const FRHIRenderPassInfo &InInfo, const TCHAR *InName)=0
Definition RHIContext.h:257
Definition RHIContext.h:234
Definition RHITransientResourceAllocator.h:536
Definition RHIContext.h:573
Definition ArrayView.h:139
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition RHIPipeline.h:55
Definition RefCounting.h:454
Definition Mutex.h:18
Type
Definition RHIFeatureLevel.h:20
@ Num
Definition RHIFeatureLevel.h:54
Definition Color.h:486
static CORE_API const FColor Red
Definition Color.h:752
Definition HDRHelper.h:26
Definition DynamicRHI.h:238
uint32 FrameNumber
Definition DynamicRHI.h:240
Definition DynamicRHI.h:896
IRHIUploadContext * UploadContext
Definition DynamicRHI.h:898
TArray< IRHIComputeContext * > Contexts
Definition DynamicRHI.h:897
Definition DynamicRHI.h:937
TArray< IRHIPlatformCommandList * > CommandLists
Definition DynamicRHI.h:938
IRHIUploadContext * UploadContext
Definition DynamicRHI.h:939
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
Definition RHIResources.h:1417
Definition RHIBufferInitializer.h:12
Definition DynamicRHI.h:120
uint32 Align
Definition DynamicRHI.h:125
uint64 Size
Definition DynamicRHI.h:122
Definition DynamicRHI.h:49
double VBlankTimeInSeconds
Definition DynamicRHI.h:52
FRHIFlipDetails(uint64 InPresentIndex, double InFlipTimeInSeconds, double InVBlankTimeInSeconds, uint64 InVBlankTimeInCycles)
Definition DynamicRHI.h:62
FRHIFlipDetails()
Definition DynamicRHI.h:55
double FlipTimeInSeconds
Definition DynamicRHI.h:51
uint64 VBlankTimeInCycles
Definition DynamicRHI.h:53
uint64 PresentIndex
Definition DynamicRHI.h:50
Definition MultiGPU.h:33
Definition DynamicRHI.h:1440
float GetUnused()
Definition DynamicRHI.h:1457
uint64_t ExternalProcessMemoryUsage
Definition DynamicRHI.h:1454
float CurrentProcessMHz
Definition DynamicRHI.h:1445
uint64_t CurrentProcessMemoryUsage
Definition DynamicRHI.h:1451
float ExternalProcessesMHz
Definition DynamicRHI.h:1448
float ClockScaling
Definition DynamicRHI.h:1442
Definition DynamicRHI.h:149
FRHILockTextureArgs()=default
bool bNeedsDefaultRHIFlush
Definition DynamicRHI.h:190
bool bLockWithinMiptail
Definition DynamicRHI.h:189
static FRHILockTextureArgs Lock2DArray(FRHITexture *InTexture, uint32 InArrayIndex, uint32 InMipIndex, EResourceLockMode InLockMode, bool bInLockWithinMiptail)
Definition DynamicRHI.h:162
EResourceLockMode LockMode
Definition DynamicRHI.h:188
static FRHILockTextureArgs LockCubeFace(FRHITexture *InTexture, uint32 InFaceIndex, uint32 InArrayIndex, uint32 InMipIndex, EResourceLockMode InLockMode, bool bInLockWithinMiptail)
Definition DynamicRHI.h:174
static FRHILockTextureArgs Lock2D(FRHITexture *InTexture, uint32 InMipIndex, EResourceLockMode InLockMode, bool bInLockWithinMiptail, bool bFlushRHIThread=true)
Definition DynamicRHI.h:150
Definition DynamicRHI.h:198
void * Data
Definition DynamicRHI.h:199
uint64 ByteCount
Definition DynamicRHI.h:200
uint32 Stride
Definition DynamicRHI.h:201
Definition DynamicRHI.h:129
uint32 ArrayIndex
Definition DynamicRHI.h:132
FRHITexture * Texture
Definition DynamicRHI.h:130
bool operator==(const FRHILockedTextureDesc &Other) const
Definition DynamicRHI.h:135
bool operator!=(const FRHILockedTextureDesc &Other) const
Definition DynamicRHI.h:142
uint32 MipIndex
Definition DynamicRHI.h:133
uint32 FaceIndex
Definition DynamicRHI.h:131
Definition RHIResources.h:5548
Definition RHIResourceCollection.h:9
Definition RHI.h:543
Definition RHIResources.h:1938
Definition RHIResources.h:1689
bool IsValid() const
Definition RHIResources.h:1838
Definition RHITextureInitializer.h:50
Definition RHITransition.h:382
Definition RHITransition.h:475
Definition RHIUniformBufferLayoutInitializer.h:41
Definition RHIResources.h:1150
Definition RHIResources.h:2812
FInitializer & SetType(EBufferType Type)
Definition RHIResources.h:2824
friend struct FShaderResourceViewInitializer
Definition RHIResources.h:2815
Definition RHIResources.h:2648
Definition RHI.h:278
Definition DynamicRHI.h:90
FRawBufferShaderResourceViewInitializer(FRHIBuffer *InBuffer)
Definition DynamicRHI.h:91
Definition RHIResources.h:3693
Definition RHIResources.h:3842
Definition RHIResources.h:3761
Definition RHIResources.h:3496
Definition RHIResources.h:3398
Definition RHIResources.h:3669
Definition RHIResources.h:3635
Definition ResourceArray.h:10
Definition RHI.h:232
Definition DynamicRHI.h:1501
~FScopedRHIThreadOwnership()
Definition DynamicRHI.h:1514
FScopedRHIThreadOwnership(bool bCondition)
Definition DynamicRHI.h:1504
bool const bCondition
Definition DynamicRHI.h:1502
Definition RHIResources.h:3910
Definition DynamicRHI.h:72
FRHIBuffer * Buffer
Definition DynamicRHI.h:73
Definition RHIStats.h:12
Definition RHICommandList.h:220
Definition RHITypes.h:127
Definition RHITypes.h:155
Definition LinuxPlatformSplash.cpp:43
Definition Optional.h:131
Definition IntPoint.h:25