UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
D3D11RHIPrivate.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 D3D11RHIPrivate.h: Private D3D RHI definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "ID3D11DynamicRHI.h"
11#include "D3D11RHI.h"
12// Dependencies.
13#include "RHI.h"
14#include "GPUProfiler.h"
15#include "ShaderCore.h"
17#include "EngineGlobals.h"
18#include "Engine/Engine.h"
19#include "HDRHelper.h"
21#include "DXGIUtilities.h"
22
24
26
27// D3D RHI public headers.
28#include "D3D11Util.h"
29#include "D3D11State.h"
30#include "D3D11Resources.h"
31#include "D3D11Viewport.h"
32#include "D3D11ConstantBuffer.h"
33#include "D3D11StateCache.h"
35#include "RHIValidationCommon.h"
36#include "RHICoreShader.h"
37
38#ifndef WITH_DX_PERF
39#define WITH_DX_PERF 1
40#endif
41
42#if INTEL_EXTENSIONS
44 #define INTC_IGDEXT_D3D11 1
45 #include "igdext.h"
47#endif // INTEL_EXTENSIONS
48
49// DX11 doesn't support higher MSAA count
50#define DX_MAX_MSAA_COUNT 8
51
52#ifndef WITH_NV_API
53#define WITH_NV_API 0
54#endif
55
56#ifndef WITH_AMD_AGS
57#define WITH_AMD_AGS 0
58#endif
59
81
82
85
87
89
91{
92 // in bytes, never change after RHI, needed to scale game features
94
95 // in bytes, never change after RHI, needed to scale game features
97
98 // in bytes, never change after RHI, needed to scale game features
100
101 // In bytes. Never changed after RHI init. Our estimate of the amount of memory that we can use for graphics resources in total.
103};
104
105#if (RHI_NEW_GPU_PROFILER == 0)
106
107// This class has multiple inheritance but really FGPUTiming is a static class
108class FD3D11BufferedGPUTiming : public FRenderResource, public FGPUTiming
109{
110public:
118
122 void StartTiming();
123
128 void EndTiming();
129
137
141 virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
142
146 virtual void ReleaseRHI() override;
147
149
150private:
154 static void PlatformStaticInitialize(void* UserData);
155
157 FD3D11DynamicRHI* D3DRHI;
159 int32 BufferSize;
161 int32 CurrentTimestamp;
163 int32 NumIssuedTimestamps;
165 TRefCountPtr<ID3D11Query>* StartTimestamps;
167 TRefCountPtr<ID3D11Query>* EndTimestamps;
169 bool bIsTiming;
170};
171
174{
175public:
177
178 void StartTracking();
179 void EndTracking();
180 bool IsResultValid();
182
186 virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
187
191 virtual void ReleaseRHI() override;
192
193
194private:
195
196 TRefCountPtr<ID3D11Query> DisjointQuery;
197
198 FD3D11DynamicRHI* D3DRHI;
199};
200
202class FD3D11EventNode : public FGPUProfilerEventNode
203{
204public:
205 FD3D11EventNode(const TCHAR* InName, FGPUProfilerEventNode* InParent, class FD3D11DynamicRHI* InRHI) :
206 FGPUProfilerEventNode(InName, InParent),
207 Timing(InRHI, 1)
208 {
209 // Initialize Buffered timestamp queries
210 Timing.InitRHI(FRHICommandListExecutor::GetImmediateCommandList()); // can't do this from the RHI thread
211 }
212
214 {
215 Timing.ReleaseRHI(); // can't do this from the RHI thread
216 }
217
222 virtual float GetTiming() override;
223
224
225 virtual void StartTiming() override
226 {
228 }
229
230 virtual void StopTiming() override
231 {
233 }
234
236};
237
239class FD3D11EventNodeFrame : public FGPUProfilerEventNodeFrame
240{
241public:
242
244 FGPUProfilerEventNodeFrame(),
247 {
249 RootEventTiming.InitRHI(RHICmdList);
250 DisjointQuery.InitRHI(RHICmdList);
251 }
252
258
260 virtual void StartFrame() override;
261
263 virtual void EndFrame() override;
264
266 virtual float GetRootTimingResults() override;
267
268 virtual void LogDisjointQuery() override;
269
272
275};
276
281struct FD3DGPUProfiler : public FGPUProfiler
282{
285
287
290
292
293 virtual FGPUProfilerEventNode* CreateEventNode(const TCHAR* InName, FGPUProfilerEventNode* InParent) override
294 {
296 return EventNode;
297 }
298
299 virtual void PushEvent(const TCHAR* Name, FColor Color) override;
300 virtual void PopEvent() override;
301
302 void BeginFrame(class FD3D11DynamicRHI* InRHI);
303 void EndFrame();
304};
305
306#endif // (RHI_NEW_GPU_PROFILER == 0)
307
309{
311};
312
314struct AGSContext;
315
316
322
324{
327
329
332
335
337 bool bUMA;
338
339 // constructors
341 {
342 }
343
355
356 bool IsValid() const
357 {
358 return DXGIAdapter.IsValid();
359 }
360};
361
363
366{
367public:
369 friend class FD3D11Viewport;
370
373
376
378 D3D11RHI_API virtual void InitD3DDevice();
379
380 // FDynamicRHI interface.
381 D3D11RHI_API virtual void Init() override;
382 D3D11RHI_API virtual void Shutdown() override;
383 virtual const TCHAR* GetName() override { return TEXT("D3D11"); }
384
385 D3D11RHI_API virtual void FlushPendingLogs() override;
386
388
389 template<typename TRHIType>
394
396 {
397 if (!Texture)
398 {
399 return nullptr;
400 }
401
402 FD3D11Texture* Result = static_cast<FD3D11Texture*>(Texture->GetTextureBaseRHI());
403 check(Result);
404
405 return Result;
406 }
407
408 template<EShaderFrequency ShaderFrequency>
409 void BindUniformBuffer(uint32 BufferIndex, FRHIUniformBuffer* BufferRHI);
410
411 template <typename TRHIShader>
413
414 template<EShaderFrequency ShaderFrequency>
416
417 template<EShaderFrequency ShaderFrequency>
419
430 D3D11RHI_API bool GetQueryData(ID3D11Query* Query, void* Data, SIZE_T DataSize, bool bTimestamp, bool bWait, bool bStallRHIThread);
431
450 D3D11RHI_API virtual void RHIUpdateUniformBuffer(FRHICommandListBase& RHICmdList, FRHIUniformBuffer* UniformBufferRHI, const void* Contents) final override;
451
452#if ENABLE_LOW_LEVEL_MEM_TRACKER || UE_MEMORY_TRACE_ENABLED
453 D3D11RHI_API virtual void RHIUpdateAllocationTags(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer) final override;
454#endif
455
459
461
464 D3D11RHI_API virtual void UnlockBuffer_BottomOfPipe(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer) final override;
465 D3D11RHI_API virtual FRHICalcTextureSizeResult RHICalcTexturePlatformSize(FRHITextureDesc const& Desc, uint32 FirstMipIndex) final override;
467 D3D11RHI_API virtual bool RHIGetTextureMemoryVisualizeData(FColor* TextureData,int32 SizeX,int32 SizeY,int32 Pitch,int32 PixelSize) final override;
468
476 D3D11RHI_API virtual uint32 RHIComputeMemorySize(FRHITexture* TextureRHI) final override;
479
480 D3D11RHI_API virtual FRHILockTextureResult RHILockTexture(FRHICommandListImmediate& RHICmdList, const FRHILockTextureArgs& Arguments) final override;
481 D3D11RHI_API virtual void RHIUnlockTexture(FRHICommandListImmediate& RHICmdList, const FRHILockTextureArgs& Arguments) final override;
482
483 D3D11RHI_API virtual void RHIUpdateTexture2D(FRHICommandListBase& RHICmdList, FRHITexture* Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D& UpdateRegion, uint32 SourcePitch, const uint8* SourceData) final override;
484 D3D11RHI_API virtual void RHIUpdateTexture3D(FRHICommandListBase& RHICmdList, FRHITexture* Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D& UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8* SourceData) final override;
485 D3D11RHI_API virtual void RHIBindDebugLabelName(FRHICommandListBase& RHICmdList, FRHITexture* Texture, const TCHAR* Name) final override;
486 D3D11RHI_API virtual void RHIBindDebugLabelName(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer, const TCHAR* Name) final override;
487 D3D11RHI_API virtual void RHIBindDebugLabelName(FRHICommandListBase& RHICmdList, FRHIUnorderedAccessView* UnorderedAccessViewRHI, const TCHAR* Name) final override;
490 D3D11RHI_API virtual void RHIMapStagingSurface(FRHITexture* Texture, FRHIGPUFence* Fence, void*& OutData, int32& OutWidth, int32& OutHeight, uint32 GPUIndex = 0) final override;
501 D3D11RHI_API virtual FViewportRHIRef RHICreateViewport(void* WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) override;
502 D3D11RHI_API virtual void RHIResizeViewport(FRHIViewport* Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen) final override;
503 D3D11RHI_API virtual void RHIResizeViewport(FRHIViewport* Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override;
505 D3D11RHI_API virtual void RHITick(float DeltaTime) final override;
515 D3D11RHI_API virtual void RHISubmitCommandLists(FRHISubmitCommandListsArgs&& Args) final override;
516
517 // SRV / UAV creation functions
520
522 D3D11RHI_API virtual void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override;
523 D3D11RHI_API virtual void RHIDispatchIndirectComputeShader(FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override;
527 D3D11RHI_API virtual void RHIClearUAVFloat(FRHIUnorderedAccessView* UnorderedAccessViewRHI, const FVector4f& Values) final override;
528 D3D11RHI_API virtual void RHIClearUAVUint(FRHIUnorderedAccessView* UnorderedAccessViewRHI, const FUintVector4& Values) final override;
529 D3D11RHI_API virtual void RHICopyTexture(FRHITexture* SourceTexture, FRHITexture* DestTexture, const FRHICopyTextureInfo& CopyInfo) final override;
530 D3D11RHI_API virtual void RHICopyBufferRegion(FRHIBuffer* DestBuffer, uint64 DstOffset, FRHIBuffer* SourceBuffer, uint64 SrcOffset, uint64 NumBytes) final override;
535
539
540 D3D11RHI_API virtual void RHIEndDrawingViewport(FRHIViewport* Viewport, bool bPresent, bool bLockToVsync) final override;
541 D3D11RHI_API virtual void RHIEndFrame(const FRHIEndFrameArgs& Args) final override;
544 D3D11RHI_API virtual void RHISetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ) final override;
545 D3D11RHI_API virtual void RHISetStereoViewport(float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ) override;
546 D3D11RHI_API virtual void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override;
557 D3D11RHI_API virtual void RHISetBlendState(FRHIBlendState* NewState, const FLinearColor& BlendFactor) final override;
558 D3D11RHI_API virtual void RHISetBlendFactor(const FLinearColor& BlendFactor) final override;
563 D3D11RHI_API virtual void RHIDrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override;
564 D3D11RHI_API virtual void RHIDrawPrimitiveIndirect(FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override;
566 D3D11RHI_API virtual void RHIDrawIndexedPrimitive(FRHIBuffer* IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override;
568 virtual void RHIEnableDepthBoundsTest(bool bEnable) final override
569 {
571 {
572 EnableDepthBoundsTest(bEnable, 0.0f, 1.0f);
573 }
574 }
575 virtual void RHISetDepthBounds(float MinDepth, float MaxDepth) final override
576 {
578 {
579 EnableDepthBoundsTest(true, MinDepth, MaxDepth);
580 }
581 }
582#if WITH_RHI_BREADCRUMBS
584 D3D11RHI_API virtual void RHIEndBreadcrumbGPU (FRHIBreadcrumbNode* Breadcrumb) final override;
585#endif
586
589
590 // *_RenderThread functions. Command lists call these functions on RT. You can implement your own behavior inside these functions.
591 // For example, deferring the actual creation to RHI thread by sending an RHI command.
592 // For D3D11, these functions mainly just remove RHIT stalls because ID3D11Device is thread safe.
594 D3D11RHI_API virtual void RHIEndUpdateTexture3D(FRHICommandListBase& RHICmdList, FUpdateTexture3DData& UpdateData) final override;
595
596 D3D11RHI_API virtual void RHIBeginRenderPass(const FRHIRenderPassInfo& InInfo, const TCHAR* InName) final override;
597 D3D11RHI_API virtual void RHIEndRenderPass() final override;
598
599 D3D11RHI_API void ResolveTexture(UE::RHICore::FResolveTextureInfo Info);
600
601 // ID3D11DynamicRHI interface
615 D3D11RHI_API virtual void RHIRegisterWork(uint32 NumPrimitives) final override;
616 D3D11RHI_API virtual void RHIVerifyResult(ID3D11Device* Device, HRESULT Result, const ANSICHAR* Code, const ANSICHAR* Filename, uint32 Line) const final override;
617
619
620 // Accessors.
622 {
623 return Direct3DDevice;
624 }
629
631 {
632 return DXGIFactory1;
633 }
634
635 void AddLockedData(const FD3D11LockedKey& Key, const FD3D11LockedData& LockedData)
636 {
638 LockTracker.Add(Key, LockedData);
639 }
640
642 {
644 return LockTracker.RemoveAndCopyValue(Key, OutLockedData);
645 }
646
649
651 {
652 // Nothing to do
653 }
654
655private:
656 D3D11RHI_API void EnableDepthBoundsTest(bool bEnable, float MinDepth, float MaxDepth);
657
659
660 enum class EForceFullScreenClear
661 {
662 EDoNotForce,
663 EForce
664 };
665
666 D3D11RHI_API virtual void RHIClearMRTImpl(const bool* bClearColorArray, int32 NumClearColors, const FLinearColor* ColorArray, bool bClearDepth, float Depth, bool bClearStencil, uint32 Stencil);
667
668 template <EShaderFrequency ShaderFrequency>
669 void ClearShaderResourceViews(FD3D11ViewableResource* Resource);
670
671 template <EShaderFrequency ShaderFrequency>
672 void ClearAllShaderResourcesForFrequency();
673
674 template <EShaderFrequency ShaderFrequency>
675 void InternalSetShaderResourceView(FD3D11ViewableResource* Resource, ID3D11ShaderResourceView* SRV, int32 ResourceIndex);
676
677 D3D11RHI_API void TrackResourceBoundAsVB(FD3D11ViewableResource* Resource, int32 StreamIndex);
678 D3D11RHI_API void TrackResourceBoundAsIB(FD3D11ViewableResource* Resource);
679
680 void SetCurrentComputeShader(FRHIComputeShader* ComputeShader)
681 {
683 }
684
685 const FComputeShaderRHIRef& GetCurrentComputeShader() const
686 {
688 }
689
690public:
691
692 template <EShaderFrequency ShaderFrequency>
697
701
703
705
706protected:
709#if PLATFORM_WINDOWS
711#endif
712
713 // Whether HDR is available from the particular DXGI factories available
715
718
719#if WITH_DX_PERF
721#endif
722
723#if NV_AFTERMATH
724 UE::RHICore::Nvidia::Aftermath::D3D11::FCommandList AftermathHandle = nullptr;
725#endif
726
729
731
735
738
741
748
749#if INTEL_EXTENSIONS
750 // Context and functions for Intel extension framework utility library
751 INTCExtensionContext* IntelExtensionContext;
753#endif // INTEL_EXTENSIONS
754
755 // set by UpdateMSAASettings(), get by GetMSAAQuality()
756 // [SampleCount] = Quality, 0xffffffff if not supported
758
762
763 // Tracks the currently set state blocks.
765
766 // Current PSO Primitive Type
768
777
787
790
791 // Render queries that should be polled by the RHI thread.
792 struct
793 {
797 friend class FD3D11RenderQuery;
798
800 {
801 struct FFrame
802 {
804 {
806
807 FEndFrameQuery() = default;
809 : Ptr(Other.Ptr)
810 {
811 Other.Ptr = nullptr;
812 }
813
815
816 #if RHI_NEW_GPU_PROFILER
818 #endif
819
820 #if WITH_RHI_BREADCRUMBS
822 #endif
823
825 #if RHI_NEW_GPU_PROFILER
827 #endif
828 {}
829 };
830
833
836
838
839#if RHI_NEW_GPU_PROFILER
840 template <typename TEventType, typename... TArgs>
842 {
843 return Profiler.Current.EventStream.Emplace<TEventType>(Forward<TArgs>(Args)...);
844 }
845
847
848 void FlushProfilerStats()
849 {
850 // Flush accumulated draw stats
851 if (StatEvent)
852 {
854 StatEvent = {};
855 }
856 }
857#endif // RHI_NEW_GPU_PROFILER
858
859public:
868
870
871protected:
873
876
879
882
884
887
890
896
900
902
904
905 bool bRenderDoc = false;
906
907public:
908#if (RHI_NEW_GPU_PROFILER == 0)
909 void RegisterGPUWork(uint32 NumPrimitives = 0, uint32 NumVertices = 0) { GPUProfilingData.RegisterGPUWork(NumPrimitives, NumVertices); }
911#endif
912
913 inline const FD3D11Adapter& GetAdapter() const { return Adapter; }
914
915protected:
916#if (RHI_NEW_GPU_PROFILER == 0)
918#endif
919
921
923
926
929
932
933 template <class ShaderType> void SetResourcesFromTables(const ShaderType* RESTRICT);
934
937
939
949
950 // shared code for different D3D11 devices (e.g. PC DirectX11 and XboxOne) called
951 // after device creation and GRHISupportsAsyncTextureCreation was set and before resource init
953
954 // called by SetupAfterDeviceCreation() when the device gets initialized
956
957 // @return 0xffffffff if not not supported
959
963
968 D3D11RHI_API virtual void CleanupD3DDevice();
969
971
972 template<typename TPixelShader>
973 static void ResolveTextureUsingShader(
974 FD3D11DynamicRHI* const This,
975 FD3D11Texture* const SourceTexture,
976 FD3D11Texture* const DestTexture,
981 FResolveRect const& DestRect,
982 typename TPixelShader::FParameter const PixelShaderParameter
983 );
984
994
996
998
999#if INTEL_EXTENSIONS
1002#endif // INTEL_EXTENSIONS
1003
1007
1009
1011
1012 friend struct FD3DGPUProfiler;
1013
1014};
1015
1017
1020{
1021public:
1022 // IModuleInterface
1023 virtual bool SupportsDynamicReloading() override { return false; }
1024
1025 // IDynamicRHIModule
1026 virtual bool IsSupported() override;
1028
1029private:
1030 FD3D11Adapter ChosenAdapter;
1031
1032 // set MaxSupportedFeatureLevel and ChosenAdapter
1033 void FindAdapter();
1034};
1035
1036// 1d, 31 bit (uses the sign bit for internal use), O(n) where n is the amount of elements stored
1037// does not enforce any alignment
1038// unoccupied regions get compacted but occupied don't get compacted
1040{
1041public:
1042
1043 struct FRange
1044 {
1045 // not valid
1047 : Start(0)
1048 , Size(0)
1049 {
1050 check(!IsValid());
1051 }
1052
1054 {
1055 check(InStart >= 0);
1056 check(InSize > 0);
1057
1058 Start = InStart;
1059 Size = InSize;
1060 check(IsOccupied());
1061 }
1062
1064 {
1065 check(InStart >= 0);
1066 check(InSize > 0);
1067
1068 Start = InStart;
1069 Size = -InSize;
1070 check(!IsOccupied());
1071 }
1072
1073 bool IsValid() { return Size != 0; }
1074
1075 bool IsOccupied() const { return Size > 0; }
1076 uint32 ComputeSize() const { return (Size > 0) ? Size : -Size; }
1077
1078 // @apram InSize can be <0 to remove from the size
1080
1082 void MakeUnOccupied() { check(IsOccupied()); Size = -Size; }
1083
1084 bool operator==(const FRange& rhs) const { return Start == rhs.Start && Size == rhs.Size; }
1085
1086 int32 GetStart() { return Start; }
1087 int32 GetEnd() { return Start + ComputeSize(); }
1088
1089 private:
1090 // in bytes
1091 int32 Start;
1092 // in bytes, 0:not valid, <0:unoccupied, >0:occupied
1093 int32 Size;
1094 };
1095public:
1096
1097 // constructor
1099 {
1101
1102 NewRange.SetUnOccupied(0, TotalSize);
1103
1104 Entries.Add(NewRange);
1105 }
1106
1107 // specified range must be non occupied
1108 void OccupyRange(FRange InRange)
1109 {
1110 check(InRange.IsValid());
1111 check(InRange.IsOccupied());
1112
1113 for(uint32 i = 0, Num = Entries.Num(); i < Num; ++i)
1114 {
1115 FRange& ref = Entries[i];
1116
1117 if(!ref.IsOccupied())
1118 {
1119 int32 OverlapSize = ref.GetEnd() - InRange.GetStart();
1120
1121 if(OverlapSize > 0)
1122 {
1123 int32 FrontCutSize = InRange.GetStart() - ref.GetStart();
1124
1125 // there is some front part we cut off
1126 if(FrontCutSize > 0)
1127 {
1129
1131
1133
1134 ++i;
1135
1136 // remaining is added behind the found element
1137 Entries.Insert(NewFrontRange, i);
1138
1139 // don't access ref or Num any more - Entries[] might be reallocated
1140 }
1141
1142 check(Entries[i].GetStart() == InRange.GetStart());
1143
1144 int32 BackCutSize = Entries[i].ComputeSize() - InRange.ComputeSize();
1145
1146 // otherwise the range was already occupied or not enough space was left (internal error)
1147 check(BackCutSize >= 0);
1148
1149 // there is some back part we cut off
1150 if(BackCutSize > 0)
1151 {
1153
1154 NewBackRange.SetUnOccupied(Entries[i].GetStart() + InRange.ComputeSize(), BackCutSize);
1155
1156 Entries.Insert(NewBackRange, i + 1);
1157 }
1158
1159 Entries[i] = InRange;
1160 return;
1161 }
1162 }
1163 }
1164 }
1165
1166 // @param InSize >0
1167 FRange AllocRange(uint32 InSize)//, uint32 Alignment)
1168 {
1169 check(InSize > 0);
1170
1171 for(uint32 i = 0, Num = Entries.Num(); i < Num; ++i)
1172 {
1173 FRange& ref = Entries[i];
1174
1175 if(!ref.IsOccupied())
1176 {
1177 uint32 RefSize = ref.ComputeSize();
1178
1179 // take the first fitting one - later we could optimize for minimal fragmentation
1180 if(RefSize >= InSize)
1181 {
1182 ref.MakeOccupied(InSize);
1183
1184 FRange Ret = ref;
1185
1186 if(RefSize > InSize)
1187 {
1189
1190 NewRange.SetUnOccupied(ref.GetEnd(), RefSize - InSize);
1191
1192 // remaining is added behind the found element
1193 Entries.Insert(NewRange, i + 1);
1194 }
1195 return Ret;
1196 }
1197 }
1198 }
1199
1200 // nothing found
1201 return FRange();
1202 }
1203
1204 // @param In needs to be what was returned by AllocRange()
1206 {
1207 int32 Index = Entries.Find(In);
1208
1210
1211 FRange& refIndex = Entries[Index];
1212
1213 refIndex.MakeUnOccupied();
1214
1215 Compacten(Index);
1216 }
1217
1218 // for debugging
1219 uint32 GetNumEntries() const { return Entries.Num(); }
1220
1221 // for debugging
1223 {
1224 uint32 Ret = 0;
1225
1226 for(uint32 i = 0, Num = Entries.Num(); i < Num; ++i)
1227 {
1228 const FRange& ref = Entries[i];
1229
1230 if(!ref.IsOccupied())
1231 {
1232 uint32 RefSize = ref.ComputeSize();
1233
1234 Ret += RefSize;
1235 }
1236 }
1237
1238 return Ret;
1239 }
1240
1241private:
1242 // compact unoccupied ranges
1243 void Compacten(uint32 StartIndex)
1244 {
1245 check(!Entries[StartIndex].IsOccupied());
1246
1247 if(StartIndex && !Entries[StartIndex-1].IsOccupied())
1248 {
1249 // Seems we can combine with the element before,
1250 // searching further is not needed as we assume the buffer was compact before the last change.
1251 --StartIndex;
1252 }
1253
1255 uint32 SizeGained = 0;
1256
1257 for(uint32 i = StartIndex + 1, Num = Entries.Num(); i < Num; ++i)
1258 {
1259 FRange& ref = Entries[i];
1260
1261 if(!ref.IsOccupied())
1262 {
1264 SizeGained += ref.ComputeSize();
1265 }
1266 else
1267 {
1268 break;
1269 }
1270 }
1271
1273 {
1274 Entries.RemoveAt(StartIndex + 1, ElementsToRemove, EAllowShrinking::No);
1275 Entries[StartIndex].ExtendUnoccupied(SizeGained);
1276 }
1277 }
1278
1279public:
1280 static void Test()
1281 {
1282 // testing code
1283#if !UE_BUILD_SHIPPING
1284 {
1285 // create
1286 FRangeAllocator A(10);
1287 check(A.GetNumEntries() == 1);
1288 check(A.ComputeUnoccupiedSize() == 10);
1289
1290 // successfully alloc
1291 FRangeAllocator::FRange a = A.AllocRange(3);
1292 check(a.GetStart() == 0);
1293 check(a.GetEnd() == 3);
1294 check(a.IsOccupied());
1295 check(A.GetNumEntries() == 2);
1296 check(A.ComputeUnoccupiedSize() == 7);
1297
1298 // successfully alloc
1299 FRangeAllocator::FRange b = A.AllocRange(4);
1300 check(b.GetStart() == 3);
1301 check(b.GetEnd() == 7);
1302 check(b.IsOccupied());
1303 check(A.GetNumEntries() == 3);
1304 check(A.ComputeUnoccupiedSize() == 3);
1305
1306 // failed alloc
1307 FRangeAllocator::FRange c = A.AllocRange(4);
1308 check(!c.IsValid());
1309 check(!c.IsOccupied());
1310 check(A.GetNumEntries() == 3);
1311 check(A.ComputeUnoccupiedSize() == 3);
1312
1313 // successfully alloc
1314 FRangeAllocator::FRange d = A.AllocRange(3);
1315 check(d.GetStart() == 7);
1316 check(d.GetEnd() == 10);
1317 check(d.IsOccupied());
1318 check(A.GetNumEntries() == 3);
1319 check(A.ComputeUnoccupiedSize() == 0);
1320
1321 A.ReleaseRange(b);
1322 check(A.GetNumEntries() == 3);
1323 check(A.ComputeUnoccupiedSize() == 4);
1324
1325 A.ReleaseRange(a);
1326 check(A.GetNumEntries() == 2);
1327 check(A.ComputeUnoccupiedSize() == 7);
1328
1329 A.ReleaseRange(d);
1330 check(A.GetNumEntries() == 1);
1331 check(A.ComputeUnoccupiedSize() == 10);
1332
1333 // we are back to a clean start
1334
1335 FRangeAllocator::FRange e = A.AllocRange(10);
1336 check(e.GetStart() == 0);
1337 check(e.GetEnd() == 10);
1338 check(e.IsOccupied());
1339 check(A.GetNumEntries() == 1);
1340 check(A.ComputeUnoccupiedSize() == 0);
1341
1342 A.ReleaseRange(e);
1343 check(A.GetNumEntries() == 1);
1344 check(A.ComputeUnoccupiedSize() == 10);
1345
1346 // we are back to a clean start
1347
1348 // create define range we want to block out
1350 f.SetOccupied(2, 4);
1351 A.OccupyRange(f);
1352 check(A.GetNumEntries() == 3);
1353 check(A.ComputeUnoccupiedSize() == 6);
1354
1355 FRangeAllocator::FRange g = A.AllocRange(2);
1356 check(g.GetStart() == 0);
1357 check(g.GetEnd() == 2);
1358 check(g.IsOccupied());
1359 check(A.GetNumEntries() == 3);
1360 check(A.ComputeUnoccupiedSize() == 4);
1361
1362 FRangeAllocator::FRange h = A.AllocRange(4);
1363 check(h.GetStart() == 6);
1364 check(h.GetEnd() == 10);
1365 check(h.IsOccupied());
1366 check(A.GetNumEntries() == 3);
1367 check(A.ComputeUnoccupiedSize() == 0);
1368 }
1369#endif // !UE_BUILD_SHIPPING
1370 }
1371
1372private:
1373
1374 // ordered from small to large (for efficient compactening)
1375 TArray<FRange> Entries;
1376};
1377
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define check(expr)
Definition AssertionMacros.h:314
RENDERCORE_API void ClearUAV(FRHICommandList &RHICmdList, FRHIUnorderedAccessView *Buffer, uint32 NumBytes, uint32 Value, bool bBarriers=true)
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define RESTRICT
Definition Platform.h:706
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
#define DECLARE_CYCLE_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:679
#define DECLARE_DWORD_COUNTER_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:682
#define DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:684
#define DECLARE_MEMORY_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:687
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DX_MAX_MSAA_COUNT
Definition D3D11RHIPrivate.h:50
D3D11RHI_API FD3D11DynamicRHI * GD3D11RHI
Definition WindowsD3D11Device.cpp:33
TAutoConsoleVariable< int32 > GD3D11DebugCvar
TAutoConsoleVariable< int32 > GCVarUseSharedKeyedMutex
ID3D11DeviceContext FD3D11DeviceContext
Definition D3D11Resources.h:14
#define VERIFYD3D11RESULT(x)
Definition D3D11Util.h:89
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define THIRD_PARTY_INCLUDES_START
Definition GenericPlatformCompilerPreSetup.h:63
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
@ Num
Definition MetalRHIPrivate.h:234
EPixelFormat
Definition PixelFormat.h:16
ERHIAccess
Definition RHIAccess.h:11
@ SF_NumStandardFrequencies
Definition RHIDefinitions.h:222
EUniformBufferUsage
Definition RHIDefinitions.h:536
ECubeFace
Definition RHIDefinitions.h:525
EResourceLockMode
Definition RHIDefinitions.h:785
uint8 FUniformBufferStaticSlot
Definition RHIDefinitions.h:722
EUniformBufferValidation
Definition RHIDefinitions.h:546
ETextureCreateFlags
Definition RHIDefinitions.h:1091
ERenderQueryType
Definition RHIDefinitions.h:258
EPrimitiveType
Definition RHIDefinitions.h:822
#define GSupportsDepthBoundsTest
Definition RHIGlobals.h:807
ERHIPipeline
Definition RHIPipeline.h:13
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
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 D3D11RHI.Build.cs:8
Definition RHI.h:403
Definition D3D11Resources.h:421
Definition D3D11RHIPrivate.h:109
void StartTiming()
Definition D3D11Query.cpp:713
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition D3D11Query.cpp:660
static void CalibrateTimers(FD3D11DynamicRHI *InD3DRHI)
Definition D3D11Query.cpp:645
void EndTiming()
Definition D3D11Query.cpp:729
uint64 GetTiming(bool bGetCurrentResultsAndBlock=false)
Definition D3D11Query.cpp:747
virtual void ReleaseRHI() override
Definition D3D11Query.cpp:694
Definition D3D11Resources.h:85
Definition D3D11ConstantBuffer.h:33
Definition D3D11RHIPrivate.h:174
bool IsResultValid()
Definition D3D11Query.cpp:845
virtual void ReleaseRHI() override
Definition D3D11Query.cpp:876
void StartTracking()
Definition D3D11Query.cpp:833
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition D3D11Query.cpp:867
void EndTracking()
Definition D3D11Query.cpp:839
D3D11_QUERY_DATA_TIMESTAMP_DISJOINT GetResult()
Definition D3D11Query.cpp:850
Definition D3D11RHIPrivate.h:1020
virtual bool IsSupported() override
Definition WindowsD3D11Device.cpp:651
virtual bool SupportsDynamicReloading() override
Definition D3D11RHIPrivate.h:1023
virtual FDynamicRHI * CreateRHI(ERHIFeatureLevel::Type RequestedFeatureLevel=ERHIFeatureLevel::Num) override
Definition WindowsD3D11Device.cpp:934
Definition D3D11RHIPrivate.h:366
TRefCountPtr< ID3DUserDefinedAnnotation > Direct3DDeviceIMAnnotation
Definition D3D11RHIPrivate.h:720
virtual D3D11RHI_API void RHISubmitCommandLists(FRHISubmitCommandListsArgs &&Args) final override
Definition D3D11Commands.cpp:1453
virtual D3D11RHI_API void RHIMapStagingSurface(FRHITexture *Texture, FRHIGPUFence *Fence, void *&OutData, int32 &OutWidth, int32 &OutHeight, uint32 GPUIndex=0) final override
Definition D3D11RenderTarget.cpp:594
virtual D3D11RHI_API void RHIAliasTextureResources(FTextureRHIRef &DestTexture, FTextureRHIRef &SrcTexture) final override
Definition D3D11Texture.cpp:1659
virtual D3D11RHI_API FRasterizerStateRHIRef RHICreateRasterizerState(const FRasterizerStateInitializerRHI &Initializer) final override
Definition D3D11State.cpp:203
virtual D3D11RHI_API FTextureRHIRef RHIGetViewportBackBuffer(FRHIViewport *Viewport) final override
Definition D3D11Viewport.cpp:834
D3D11RHI_API void SetupAfterDeviceCreation()
Definition D3D11Device.cpp:478
virtual D3D11RHI_API bool RHIGetTextureMemoryVisualizeData(FColor *TextureData, int32 SizeX, int32 SizeY, int32 Pitch, int32 PixelSize) final override
Definition D3D11Texture.cpp:115
virtual D3D11RHI_API void RHISetBlendFactor(const FLinearColor &BlendFactor) final override
Definition D3D11Commands.cpp:590
D3D11RHI_API void ResolveTexture(UE::RHICore::FResolveTextureInfo Info)
Definition D3D11RenderTarget.cpp:879
virtual D3D11RHI_API void * RHIGetNativeDevice() final override
Definition D3D11Device.cpp:787
D3D11RHI_API void UpdateMSAASettings()
Definition D3D11Device.cpp:616
virtual D3D11RHI_API void CommitNonComputeShaderConstants()
Definition D3D11Commands.cpp:989
virtual D3D11RHI_API FTextureRHIRef RHICreateTexture2DArrayFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &, ID3D11Texture2D *Resource) final override
Definition D3D11Texture.cpp:1584
virtual D3D11RHI_API void RHIBeginRenderPass(const FRHIRenderPassInfo &InInfo, const TCHAR *InName) final override
Definition D3D11RenderTarget.cpp:858
FD3D11StateCache & GetStateCache()
Definition D3D11RHIPrivate.h:704
virtual D3D11RHI_API void RHIEndRenderQuery_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery) override final
Definition D3D11Query.cpp:84
virtual D3D11RHI_API void RHIAdvanceFrameForGetViewportBackBuffer(FRHIViewport *Viewport, bool bPresent) final override
Definition D3D11Viewport.cpp:830
virtual D3D11RHI_API FBoundShaderStateRHIRef RHICreateBoundShaderState(FRHIVertexDeclaration *VertexDeclaration, FRHIVertexShader *VertexShader, FRHIPixelShader *PixelShader, FRHIGeometryShader *GeometryShader) final override
Definition D3D11Shaders.cpp:313
virtual D3D11RHI_API void RHIReadSurfaceFloatData(FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex) final override
Definition D3D11RenderTarget.cpp:617
D3D11RHI_API void ClearAllShaderResources()
Definition D3D11RHI.cpp:318
D3D11RHI_API TRefCountPtr< ID3D11Texture2D > GetStagingTexture(FRHITexture *TextureRHI, FIntRect InRect, FIntRect &OutRect, FReadSurfaceDataFlags InFlags)
Definition D3D11RenderTarget.cpp:296
TRefCountPtr< FD3D11UnorderedAccessView > CurrentUAVs[D3D11_PS_CS_UAV_REGISTER_COUNT]
Definition D3D11RHIPrivate.h:770
D3D11RHI_API void GetBestSupportedMSAASetting(DXGI_FORMAT PlatformFormat, uint32 MSAACount, uint32 &OutBestMSAACount, uint32 &OutMSAAQualityLevels)
Definition D3D11Device.cpp:415
uint32 NumUAVs
Definition D3D11RHIPrivate.h:786
virtual D3D11RHI_API void RHIGetTextureMemoryStats(FTextureMemoryStats &OutStats) final override
Definition D3D11Texture.cpp:103
virtual D3D11RHI_API bool RHIGetRenderQueryResult(FRHIRenderQuery *RenderQuery, uint64 &OutResult, bool bWait, uint32 GPUIndex=INDEX_NONE) final override
Definition D3D11Query.cpp:103
AGSContext * AmdAgsContext
Definition D3D11RHIPrivate.h:747
bool bDXGISupportsHDR
Definition D3D11RHIPrivate.h:714
virtual D3D11RHI_API void RHISetStreamSource(uint32 StreamIndex, FRHIBuffer *VertexBuffer, uint32 Offset) final override
Definition D3D11Commands.cpp:89
HANDLE ExceptionHandlerHandle
Definition D3D11RHIPrivate.h:903
virtual D3D11RHI_API void CommitComputeShaderConstants()
Definition D3D11Commands.cpp:1017
virtual D3D11RHI_API void RHIEndUpdateTexture3D(FRHICommandListBase &RHICmdList, FUpdateTexture3DData &UpdateData) final override
Definition D3D11Texture.cpp:1313
virtual D3D11RHI_API void RHIUpdateUniformBuffer(FRHICommandListBase &RHICmdList, FRHIUniformBuffer *UniformBufferRHI, const void *Contents) final override
Definition D3D11UniformBuffer.cpp:296
virtual D3D11RHI_API IDXGISwapChain * RHIGetSwapChain(FRHIViewport *InViewport) const final override
Definition D3D11RHI.cpp:642
virtual D3D11RHI_API void CleanupD3DDevice()
Definition D3D11Device.cpp:647
virtual D3D11RHI_API FRHILockTextureResult RHILockTexture(FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments) final override
Definition D3D11Texture.cpp:1186
D3D11RHI_API FD3D11Texture * CreateTextureFromResource(bool bTextureArray, bool bCubeTexture, EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D11Texture2D *TextureResource)
Definition D3D11Texture.cpp:1329
D3D11RHI_API void ReadSurfaceDataNoMSAARaw(FRHITexture *TextureRHI, FIntRect Rect, TArray< uint8 > &OutData, FReadSurfaceDataFlags InFlags)
Definition D3D11RenderTarget.cpp:371
D3D11RHI_API FD3D11Texture * FinalizeCreateTextureInternal(FD3D11Texture *Texture, const FRHITextureDesc &InDesc, TConstArrayView< uint8 > InitialData)
Definition D3D11Texture.cpp:809
virtual D3D11RHI_API void RHIFinalizeContext(FRHIFinalizeContextArgs &&Args, TRHIPipelineArray< IRHIPlatformCommandList * > &Output) final override
Definition D3D11Commands.cpp:1423
void BeginRecursiveCommand()
Definition D3D11RHIPrivate.h:650
FD3D11ViewableResource * CurrentResourceBoundAsIB
Definition D3D11RHIPrivate.h:782
virtual D3D11RHI_API void RHIBlockUntilGPUIdle() final override
Definition D3D11Commands.cpp:1298
D3D11RHI_API void InternalSetUAVVSPS(uint32 BindIndex, FD3D11UnorderedAccessView *UnorderedAccessViewRHI)
Definition D3D11Commands.cpp:647
virtual D3D11RHI_API void RHISetStaticUniformBuffer(FUniformBufferStaticSlot Slot, FRHIUniformBuffer *Buffer) final override
Definition D3D11Commands.cpp:349
virtual D3D11RHI_API FRHICalcTextureSizeResult RHICalcTexturePlatformSize(FRHITextureDesc const &Desc, uint32 FirstMipIndex) final override
Definition D3D11Texture.cpp:93
D3D11RHI_API bool IsQuadBufferStereoEnabled()
Definition WindowsD3D11Device.cpp:984
virtual D3D11RHI_API FTextureRHIRef AsyncReallocateTexture2D_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus) final override
Definition D3D11Texture.cpp:999
virtual D3D11RHI_API FShaderResourceViewRHIRef RHICreateShaderResourceView(class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc) final override
Definition D3D11SRV.cpp:159
TArray< FRHIUniformBuffer * > StaticUniformBuffers
Definition D3D11RHIPrivate.h:883
virtual D3D11RHI_API void RHIEndRenderPass() final override
Definition D3D11RenderTarget.cpp:867
virtual void RHIEnableDepthBoundsTest(bool bEnable) final override
Definition D3D11RHIPrivate.h:568
D3D11RHI_API void EnableUAVOverlap()
Definition D3D11Commands.cpp:1476
TOptional< FTimestampCalibration > TimestampCalibration
Definition D3D11RHIPrivate.h:872
virtual D3D11RHI_API FVertexDeclarationRHIRef RHICreateVertexDeclaration(const FVertexDeclarationElementList &Elements) final override
Definition D3D11VertexDeclaration.cpp:109
virtual D3D11RHI_API void RHISetDepthStencilState(FRHIDepthStencilState *NewState, uint32 StencilRef) final override
Definition D3D11Commands.cpp:570
TMap< FD3D11LockedKey, FD3D11LockedData > FD3D11LockTracker
Definition D3D11RHIPrivate.h:368
virtual D3D11RHI_API FGeometryShaderRHIRef RHICreateGeometryShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D11Shaders.cpp:153
D3D11RHI_API bool SetupDisplayHDRMetaData()
Definition WindowsD3D11Device.cpp:471
static FD3D11Texture * ResourceCast(FRHITexture *Texture)
Definition D3D11RHIPrivate.h:395
virtual D3D11RHI_API void * RHIGetNativeCommandBuffer() final override
Definition D3D11Device.cpp:797
D3D11RHI_API void ReleasePooledUniformBuffers()
Definition D3D11UniformBuffer.cpp:395
virtual D3D11RHI_API void RHIHandleDisplayChange() final override
Definition WindowsD3D11Device.cpp:566
D3D11RHI_API void ValidateExclusiveDepthStencilAccess(FExclusiveDepthStencil Src) const
Definition D3D11Commands.cpp:540
virtual D3D11RHI_API FRenderQueryRHIRef RHICreateRenderQuery(ERenderQueryType QueryType) final override
Definition D3D11Query.cpp:71
FD3D11RenderQuery * First
Definition D3D11RHIPrivate.h:794
FComputeShaderRHIRef CurrentComputeShader
Definition D3D11RHIPrivate.h:899
virtual D3D11RHI_API FPixelShaderRHIRef RHICreatePixelShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D11Shaders.cpp:180
virtual D3D11RHI_API void RHICopyBufferRegion(FRHIBuffer *DestBuffer, uint64 DstOffset, FRHIBuffer *SourceBuffer, uint64 SrcOffset, uint64 NumBytes) final override
Definition D3D11Texture.cpp:1747
TRefCountPtr< FD3D11Texture > CurrentDepthTexture
Definition D3D11RHIPrivate.h:779
static FD3D11DynamicRHI & Get()
Definition D3D11RHIPrivate.h:387
virtual D3D11RHI_API ID3D11ShaderResourceView * RHIGetShaderResourceView(FRHITexture *InTexture) const final override
Definition D3D11RHI.cpp:678
virtual D3D11RHI_API void RHISetRasterizerState(FRHIRasterizerState *NewState) final override
Definition D3D11Commands.cpp:99
TRefCountPtr< FD3D11ConstantBuffer > GSConstantBuffer
Definition D3D11RHIPrivate.h:894
TRefCountPtr< FD3D11DeviceContext > Direct3DDeviceIMContext
Definition D3D11RHIPrivate.h:717
struct FD3D11DynamicRHI::FProfiler Profiler
virtual D3D11RHI_API void RHISetBlendState(FRHIBlendState *NewState, const FLinearColor &BlendFactor) final override
Definition D3D11Commands.cpp:584
virtual D3D11RHI_API void RHIUnmapStagingSurface(FRHITexture *Texture, uint32 GPUIndex=0) final override
Definition D3D11RenderTarget.cpp:611
void BindUniformBuffer(uint32 BufferIndex, FRHIUniformBuffer *BufferRHI)
Definition D3D11Commands.cpp:106
virtual D3D11RHI_API void RHIUpdateTexture3D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8 *SourceData) final override
Definition D3D11Texture.cpp:1284
virtual D3D11RHI_API void RHIWriteGPUFence_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIGPUFence *FenceRHI) final override
Definition D3D11Commands.cpp:1849
void ApplyStaticUniformBuffers(TRHIShader *Shader)
Definition D3D11Commands.cpp:120
bool bDiscardSharedConstants
Definition D3D11RHIPrivate.h:889
int32 MaxBoundVertexBufferIndex
Definition D3D11RHIPrivate.h:784
virtual D3D11RHI_API FTextureRHIRef RHICreateTexture2DFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D11Texture2D *Resource) final override
Definition D3D11Texture.cpp:1579
D3D11RHI_API void InitConstantBuffers()
Definition WindowsD3D11ConstantBuffer.cpp:106
D3D11RHI_API bool GetQueryData(ID3D11Query *Query, void *Data, SIZE_T DataSize, bool bTimestamp, bool bWait, bool bStallRHIThread)
Definition D3D11Query.cpp:336
virtual D3D11RHI_API void RHIRegisterWork(uint32 NumPrimitives) final override
Definition D3D11RHI.cpp:684
virtual D3D11RHI_API void RHISetStencilRef(uint32 StencilRef) final override
Definition D3D11Commands.cpp:579
uint32 UAVSChanged
Definition D3D11RHIPrivate.h:774
virtual D3D11RHI_API FGPUFenceRHIRef RHICreateGPUFence(const FName &Name) final override
Definition D3D11Commands.cpp:1859
virtual D3D11RHI_API void RHIReleaseTransition(FRHITransition *Transition) final override
Definition D3D11Commands.cpp:1564
virtual D3D11RHI_API void RHIEndTransitions(TArrayView< const FRHITransition * > Transitions) override final
Definition D3D11Commands.cpp:1573
virtual D3D11RHI_API void * LockBuffer_BottomOfPipe(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override
Definition D3D11Buffer.cpp:217
virtual D3D11RHI_API void Init() override
Definition WindowsD3D11Device.cpp:979
FD3D11DeviceContext * GetDeviceContext() const
Definition D3D11RHIPrivate.h:625
TArray< FD3D11Viewport * > Viewports
Definition D3D11RHIPrivate.h:737
uint32 UAVBindCount
Definition D3D11RHIPrivate.h:773
void SetResourcesFromTables(const ShaderType *RESTRICT)
virtual D3D11RHI_API void RHIDispatchIndirectComputeShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D11Commands.cpp:186
virtual D3D11RHI_API class IRHICommandContext * RHIGetDefaultContext() final override
Definition D3D11Commands.cpp:1407
D3D11RHI_API bool PollQueryResultsForEndFrame(FD3D11RenderQuery *Query)
Definition D3D11Query.cpp:314
virtual D3D11RHI_API void RHITick(float DeltaTime) final override
Definition D3D11Viewport.cpp:741
virtual D3D11RHI_API void RHIUnlockStagingBuffer(FRHIStagingBuffer *StagingBuffer) final override
Definition D3D11Commands.cpp:1695
virtual D3D11RHI_API FBlendStateRHIRef RHICreateBlendState(const FBlendStateInitializerRHI &Initializer) final override
Definition D3D11State.cpp:269
virtual D3D11RHI_API void RHICopyToStagingBuffer(FRHIBuffer *SourceBuffer, FRHIStagingBuffer *DestinationStagingBuffer, uint32 Offset, uint32 NumBytes) final override
Definition D3D11Commands.cpp:1645
virtual D3D11RHI_API void RHISetShaderUnbinds(FRHIComputeShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds) final override
Definition D3D11Commands.cpp:514
virtual D3D11RHI_API void RHIDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D11Commands.cpp:1219
D3D11RHI_API void FinalizeCreateTexture2DInternal(FD3D11Texture *Texture, TConstArrayView< D3D11_SUBRESOURCE_DATA > InitialData)
Definition D3D11Texture.cpp:532
virtual D3D11RHI_API FUniformBufferRHIRef RHICreateUniformBuffer(const void *Contents, const FRHIUniformBufferLayout *Layout, EUniformBufferUsage Usage, EUniformBufferValidation Validation) final override
Definition D3D11UniformBuffer.cpp:170
virtual D3D11RHI_API FRHITextureInitializer RHICreateTextureInitializer(FRHICommandListBase &RHICmdList, const FRHITextureCreateDesc &CreateDesc) final override
Definition D3D11Texture.cpp:835
TRefCountPtr< FD3D11ConstantBuffer > VSConstantBuffer
Definition D3D11RHIPrivate.h:892
virtual D3D11RHI_API uint32 RHIComputeMemorySize(FRHITexture *TextureRHI) final override
Definition D3D11Texture.cpp:937
TRefCountPtr< IDXGIFactory1 > DXGIFactory1
Definition D3D11RHIPrivate.h:708
D3D11RHI_API void CommitGraphicsResourceTables()
Definition D3D11Commands.cpp:1040
FD3D11RenderQuery * Last
Definition D3D11RHIPrivate.h:795
virtual D3D11RHI_API FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView(class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc) final override
Definition D3D11UAV.cpp:129
D3D11RHI_API FD3D11Buffer * BeginCreateBufferInternal(const FRHIBufferCreateDesc &CreateDesc)
Definition D3D11Buffer.cpp:99
virtual D3D11RHI_API FTextureRHIRef RHIAsyncReallocateTexture2D(FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus) final override
Definition D3D11Texture.cpp:978
D3D11RHI_API void SetRenderTargets(uint32 NumSimultaneousRenderTargets, const FRHIRenderTargetView *NewRenderTargets, const FRHIDepthRenderTargetView *NewDepthStencilTarget)
Definition D3D11Commands.cpp:794
virtual void RHISetDepthBounds(float MinDepth, float MaxDepth) final override
Definition D3D11RHIPrivate.h:575
virtual D3D11RHI_API void RHIDrawIndexedPrimitive(FRHIBuffer *IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition D3D11Commands.cpp:1175
D3D11RHI_API uint32 GetMaxMSAAQuality(uint32 SampleCount)
Definition D3D11Device.cpp:430
virtual D3D11RHI_API void RHIReadSurfaceData(FRHITexture *Texture, FIntRect Rect, TArray< FColor > &OutData, FReadSurfaceDataFlags InFlags) final override
Definition D3D11RenderTarget.cpp:412
virtual D3D11RHI_API void RHISetComputeShader(FRHIComputeShader *ComputeShader) final override
Definition D3D11Commands.cpp:149
ID3D11UnorderedAccessView * UAVBound[D3D11_PS_CS_UAV_REGISTER_COUNT]
Definition D3D11RHIPrivate.h:771
TRefCountPtr< FD3D11Device > Direct3DDevice
Definition D3D11RHIPrivate.h:728
FDisplayInformationArray DisplayList
Definition D3D11RHIPrivate.h:901
FExclusiveDepthStencil CurrentDSVAccessType
Definition D3D11RHIPrivate.h:886
virtual const TCHAR * GetName() override
Definition D3D11RHIPrivate.h:383
TRefCountPtr< ID3D11DepthStencilView > CurrentDepthStencilTarget
Definition D3D11RHIPrivate.h:778
virtual D3D11RHI_API FTextureRHIRef RHIAsyncCreateTexture2D(uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags Flags, ERHIAccess InResourceState, void **InitialMipData, uint32 NumInitialMips, const TCHAR *DebugName, FGraphEventRef &OutCompletionEvent) final override
Definition D3D11Texture.cpp:877
ID3D11Device * GetDevice() const
Definition D3D11RHIPrivate.h:621
uint32 CurrentRTVOverlapMask
Definition D3D11RHIPrivate.h:775
static FORCEINLINE TD3D11ResourceTraits< TRHIType >::TConcreteType * ResourceCast(TRHIType *Resource)
Definition D3D11RHIPrivate.h:390
virtual D3D11RHI_API void RHIAsyncCopyTexture2DCopy(FRHITexture *NewTexture2DRHI, FRHITexture *Texture2DRHI, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus)
Definition D3D11Texture.cpp:948
bool RemoveLockedData(const FD3D11LockedKey &Key, FD3D11LockedData &OutLockedData)
Definition D3D11RHIPrivate.h:641
virtual D3D11RHI_API DXGI_FORMAT RHIGetSwapChainFormat(EPixelFormat InFormat) const final override
Definition D3D11RHI.cpp:648
virtual D3D11RHI_API void RHIBeginUAVOverlap() final override
Definition D3D11Commands.cpp:1592
D3D11RHI_API TOptional< FTimestampCalibration > CalibrateTimers()
Definition D3D11Query.cpp:437
virtual D3D11RHI_API void RHICreateTransition(FRHITransition *Transition, const FRHITransitionCreateInfo &CreateInfo) final override
Definition D3D11Commands.cpp:1546
int32 MaxBoundShaderResourcesIndex[SF_NumStandardFrequencies]
Definition D3D11RHIPrivate.h:783
FD3D11Adapter Adapter
Definition D3D11RHIPrivate.h:920
virtual D3D11RHI_API ID3D11DeviceContext * RHIGetDeviceContext() const final override
Definition D3D11RHI.cpp:632
virtual D3D11RHI_API ~FD3D11DynamicRHI()
Definition D3D11Device.cpp:241
uint16 DirtyUniformBuffers[SF_NumStandardFrequencies]
Definition D3D11RHIPrivate.h:881
virtual D3D11RHI_API void RHISetGraphicsPipelineState(FRHIGraphicsPipelineState *GraphicsState, uint32 StencilRef, bool bApplyAdditionalState) final override
Definition D3D11Commands.cpp:132
virtual D3D11RHI_API void RHIEndUAVOverlap() final override
Definition D3D11Commands.cpp:1597
virtual D3D11RHI_API void Shutdown() override
Definition D3D11Device.cpp:251
virtual D3D11RHI_API FComputeShaderRHIRef RHICreateComputeShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D11Shaders.cpp:207
virtual D3D11RHI_API void RHIWriteGPUFence(FRHIGPUFence *Fence) final override
Definition D3D11Commands.cpp:1854
virtual D3D11RHI_API FVertexShaderRHIRef RHICreateVertexShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D11Shaders.cpp:122
virtual D3D11RHI_API ID3D11RenderTargetView * RHIGetRenderTargetView(FRHITexture *InTexture, int32 InMipIndex=0, int32 InArraySliceIndex=-1) const final override
Definition D3D11RHI.cpp:672
TRefCountPtr< FD3D11ConstantBuffer > CSConstantBuffer
Definition D3D11RHIPrivate.h:895
D3D_FEATURE_LEVEL FeatureLevel
Definition D3D11RHIPrivate.h:740
D3D11RHI_API void CommitRenderTargetsAndUAVs()
Definition D3D11Commands.cpp:594
TRefCountPtr< ID3D11RenderTargetView > CurrentRenderTargets[D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT]
Definition D3D11RHIPrivate.h:769
virtual D3D11RHI_API FStagingBufferRHIRef RHICreateStagingBuffer() final override
Definition D3D11Commands.cpp:1604
D3D11RHI_API void DisableUAVOverlap()
Definition D3D11Commands.cpp:1512
virtual D3D11RHI_API void RHICopyTexture(FRHITexture *SourceTexture, FRHITexture *DestTexture, const FRHICopyTextureInfo &CopyInfo) final override
Definition D3D11Texture.cpp:1677
virtual D3D11RHI_API ID3D11Device * RHIGetDevice() const final override
Definition D3D11RHI.cpp:627
@ MAX_UNIFORM_BUFFERS_PER_SHADER_STAGE
Definition D3D11RHIPrivate.h:875
virtual D3D11RHI_API void RHIClearUAVFloat(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FVector4f &Values) final override
Definition D3D11UAV.cpp:257
virtual D3D11RHI_API void RHIEndDrawingViewport(FRHIViewport *Viewport, bool bPresent, bool bLockToVsync) final override
Definition D3D11Viewport.cpp:756
D3D11RHI_API EPixelFormat GetDisplayFormat(EPixelFormat InPixelFormat) const
Definition D3D11Device.cpp:819
uint32 ZeroBufferSize
Definition D3D11RHIPrivate.h:761
virtual D3D11RHI_API void RHISetShaderParameters(FRHIComputeShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
Definition D3D11Commands.cpp:466
virtual D3D11RHI_API FTextureRHIRef RHICreateTextureCubeFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D11Texture2D *Resource) final override
Definition D3D11Texture.cpp:1589
virtual D3D11RHI_API void RHIBeginTransitions(TArrayView< const FRHITransition * > Transitions) override final
Definition D3D11Commands.cpp:1569
uint32 NumSimultaneousRenderTargets
Definition D3D11RHIPrivate.h:785
virtual D3D11RHI_API void RHIDrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition D3D11Commands.cpp:1104
void * ZeroBuffer
Definition D3D11RHIPrivate.h:760
D3D11RHI_API void ClearState()
Definition D3D11RHI.cpp:98
FD3DGPUProfiler GPUProfilingData
Definition D3D11RHIPrivate.h:917
virtual D3D11RHI_API void FlushPendingLogs() override
Definition WindowsD3D11Device.cpp:994
bool bRenderDoc
Definition D3D11RHIPrivate.h:905
D3D11RHI_API FD3D11Buffer * CreateBufferInternal(const FRHIBufferCreateDesc &CreateDesc, TConstArrayView< uint8 > InitialData)
Definition D3D11Buffer.cpp:152
D3D11RHI_API void ReadSurfaceDataMSAARaw(FRHITexture *TextureRHI, FIntRect Rect, TArray< uint8 > &OutData, FReadSurfaceDataFlags InFlags)
Definition D3D11RenderTarget.cpp:465
D3D11RHI_API FD3D11Texture * CreateTextureInternal(const FRHITextureCreateDesc &CreateDesc, TConstArrayView< uint8 > InitialData)
Definition D3D11Texture.cpp:826
void SetShaderUnbindsCommon(TConstArrayView< FRHIShaderParameterUnbind > InUnbinds)
Definition D3D11Commands.cpp:493
virtual D3D11RHI_API void RHIReplaceResources(FRHICommandListBase &RHICmdList, TArray< FRHIResourceReplaceInfo > &&ReplaceInfos) final override
Definition D3D11Buffer.cpp:328
bool bUAVOverlapEnabled
Definition D3D11RHIPrivate.h:1004
D3D11RHI_API void UpdateMemoryStats()
Definition D3D11RHI.cpp:600
FCriticalSection LockTrackerCS
Definition D3D11RHIPrivate.h:734
virtual D3D11RHI_API void UnlockBuffer_BottomOfPipe(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer) final override
Definition D3D11Buffer.cpp:290
virtual D3D11RHI_API void RHISetBoundShaderState(FRHIBoundShaderState *BoundShaderState) final override
Definition D3D11Commands.cpp:299
virtual D3D11RHI_API ID3D11Buffer * RHIGetResource(FRHIBuffer *InBuffer) const final override
Definition D3D11RHI.cpp:654
uint32 UAVBindFirst
Definition D3D11RHIPrivate.h:772
virtual D3D11RHI_API void * RHIGetNativeInstance() final override
Definition D3D11Device.cpp:792
virtual D3D11RHI_API void RHIVerifyResult(ID3D11Device *Device, HRESULT Result, const ANSICHAR *Code, const ANSICHAR *Filename, uint32 Line) const final override
Definition D3D11RHI.cpp:691
D3D11RHI_API void ConditionalClearShaderResource(FD3D11ViewableResource *Resource, bool bCheckBoundInputAssembler)
Definition D3D11RHI.cpp:274
D3D11RHI_API void InternalSetUAVCS(uint32 BindIndex, FD3D11UnorderedAccessView *UnorderedAccessViewRHI)
Definition D3D11Commands.cpp:634
virtual D3D11RHI_API void RHIGetDisplaysInformation(FDisplayInformationArray &OutDisplayInformation) final override
Definition WindowsD3D11Viewport.cpp:450
virtual D3D11RHI_API void RHIDrawPrimitiveIndirect(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D11Commands.cpp:1130
virtual D3D11RHI_API bool RHIGetAvailableResolutions(FScreenResolutionArray &Resolutions, bool bIgnoreRefreshRate) final override
Definition WindowsD3D11Device.cpp:1694
uint32 PresentCounter
Definition D3D11RHIPrivate.h:789
struct FD3D11DynamicRHI::@2464 ActiveQueries
virtual D3D11RHI_API IDXGIAdapter * RHIGetAdapter() const final override
Definition D3D11RHI.cpp:637
TRefCountPtr< FD3D11ConstantBuffer > PSConstantBuffer
Definition D3D11RHIPrivate.h:893
virtual D3D11RHI_API void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override
Definition D3D11Commands.cpp:270
D3D11RHI_API void DisableQuadBufferStereo()
Definition WindowsD3D11Device.cpp:989
virtual D3D11RHI_API int64 RHIGetResourceMemorySize(FRHITexture *InTexture) const final override
Definition D3D11RHI.cpp:666
void SetShaderParametersCommon(FD3D11ConstantBuffer *StageConstantBuffer, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters)
Definition D3D11Commands.cpp:419
virtual D3D11RHI_API FViewportRHIRef RHICreateViewport(void *WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) override
Definition D3D11Viewport.cpp:704
D3D11RHI_API void CommitComputeResourceTables(FD3D11ComputeShader *ComputeShader)
Definition D3D11Commands.cpp:1097
virtual D3D11RHI_API void RHIEndRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition D3D11Query.cpp:97
virtual D3D11RHI_API void RHIClearUAVUint(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FUintVector4 &Values) final override
Definition D3D11UAV.cpp:263
virtual D3D11RHI_API void RHIDrawIndexedIndirect(FRHIBuffer *IndexBufferRHI, FRHIBuffer *ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances) final override
Definition D3D11Commands.cpp:1149
virtual D3D11RHI_API void InitD3DDevice()
Definition WindowsD3D11Device.cpp:1157
TGlobalResource< TBoundShaderStateHistory< 10000 > > BoundShaderStateHistory
Definition D3D11RHIPrivate.h:898
FD3D11LockTracker LockTracker
Definition D3D11RHIPrivate.h:733
D3D11RHI_API FD3D11Texture * BeginCreateTextureInternal(const FRHITextureCreateDesc &CreateDesc)
Definition D3D11Texture.cpp:245
virtual D3D11RHI_API void RHISetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ) final override
Definition D3D11Commands.cpp:211
virtual D3D11RHI_API void * RHILockStagingBuffer(FRHIStagingBuffer *StagingBuffer, FRHIGPUFence *Fence, uint32 Offset, uint32 SizeRHI) final override
Definition D3D11Commands.cpp:1688
FD3D11ViewableResource * CurrentResourcesBoundAsVBs[D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]
Definition D3D11RHIPrivate.h:781
D3D11RHI_API void CommitRenderTargets(bool bClearUAVS)
Definition D3D11Commands.cpp:602
virtual D3D11RHI_API FTextureRHIRef RHICreateAliasedTexture(FTextureRHIRef &SourceTexture) final override
Definition D3D11Texture.cpp:1668
D3D11RHI_API void FinalizeCreateTexture3DInternal(FD3D11Texture *Texture, TConstArrayView< D3D11_SUBRESOURCE_DATA > InitialData)
Definition D3D11Texture.cpp:698
uint32 AvailableMSAAQualities[DX_MAX_MSAA_COUNT+1]
Definition D3D11RHIPrivate.h:757
virtual D3D11RHI_API void RHISetMultipleViewports(uint32 Count, const FViewportBounds *Data) final override
Definition D3D11Shaders.cpp:234
virtual D3D11RHI_API void RHIEndFrame(const FRHIEndFrameArgs &Args) final override
Definition D3D11RHI.cpp:26
virtual D3D11RHI_API void RHIBeginRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition D3D11Query.cpp:92
virtual D3D11RHI_API void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override
Definition D3D11Commands.cpp:162
void AddLockedData(const FD3D11LockedKey &Key, const FD3D11LockedData &LockedData)
Definition D3D11RHIPrivate.h:635
FD3D11StateCache StateCache
Definition D3D11RHIPrivate.h:730
static void ResolveTextureUsingShader(FD3D11DynamicRHI *const This, FD3D11Texture *const SourceTexture, FD3D11Texture *const DestTexture, ID3D11RenderTargetView *const DestTextureRTV, ID3D11DepthStencilView *const DestTextureDSV, D3D11_TEXTURE2D_DESC const &ResolveTargetDesc, FResolveRect const &SourceRect, FResolveRect const &DestRect, typename TPixelShader::FParameter const PixelShaderParameter)
Definition D3D11RenderTarget.cpp:51
virtual D3D11RHI_API FDepthStencilStateRHIRef RHICreateDepthStencilState(const FDepthStencilStateInitializerRHI &Initializer) final override
Definition D3D11State.cpp:222
uint32 CurrentUAVMask
Definition D3D11RHIPrivate.h:776
virtual D3D11RHI_API void RHISetStereoViewport(float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ) override
Definition D3D11Commands.cpp:237
virtual D3D11RHI_API void RHIResizeViewport(FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen) final override
Definition D3D11Viewport.cpp:718
EPrimitiveType PrimitiveType
Definition D3D11RHIPrivate.h:767
virtual D3D11RHI_API void RHIUpdateTexture2D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, const uint8 *SourceData) final override
Definition D3D11Texture.cpp:1224
virtual D3D11RHI_API void RHISetStaticUniformBuffers(const FUniformBufferStaticBindings &InUniformBuffers) final override
Definition D3D11Commands.cpp:339
virtual D3D11RHI_API void RHIGetSupportedResolution(uint32 &Width, uint32 &Height) final override
Definition D3D11Device.cpp:347
virtual D3D11RHI_API void RHIRead3DSurfaceFloatData(FRHITexture *Texture, FIntRect Rect, FIntPoint ZMinMax, TArray< FFloat16Color > &OutData) final override
Definition D3D11RenderTarget.cpp:741
virtual D3D11RHI_API IRHIComputeContext * RHIGetCommandContext(ERHIPipeline Pipeline, FRHIGPUMask GPUMask) final override
Definition D3D11Commands.cpp:1412
IDXGIFactory1 * GetFactory() const
Definition D3D11RHIPrivate.h:630
const FD3D11Adapter & GetAdapter() const
Definition D3D11RHIPrivate.h:913
void RegisterGPUWork(uint32 NumPrimitives=0, uint32 NumVertices=0)
Definition D3D11RHIPrivate.h:909
virtual D3D11RHI_API FSamplerStateRHIRef RHICreateSamplerState(const FSamplerStateInitializerRHI &Initializer) final override
Definition D3D11State.cpp:137
virtual D3D11RHI_API FRHIBufferInitializer RHICreateBufferInitializer(FRHICommandListBase &RHICmdList, const FRHIBufferCreateDesc &CreateDesc) final override
Definition D3D11Buffer.cpp:159
FRHIUniformBuffer * BoundUniformBuffers[SF_NumStandardFrequencies][MAX_UNIFORM_BUFFERS_PER_SHADER_STAGE]
Definition D3D11RHIPrivate.h:878
D3D11RHI_API void SetRenderTargetsAndClear(const FRHISetRenderTargetsInfo &RenderTargetsInfo)
Definition D3D11Commands.cpp:919
FD3D11ViewableResource * CurrentResourcesBoundAsSRVs[SF_NumStandardFrequencies][D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]
Definition D3D11RHIPrivate.h:780
D3D11RHI_API void PollQueryResults()
Definition D3D11Query.cpp:305
D3D11RHI_API void CommitUAVs()
Definition D3D11Commands.cpp:668
void RegisterGPUDispatch(FIntVector GroupCount)
Definition D3D11RHIPrivate.h:910
virtual D3D11RHI_API void RHIBindDebugLabelName(FRHICommandListBase &RHICmdList, FRHITexture *Texture, const TCHAR *Name) final override
Definition D3D11Texture.cpp:1320
D3D11RHI_API void FinalizeCreateBufferInternal(FD3D11Buffer *Buffer, TConstArrayView< uint8 > InitialData)
Definition D3D11Buffer.cpp:107
virtual D3D11RHI_API void RHIUnlockTexture(FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments) final override
Definition D3D11Texture.cpp:1207
void SetShaderResourceView(FD3D11ViewableResource *Resource, ID3D11ShaderResourceView *SRV, int32 ResourceIndex)
Definition D3D11RHIPrivate.h:693
virtual D3D11RHI_API void RHIFlushResources() final override
Definition D3D11Device.cpp:782
bool bCurrentDepthStencilStateIsReadOnly
Definition D3D11RHIPrivate.h:764
Definition D3D11RHIPrivate.h:240
~FD3D11EventNodeFrame()
Definition D3D11RHIPrivate.h:253
virtual void LogDisjointQuery() override
Definition D3D11RHI.cpp:545
FD3D11EventNodeFrame(class FD3D11DynamicRHI *InRHI)
Definition D3D11RHIPrivate.h:243
virtual float GetRootTimingResults() override
Definition D3D11RHI.cpp:531
virtual void StartFrame() override
Definition D3D11RHI.cpp:517
virtual void EndFrame() override
Definition D3D11RHI.cpp:525
FD3D11BufferedGPUTiming RootEventTiming
Definition D3D11RHIPrivate.h:271
FD3D11DisjointTimeStampQuery DisjointQuery
Definition D3D11RHIPrivate.h:274
Definition D3D11RHIPrivate.h:203
virtual void StopTiming() override
Definition D3D11RHIPrivate.h:230
virtual ~FD3D11EventNode()
Definition D3D11RHIPrivate.h:213
FD3D11BufferedGPUTiming Timing
Definition D3D11RHIPrivate.h:235
FD3D11EventNode(const TCHAR *InName, FGPUProfilerEventNode *InParent, class FD3D11DynamicRHI *InRHI)
Definition D3D11RHIPrivate.h:205
virtual void StartTiming() override
Definition D3D11RHIPrivate.h:225
virtual float GetTiming() override
Definition D3D11RHI.cpp:479
Definition D3D11Util.h:135
Definition D3D11Resources.h:323
Definition D3D11StateCachePrivate.h:59
float DepthBoundsMax
Definition D3D11StateCachePrivate.h:63
float DepthBoundsMin
Definition D3D11StateCachePrivate.h:62
bool bDepthBoundsEnabled
Definition D3D11StateCachePrivate.h:61
Definition D3D11Resources.h:154
Definition D3D11Resources.h:557
Definition D3D11Resources.h:132
Definition D3D11Viewport.h:36
Definition DynamicRHI.h:206
Definition RHIResources.h:409
Definition Float16Color.h:13
Definition NameTypes.h:617
Definition RHIResources.h:696
Definition RHIResources.h:733
Definition RHIResources.h:1581
Definition RHICommandList.h:455
static FRHICommandListImmediate & GetImmediateCommandList()
Definition RHICommandList.h:5528
Definition RHICommandList.h:4626
Definition RHIResources.h:1018
Definition RHIResources.h:4073
Definition RHIResources.h:686
Definition RHIResources.h:2387
Definition RHIResources.h:978
Definition RHIResources.h:1058
Definition RHIResources.h:947
Definition RHIResources.h:972
Definition RHIResources.h:679
Definition RHIResources.h:2444
Definition RHIResources.h:4018
Definition RHIResources.h:4167
Definition RHIResources.h:3981
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 D3D11RHIPrivate.h:1040
uint32 GetNumEntries() const
Definition D3D11RHIPrivate.h:1219
FRange AllocRange(uint32 InSize)
Definition D3D11RHIPrivate.h:1167
void ReleaseRange(FRange In)
Definition D3D11RHIPrivate.h:1205
void OccupyRange(FRange InRange)
Definition D3D11RHIPrivate.h:1108
FRangeAllocator(uint32 TotalSize)
Definition D3D11RHIPrivate.h:1098
uint32 ComputeUnoccupiedSize() const
Definition D3D11RHIPrivate.h:1222
static void Test()
Definition D3D11RHIPrivate.h:1280
Definition RHITypes.h:16
Definition RenderResource.h:37
Definition SecureHash.h:226
Definition ScopeLock.h:141
Definition ThreadSafeCounter.h:14
Definition RHIContext.h:49
Definition DynamicRHI.h:1472
Definition RHIContext.h:903
Definition RHIContext.h:693
Definition RHIContext.h:257
UE::RHI::GPUProfiler::FEvent::FStats StatEvent
Definition RHIContext.h:567
Definition RHIContext.h:234
Definition RHICore.Build.cs:7
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2083
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG UE_FORCEINLINE_HINT bool Find(const ElementType &Item, SizeType &Index) const
Definition Array.h:1302
SizeType Insert(std::initializer_list< ElementType > InitList, const SizeType InIndex)
Definition Array.h:1875
Definition IConsoleManager.h:1792
Definition RenderResource.h:543
Definition IndirectArray.h:20
Definition UnrealString.h.inl:34
Definition Queue.h:48
Definition RHICommandList.h:5170
Definition RHIPipeline.h:55
Definition RefCounting.h:454
UE_FORCEINLINE_HINT bool IsValid() const
Definition RefCounting.h:594
Definition GPUProfiler.h:310
Type
Definition RHIFeatureLevel.h:20
@ Num
Definition RHIFeatureLevel.h:54
Definition Voronoi.cpp:10
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
Definition RHIResources.h:246
Definition Color.h:486
Definition D3D11RHIPrivate.h:324
bool bSoftwareAdapter
Definition D3D11RHIPrivate.h:334
FD3D11Adapter()
Definition D3D11RHIPrivate.h:340
D3D_FEATURE_LEVEL MaxSupportedFeatureLevel
Definition D3D11RHIPrivate.h:331
bool IsValid() const
Definition D3D11RHIPrivate.h:356
DXGI_ADAPTER_DESC DXGIAdapterDesc
Definition D3D11RHIPrivate.h:328
FD3D11Adapter(TRefCountPtr< IDXGIAdapter > InDXGIAdapter, bool bInSoftwareAdatper, const FD3D11DeviceBasicInfo &DeviceInfo)
Definition D3D11RHIPrivate.h:344
bool bUMA
Definition D3D11RHIPrivate.h:337
TRefCountPtr< IDXGIAdapter > DXGIAdapter
Definition D3D11RHIPrivate.h:326
Definition D3D11RHIPrivate.h:318
D3D_FEATURE_LEVEL MaxFeatureLevel
Definition D3D11RHIPrivate.h:319
bool bUMA
Definition D3D11RHIPrivate.h:320
FD3D11RenderQuery * Ptr
Definition D3D11RHIPrivate.h:805
FEndFrameQuery(FEndFrameQuery &&Other)
Definition D3D11RHIPrivate.h:808
Definition D3D11RHIPrivate.h:802
struct FD3D11DynamicRHI::FProfiler::FFrame::FEndFrameQuery EndFrameQuery
FFrame()
Definition D3D11RHIPrivate.h:824
Definition D3D11RHIPrivate.h:800
TArray< FD3D11RenderQuery * > TimestampPool
Definition D3D11RHIPrivate.h:834
FFrame Current
Definition D3D11RHIPrivate.h:831
TQueue< TUniquePtr< FFrame > > Pending
Definition D3D11RHIPrivate.h:832
TArray< FD3D11RenderQuery * > TimestampPoolEndFrame
Definition D3D11RHIPrivate.h:835
Definition D3D11RHIPrivate.h:861
uint64 CPUFrequency
Definition D3D11RHIPrivate.h:863
uint64 GPUTimestamp
Definition D3D11RHIPrivate.h:865
uint64 GPUFrequency
Definition D3D11RHIPrivate.h:866
uint64 CPUTimestamp
Definition D3D11RHIPrivate.h:862
Definition D3D11RHIPrivate.h:91
static int64 GDedicatedVideoMemory
Definition D3D11RHIPrivate.h:93
static int64 GDedicatedSystemMemory
Definition D3D11RHIPrivate.h:96
static int64 GTotalGraphicsMemory
Definition D3D11RHIPrivate.h:102
static int64 GSharedSystemMemory
Definition D3D11RHIPrivate.h:99
Definition D3D11Util.h:171
Definition D3D11RHIPrivate.h:309
bool bUAVBarrier
Definition D3D11RHIPrivate.h:310
Definition D3D11RHIPrivate.h:282
TIndirectArray< FD3D11EventNodeFrame > GPUHitchEventNodeFrames
Definition D3D11RHIPrivate.h:289
virtual FGPUProfilerEventNode * CreateEventNode(const TCHAR *InName, FGPUProfilerEventNode *InParent) override
Definition D3D11RHIPrivate.h:293
class FD3D11DynamicRHI * D3D11RHI
Definition D3D11RHIPrivate.h:286
virtual void PopEvent() override
Definition D3D11RHI.cpp:511
FD3D11BufferedGPUTiming FrameTiming
Definition D3D11RHIPrivate.h:284
virtual void PushEvent(const TCHAR *Name, FColor Color) override
Definition D3D11RHI.cpp:506
void EndFrame()
Definition D3D11RHI.cpp:375
Definition Color.h:48
Definition RHIResources.h:1417
Definition RHIBufferInitializer.h:12
Definition DynamicRHI.h:120
Definition RHICommandList.h:183
Definition MultiGPU.h:33
Definition DynamicRHI.h:149
Definition DynamicRHI.h:198
Definition RHIResources.h:5248
Definition RHIShaderParameters.h:32
Definition RHIShaderParameters.h:354
Definition RHIShaderParameters.h:16
Definition RHIResources.h:1938
Definition RHIResources.h:1689
Definition RHITextureInitializer.h:50
Definition RHITransition.h:382
Definition RHITransition.h:475
Definition RHIResources.h:1150
Definition RHIResources.h:2648
Definition D3D11RHIPrivate.h:1044
bool operator==(const FRange &rhs) const
Definition D3D11RHIPrivate.h:1084
int32 GetStart()
Definition D3D11RHIPrivate.h:1086
uint32 ComputeSize() const
Definition D3D11RHIPrivate.h:1076
bool IsOccupied() const
Definition D3D11RHIPrivate.h:1075
void SetUnOccupied(int32 InStart, int32 InSize)
Definition D3D11RHIPrivate.h:1063
void SetOccupied(int32 InStart, int32 InSize)
Definition D3D11RHIPrivate.h:1053
FRange()
Definition D3D11RHIPrivate.h:1046
int32 GetEnd()
Definition D3D11RHIPrivate.h:1087
bool IsValid()
Definition D3D11RHIPrivate.h:1073
void MakeOccupied(int32 InSize)
Definition D3D11RHIPrivate.h:1081
void ExtendUnoccupied(int32 InSize)
Definition D3D11RHIPrivate.h:1079
void MakeUnOccupied()
Definition D3D11RHIPrivate.h:1082
Definition RHI.h:278
Definition RHIResources.h:5209
Definition RHI.h:232
Definition RHIStats.h:12
Definition RHICommandList.h:220
Definition RHITypes.h:127
Definition RHITypes.h:155
Definition RHI.h:507
Definition ID3D11DynamicRHI.h:16
Definition LinuxPlatformSplash.cpp:43
Definition D3D11Resources.h:569
Definition Optional.h:131
Definition IntPoint.h:25
Definition GPUProfiler.h:25