UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
D3D12RHIPrivate.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 D3D12RHIPrivate.h: Private D3D RHI definitions.
5 =============================================================================*/
6
7#pragma once
8
9#include "D3D12RHICommon.h"
10#include "ID3D12DynamicRHI.h"
11
12#include "CoreMinimal.h"
13#include "Misc/CommandLine.h"
14#include "Misc/App.h"
15#include "Misc/ConfigCacheIni.h"
16#include "Misc/Paths.h"
17#include "Misc/ScopeLock.h"
18#include "Misc/ScopeRWLock.h"
20#include "HAL/RunnableThread.h"
21#include "HAL/ThreadManager.h"
24#include "EngineGlobals.h"
26
27// Dependencies.
28#include "DXGIUtilities.h"
29#include "GPUProfiler.h"
30#include "ShaderCore.h"
31#include "HDRHelper.h"
32
33#include "D3D12Submission.h"
34#include "D3D12RHIDefinitions.h"
35
36// TODO reorder includes so we just include D3D12PipelineState.h here
37#include COMPILED_PLATFORM_HEADER(D3D12PipelineState.h)
38
39#include "D3D12DiskCache.h"
42#include "D3D12Residency.h"
43
44// D3D RHI public headers.
45#include "D3D12Util.h"
46#include "D3D12State.h"
47#include "D3D12Resources.h"
48#include "D3D12RootSignature.h"
49#include "D3D12Shader.h"
50#include "D3D12View.h"
51#include "D3D12CommandList.h"
52#include "D3D12Texture.h"
54#include "D3D12Viewport.h"
55#include "D3D12ConstantBuffer.h"
56#include "D3D12Query.h"
59#include "D3D12Allocation.h"
61#include "D3D12CommandContext.h"
62#include "D3D12Stats.h"
63#include "D3D12Device.h"
64#include "D3D12Adapter.h"
65#include "D3D12Access.h"
66
67template< typename t_A, typename t_B >
68inline t_A RoundUpToNextMultiple(const t_A& a, const t_B& b)
69{
70 return ((a - 1) / b + 1) * b;
71}
72
73using namespace D3D12RHI;
74
76
77static bool D3D12RHI_ShouldCreateWithWarp()
78{
79 // Use the warp adapter if specified on the command line.
80 static bool bCreateWithWarp = FParse::Param(FCommandLine::Get(), TEXT("warp"));
81 return bCreateWithWarp;
82}
83
84static bool D3D12RHI_AllowSoftwareFallback()
85{
86 static bool bAllowSoftwareRendering = FParse::Param(FCommandLine::Get(), TEXT("AllowSoftwareRendering"));
88}
89
90static bool D3D12RHI_ShouldAllowAsyncResourceCreation()
91{
92 static bool bAllowAsyncResourceCreation = !FParse::Param(FCommandLine::Get(), TEXT("nod3dasync"));
94}
95
96static bool D3D12RHI_ShouldForceCompatibility()
97{
98 // Suppress the use of newer D3D12 features.
99 static bool bForceCompatibility =
100 FParse::Param(FCommandLine::Get(), TEXT("d3dcompat")) ||
101 FParse::Param(FCommandLine::Get(), TEXT("d3d12compat"));
102 return bForceCompatibility;
103}
104
105static bool D3D12RHI_IsRenderDocPresent(ID3D12Device* Device)
106{
108 if (SUCCEEDED(IIDFromString(L"{A7AA6116-9C8D-4BBA-9083-B4D816B71B78}", &RenderDocID)))
109 {
111 if (SUCCEEDED(Device->QueryInterface(RenderDocID, (void**)RenderDoc.GetInitReference())))
112 {
113 return true;
114 }
115 }
116
117 return false;
118}
119
125
131{
132 static constexpr uint32 MaxPerformanceGroups = 10;
133
134 // Estimated RTPSO group based on occupancy or other platform-specific heuristics.
135 // Group 0 is expected to be performing worst, 9 (MaxPerformanceGroups-1) is expected to be the best.
137
142};
143
148{
149};
150
152
154struct AGSContext;
155
157
160{
162
163 static FD3D12DynamicRHI* SingleD3DRHI;
164 static bool bFormatAliasedTexturesMustBeCreatedUsingCommonLayout;
165
166public:
167
168 static FD3D12DynamicRHI* GetD3DRHI() { return SingleD3DRHI; }
169
171
172 // Dump & Log all the information we have on a GPU crash (NvAfterMath, DRED, Breadcrumbs, ...)
173 void OutputGPUCrashReport(FTextBuilder& ErrorMessage);
174
175 // Returns true if the calling thread is the interrupt thread
176 // (or acting as the interrupt thread when D3D12_USE_INTERRUPT_THREAD is zero).
177 bool IsInInterruptThread() const;
178
179 // Main crash function for handling D3D API errors
181
182#if WITH_RHI_BREADCRUMBS
183 // Prints the active breadcrumb tree to the log.
184 // Can only be called on the interrupt thread.
185 void DumpActiveBreadcrumbs(FRHIBreadcrumbState::EVerbosity Verbosity);
186#endif
187
188private:
189 // Calls OutputGpuCrashReport, and also forces a quit.
190 void TerminateOnGPUCrash();
191
193 int64 RequestedTexturePoolSize;
194
195 friend class FD3D12Thread;
196 class FD3D12Thread* SubmissionThread = nullptr;
197 class FD3D12Thread* InterruptThread = nullptr;
198
199 // Used when a dedicated interrupt thread is disabled (D3D12_USE_INTERRUPT_THREAD)
200 // Tracks the thread ID of the thread currently acting as the interrupt thread.
201 uint32 InterruptThreadID = 0;
202
203 enum class EQueueStatus
204 {
205 None = 0,
206
207 // Work was processed through the queue.
208 Processed = 1 << 0,
209
210 // The queue has further, unprocessed work.
211 Pending = 1 << 1
212 };
213 FRIEND_ENUM_CLASS_FLAGS(EQueueStatus);
214
215 struct FProcessResult
216 {
217 EQueueStatus Status = EQueueStatus::None;
218 uint32 WaitTimeout = INFINITE;
219 };
220
221 TQueue<TArray<FD3D12Payload*>*, EQueueMode::Mpsc> PendingPayloadsForSubmission;
222
223 // Ensures all prior batched command lists have reached the driver ID3D12Queue object.
224 void FlushBatchedPayloads(FD3D12Queue::FPayloadArray& PayloadsToHandDown);
225
226 // Executes reserved resource commit operations and cross-queue sync when required
227 void UpdateReservedResources(FD3D12Payload* Payload);
228
229 FCriticalSection SubmissionCS;
230 FCriticalSection InterruptCS;
231
232 FProcessResult ProcessSubmissionQueue();
233 FProcessResult ProcessInterruptQueue();
234
235 FCriticalSection ObjectsToDeleteCS;
237
238 virtual void UpdateMemoryStats();
239
240public:
241 template <typename ...Args>
242 void DeferredDelete(Args&&... InArgs)
243 {
244 FScopeLock Lock(&ObjectsToDeleteCS);
245 ObjectsToDelete.Emplace(Forward<Args>(InArgs)...);
246 }
247
249 void SubmitPayloads(TArray<FD3D12Payload*>&& Payloads);
250
251 // Processes the interrupt queue on the calling thread, until the specified GraphEvent is signaled.
252 // If the GraphEvent is nullptr, processes the queue until no further progress is made.
253 void ProcessInterruptQueueUntil(FGraphEvent* GraphEvent);
254
255 // Called when the GPU has crashed. This function will not return.
257
258 struct FD3D12TimingArray : public TArray<TUniquePtr<FD3D12Timing>, TInlineAllocator<GD3D12MaxNumQueues>>
259 {
264 };
265
268
271
272 // Inserts a task graph task which is executed once all previously submitted GPU work has completed (across all queues, device and adapters).
275
276 // Enumerates all queues across all devices and active adapters
277 void ForEachQueue(TFunctionRef<void(FD3D12Queue&)> Callback);
278
281
283 virtual ~FD3D12DynamicRHI();
284
285 // FDynamicRHI interface.
286 virtual void Init() override;
287 virtual void PostInit() override;
288 virtual void Shutdown() override;
289 virtual const TCHAR* GetName() override { return TEXT("D3D12"); }
290
293 {
294 return static_cast<TReturnType*>(Resource);
295 }
296
298 static FORCEINLINE const TReturnType* ResourceCast(const TRHIType* Resource)
299 {
300 return static_cast<const TReturnType*>(Resource);
301 }
302
305 {
307 return Object ? static_cast<TReturnType*>(Object->GetLinkedObject(GPUIndex)) : nullptr;
308 }
309
310 virtual bool QueueSupportsTileMapping(ED3D12QueueType /*InQueueType*/) { return true; }
311
314
315 virtual bool GetHardwareGPUFrameTime(double& OutGPUFrameTime) const
316 {
317 OutGPUFrameTime = 0.0;
318 return false;
319 }
320
321 virtual void RHIEndFrame_RenderThread(FRHICommandListImmediate& RHICmdList) final override;
322 virtual void RHIEndFrame(const FRHIEndFrameArgs& Args) final override;
323
336 virtual FGPUFenceRHIRef RHICreateGPUFence(const FName& Name) final override;
339 virtual void RHIUnlockStagingBuffer(FRHIStagingBuffer* StagingBuffer) final override;
344 virtual void RHICreateTransition(FRHITransition* Transition, const FRHITransitionCreateInfo& CreateInfo) final override;
345 virtual void RHIReleaseTransition(FRHITransition* Transition) final override;
347 virtual void RHIUpdateUniformBuffer(FRHICommandListBase& RHICmdList, FRHIUniformBuffer* UniformBufferRHI, const void* Contents) final override;
348
350
355#if ENABLE_LOW_LEVEL_MEM_TRACKER || UE_MEMORY_TRACE_ENABLED
356 virtual void RHIUpdateAllocationTags(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer) final override;
357#endif
358 virtual void RHIUnlockBufferMGPU(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer, uint32 GPUIndex) final override;
361 virtual FRHICalcTextureSizeResult RHICalcTexturePlatformSize(const FRHITextureDesc& Desc, uint32 FirstMipIndex) override;
362 virtual void RHIGetTextureMemoryStats(FTextureMemoryStats& OutStats) final override;
363 virtual bool RHIGetTextureMemoryVisualizeData(FColor* TextureData, int32 SizeX, int32 SizeY, int32 Pitch, int32 PixelSize) final override;
365
367
368 virtual uint32 RHIComputeMemorySize(FRHITexture* TextureRHI) final override;
370
371 virtual FRHILockTextureResult RHILockTexture(FRHICommandListImmediate& RHICmdList, const FRHILockTextureArgs& Arguments) final override;
372 virtual void RHIUnlockTexture(FRHICommandListImmediate& RHICmdList, const FRHILockTextureArgs& Arguments) final override;
373
374 virtual void RHIUpdateTexture2D(FRHICommandListBase& RHICmdList, FRHITexture* Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D& UpdateRegion, uint32 SourcePitch, const uint8* SourceData) final override;
375 virtual void RHIUpdateTexture3D(FRHICommandListBase& RHICmdList, FRHITexture* Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D& UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8* SourceData) final override;
376 virtual FUpdateTexture3DData RHIBeginUpdateTexture3D(FRHICommandListBase& RHICmdList, FRHITexture* Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D& UpdateRegion) final override;
377 virtual void RHIEndUpdateTexture3D(FRHICommandListBase& RHICmdList, FUpdateTexture3DData& UpdateData) final override;
379 virtual void RHIBindDebugLabelName(FRHICommandListBase& RHICmdList, FRHITexture* Texture, const TCHAR* Name) final override;
380 virtual void RHIBindDebugLabelName(FRHICommandListBase& RHICmdList, FRHIBuffer* Buffer, const TCHAR* Name) final override;
382 virtual void RHIReadSurfaceData(FRHITexture* TextureRHI, FIntRect InRect, TArray<FLinearColor>& OutData, FReadSurfaceDataFlags InFlags) final override;
383 virtual void RHIMapStagingSurface(FRHITexture* Texture, FRHIGPUFence* Fence, void*& OutData, int32& OutWidth, int32& OutHeight, uint32 GPUIndex = 0) final override;
386 virtual void RHIReadSurfaceFloatData(FRHITexture* Texture, FIntRect Rect, TArray<FFloat16Color>& OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex) final override;
396#if D3D12RHI_SUPPORTS_UAV_BACKBUFFER
398#endif
399 virtual void RHIAliasTextureResources(FTextureRHIRef& DestTexture, FTextureRHIRef& SrcTexture) final override;
400 virtual FTextureRHIRef RHICreateAliasedTexture(FTextureRHIRef& SourceTexture) final override;
405 virtual void RHIAdvanceFrameForGetViewportBackBuffer(FRHIViewport* Viewport, bool bPresent) final override;
406 virtual void RHIFlushResources() final override;
407 virtual FViewportRHIRef RHICreateViewport(void* WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override;
408 virtual void RHIResizeViewport(FRHIViewport* Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen) final override;
409 virtual void RHIResizeViewport(FRHIViewport* ViewportRHI, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override;
410#if PLATFORM_WINDOWS
411 virtual void RHIHandleDisplayChange() final override;
412#endif
413 virtual void RHITick(float DeltaTime) final override;
414 virtual void RHIBlockUntilGPUIdle() final override;
416 virtual void RHIGetSupportedResolution(uint32& Width, uint32& Height) final override;
417 virtual void* RHIGetNativeDevice() final override;
423 virtual void RHIFinalizeContext(FRHIFinalizeContextArgs&& Args, TRHIPipelineArray<IRHIPlatformCommandList*>& Output) final override;
424 virtual void RHISubmitCommandLists(FRHISubmitCommandListsArgs&& Args) final override;
426
427 // Some RHIs can be suspended, most likely due to the HW going into suspend mode, this allows device dependent threads to wait until it's safe
428 virtual FRWLock* RHIGetSuspendedLock() { return nullptr; }
429
430 virtual void RHIRunOnQueue(ED3D12RHIRunOnQueueType QueueType, TFunction<void(ID3D12CommandQueue*)>&& CodeToRun, bool bWaitForSubmission) final override;
431 virtual void RHIFlushResourceBarriers(FRHICommandListBase& RHICmdList, uint32 InGPUIndex) final override;
432
433 // Allows external plugins to add the given FRHIResource's residency handle to the current RHICmdList's context.
434 // This ensures resources used by external plugins and made resident before the work begins on the GPU.
436
438
439 virtual void RHIWriteGPUFence_TopOfPipe(FRHICommandListBase& RHICmdList, FRHIGPUFence* FenceRHI) final override;
440
441 // SRV / UAV creation functions
442 virtual FShaderResourceViewRHIRef RHICreateShaderResourceView (class FRHICommandListBase& RHICmdList, FRHIViewableResource* Resource, FRHIViewDesc const& ViewDesc) override;
443 virtual FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView(class FRHICommandListBase& RHICmdList, FRHIViewableResource* Resource, FRHIViewDesc const& ViewDesc) override;
444#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
447#endif
448
449 // ID3D12DynamicRHI interface.
451 virtual bool RHIIsPixEnabled() const final override;
468 virtual D3D12_CPU_DESCRIPTOR_HANDLE RHIGetRenderTargetView(FRHITexture* InTexture, int32 InMipIndex = 0, int32 InArraySliceIndex = 0) const final override;
473 virtual void RHIVerifyResult(ID3D12Device* Device, HRESULT Result, const ANSICHAR* Code, const ANSICHAR* Filename, uint32 Line, FString Message = FString()) const final override;
474
475 //
476 // The Following functions are the _RenderThread version of the above functions. They allow the RHI to control the thread synchronization for greater efficiency.
477 // These will be un-commented as they are implemented.
478 //
479
481
482#if D3D12_RHI_RAYTRACING
483
487
489
494
496#endif //D3D12_RHI_RAYTRACING
497
498 virtual FShaderBundleRHIRef RHICreateShaderBundle(const FShaderBundleCreateInfo& CreateInfo) override;
499
500 virtual void HandleGpuTimeout(FD3D12Payload* Payload, double SecondsSinceSubmission);
501
502 bool IsQuadBufferStereoEnabled() const;
504
505 void* LockBuffer(FRHICommandListBase& RHICmdList, FD3D12Buffer* Buffer, uint32 BufferSize, EBufferUsageFlags BufferUsage, uint32 Offset, uint32 Size, EResourceLockMode LockMode);
507
509 {
510 // Not supported on PC
511 return false;
512 }
514 {
515 // Not supported on PC
516 }
517
520
521public:
522
523#if PLATFORM_SUPPORTS_VIRTUAL_TEXTURES
524 virtual void* CreateVirtualTexture(
526 D3D12_RESOURCE_DESC& ResourceDesc,
527 const struct FD3D12TextureLayout& TextureLayout,
530 ED3D12Access InitialD3D12Access) = 0;
531 virtual void DestroyVirtualTexture(ETextureCreateFlags InFlags, void* RawTextureMemory, FPlatformMemory::FPlatformVirtualMemoryBlock& RawTextureBlock, uint64 CommittedTextureSize) = 0;
532#endif
533 virtual bool HandleSpecialLock(FRHILockTextureResult& Result, FD3D12Texture* InTexture, const FRHILockTextureArgs& Arguments) { return false; }
534 virtual bool HandleSpecialUnlock(FRHICommandListBase& RHICmdList, FD3D12Texture* InTexture, const FRHILockTextureArgs& Arguments) { return false; }
535
538
540
541 bool IsPixEventEnabled() const { return bPixEventEnabled; }
542
543 template<typename PerDeviceFunction>
545
549
551
552protected:
553
555
556#if D3D12RHI_SUPPORTS_WIN_PIX
557 void* WinPixGpuCapturerHandle = nullptr;
558#endif
559
561 bool bPixEventEnabled = false;
562
565
573
575
576 // See r.PSOPrecache.D3D12.DriverCacheAware. The CVar is cached
577 // to prevent hotfixes or config dynamic layers from altering the
578 // value at runtime, which is not supported.
580
584
585#if PLATFORM_WINDOWS
587#endif
588
589public:
590
592
593 virtual FD3D12ResourceDesc GetResourceDesc(const FRHITextureDesc& CreateInfo) const;
594
601
602 // Per-platform D3D12Texture creation.
603 virtual FCreateTextureInternalResult CreateTextureInternal(const FRHITextureCreateDesc& CreateDesc, ID3D12ResourceAllocator* ResourceAllocator = nullptr);
604
605 // Create D3D12 texture with a resource allocator. Does not currently support any post-creation state or uploading of data.
607 {
608 check(CreateDesc.BulkData == nullptr);
609
611 checkSlow(CreateResult.CreateD3D12Access == CreateResult.DesiredD3D12Access);
612 return CreateResult.Texture;
613 }
614
615 virtual FD3D12Texture* CreateNewD3D12Texture(const FRHITextureCreateDesc& CreateDesc, class FD3D12Device* Device);
616
622
623 FCreateBufferInternalResult CreateBufferInternal(const FRHIBufferCreateDesc& CreateDesc, bool bHasInitialData, ID3D12ResourceAllocator* ResourceAllocator);
624
630
635
637
638protected:
639
642
652
662
664
666
667 // This should only be called by Dynamic RHI member functions
668 FD3D12Device* GetRHIDevice(uint32 GPUIndex) const;
669
670 void SetupD3D12Debug();
671
672 HANDLE FlipEvent;
673
675
677};
678
679ENUM_CLASS_FLAGS(FD3D12DynamicRHI::EQueueStatus);
680
683{
684public:
685
689
693
694 // IModuleInterface
695 virtual bool SupportsDynamicReloading() override { return false; }
696 virtual void StartupModule() override;
697 virtual void ShutdownModule() override;
698
699 // IDynamicRHIModule
700 virtual bool IsSupported() override { return IsSupported(ERHIFeatureLevel::SM5); }
703
704private:
705
706#if D3D12RHI_SUPPORTS_WIN_PIX
707 void* WindowsPixDllHandle = nullptr;
708 void* WinPixGpuCapturerHandle = nullptr;
709#endif
710
711 TArray<TSharedPtr<FD3D12Adapter>> ChosenAdapters;
712
713 // set MaxSupportedFeatureLevel and ChosenAdapter
714 void FindAdapter();
715};
716
717// Helper to push/pop a desired state on a resource. Handles both tracked and untracked resources.
719{
720private:
721 FD3D12ContextCommon& Context;
722 const FD3D12Resource* pResource;
723 ED3D12Access BeforeD3D12Access;
724 const ED3D12Access DesiredD3D12Access;
725 const uint32 Subresource;
726 bool bRestoreState;
727
728public:
735 : Context(InContext)
736 , pResource(InResource)
737 , BeforeD3D12Access(InBeforeD3D12Access)
738 , DesiredD3D12Access(InDesiredD3D12Access)
739 , Subresource (InSubresource)
740 , bRestoreState(false)
741 {
742 check(IsValidAccess(DesiredD3D12Access));
743 check(DesiredD3D12Access != ED3D12Access::Unknown);
744
745 const bool bBeforED3D12AccessIsKnown = BeforeD3D12Access != ED3D12Access::Unknown;
747 {
748 BeforeD3D12Access = bBeforED3D12AccessIsKnown ? BeforeD3D12Access : pResource->GetDefaultAccess();
749 check(IsValidAccess(BeforeD3D12Access));
750 check(BeforeD3D12Access != ED3D12Access::Unknown);
751
752 Context.AddBarrier(pResource, BeforeD3D12Access, DesiredD3D12Access, Subresource);
753 bRestoreState = true;
754 }
755 }
756
769
771 {
772 if (bRestoreState)
773 {
774 Context.AddBarrier(pResource, DesiredD3D12Access, BeforeD3D12Access, Subresource);
775 }
776 }
777};
778
779// Returns the given format as a string. Unsupported formats are treated as DXGI_FORMAT_UNKNOWN.
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define FORCEINLINE_DEBUGGABLE
Definition CoreMiscDefines.h:74
#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::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
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
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
ED3D12Access
Definition D3D12Access.h:15
constexpr bool IsValidAccess(ED3D12Access InD3D12Access)
Definition D3D12Access.h:78
ED3D12QueueType
Definition D3D12Queue.h:11
const TCHAR * LexToString(DXGI_FORMAT Format)
Definition D3D12RHI.cpp:991
TAutoConsoleVariable< int32 > GD3D12DebugCvar
t_A RoundUpToNextMultiple(const t_A &a, const t_B &b)
Definition D3D12RHIPrivate.h:68
FD3D12WorkaroundFlags GD3D12WorkaroundFlags
Definition D3D12RHI.cpp:56
#define FRIEND_ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:17
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
ED3D12RHIRunOnQueueType
Definition ID3D12DynamicRHI.h:16
EPixelFormat
Definition PixelFormat.h:16
ERHIAccess
Definition RHIAccess.h:11
EShaderFrequency
Definition RHIDefinitions.h:202
EBufferUsageFlags
Definition RHIDefinitions.h:892
EUniformBufferUsage
Definition RHIDefinitions.h:536
ECubeFace
Definition RHIDefinitions.h:525
EResourceLockMode
Definition RHIDefinitions.h:785
EUniformBufferValidation
Definition RHIDefinitions.h:546
ETextureCreateFlags
Definition RHIDefinitions.h:1091
ERenderQueryType
Definition RHIDefinitions.h:258
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
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AndroidPlatformMemory.h:38
Definition TaskGraphInterfaces.h:471
Definition RHI.h:403
Definition RHIResources.h:4820
Definition D3D12Adapter.h:136
Definition D3D12Resources.h:1017
Definition D3D12CommandContext.h:513
Definition D3D12CommandContext.h:199
Definition D3D12Device.h:176
Definition D3D12RHIPrivate.h:683
~FD3D12DynamicRHIModule()
Definition D3D12RHIPrivate.h:690
virtual bool SupportsDynamicReloading() override
Definition D3D12RHIPrivate.h:695
virtual void StartupModule() override
Definition WindowsD3D12Device.cpp:1130
virtual void ShutdownModule() override
Definition WindowsD3D12Device.cpp:1153
virtual bool IsSupported() override
Definition D3D12RHIPrivate.h:700
FD3D12DynamicRHIModule()
Definition D3D12RHIPrivate.h:686
virtual FDynamicRHI * CreateRHI(ERHIFeatureLevel::Type RequestedFeatureLevel=ERHIFeatureLevel::Num) override
Definition WindowsD3D12Device.cpp:1057
Definition D3D12RHIPrivate.h:160
void ForEachQueue(TFunctionRef< void(FD3D12Queue &)> Callback)
Definition D3D12RHI.cpp:277
bool bDriverCacheAwarePSOPrecaching
Definition D3D12RHIPrivate.h:579
virtual FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView(class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc) override
Definition D3D12UAV.cpp:263
void DisableQuadBufferStereo()
Definition WindowsD3D12Device.cpp:1923
FD3D12Texture * CreateTextureFromResource(bool bTextureArray, bool bCubeTexture, EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource)
Definition D3D12Texture.cpp:2908
virtual FTextureRHIRef RHICreateAliasedTexture(FTextureRHIRef &SourceTexture) final override
Definition D3D12Texture.cpp:3054
virtual void RHIRead3DSurfaceFloatData(FRHITexture *Texture, FIntRect Rect, FIntPoint ZMinMax, TArray< FFloat16Color > &OutData) final override
Definition D3D12RenderTarget.cpp:1046
INTCExtensionContext * IntelExtensionContext
Definition D3D12RHIPrivate.h:574
virtual uint32 RHIComputeMemorySize(FRHITexture *TextureRHI) final override
Definition D3D12Texture.cpp:1377
virtual void RHIUnlockStagingBuffer(FRHIStagingBuffer *StagingBuffer) final override
Definition D3D12DirectCommandListManager.cpp:108
virtual FD3D12CommandContext * CreateCommandContext(FD3D12Device *InParent, ED3D12QueueType InQueueType, bool InIsDefaultContext)
Definition D3D12RHI.cpp:358
virtual void RHIAdvanceFrameForGetViewportBackBuffer(FRHIViewport *Viewport, bool bPresent) final override
Definition D3D12Viewport.cpp:807
virtual FBoundShaderStateRHIRef RHICreateBoundShaderState(FRHIVertexDeclaration *VertexDeclaration, FRHIVertexShader *VertexShader, FRHIPixelShader *PixelShader, FRHIGeometryShader *GeometryShader) final override
Definition D3D12Shaders.cpp:297
virtual D3D12_CPU_DESCRIPTOR_HANDLE RHIGetRenderTargetView(FRHITexture *InTexture, int32 InMipIndex=0, int32 InArraySliceIndex=0) const final override
Definition D3D12RHI.cpp:737
virtual ID3D12Device * RHIGetDevice(uint32 InIndex) const final override
Definition D3D12RHI.cpp:668
virtual FShaderResourceViewRHIRef RHICreateShaderResourceView(class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc) override
Definition D3D12SRV.cpp:318
virtual void RHIRunOnQueue(ED3D12RHIRunOnQueueType QueueType, TFunction< void(ID3D12CommandQueue *)> &&CodeToRun, bool bWaitForSubmission) final override
Definition D3D12RHI.cpp:967
virtual FD3D12Texture * CreateNewD3D12Texture(const FRHITextureCreateDesc &CreateDesc, class FD3D12Device *Device)
Definition D3D12Texture.cpp:590
void SetupD3D12Debug()
Definition D3D12RHI.cpp:942
uint32 GetAmdSupportedExtensionFlags() const
Definition D3D12RHIPrivate.h:548
static FORCEINLINE TReturnType * ResourceCast(TRHIType *Resource)
Definition D3D12RHIPrivate.h:292
FDisplayInformationArray DisplayList
Definition D3D12RHIPrivate.h:674
FD3D12Device * GetRHIDevice(uint32 GPUIndex) const
Definition D3D12RHI.cpp:293
virtual FUpdateTexture3DData RHIBeginUpdateTexture3D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion) final override
Definition D3D12Texture.cpp:2509
virtual uint32 RHIGetDeviceNodeMask(uint32 InIndex) const final override
Definition D3D12RHI.cpp:673
virtual ID3D12CommandQueue * RHIGetCommandQueue() const final override
Definition D3D12RHI.cpp:662
virtual FTextureRHIRef RHIGetViewportBackBuffer(FRHIViewport *Viewport) final override
Definition D3D12Viewport.cpp:844
virtual FRHILockTextureResult RHILockTexture(FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments) final override
Definition D3D12Texture.cpp:2490
virtual void CreateCommandQueue(FD3D12Device *Device, const D3D12_COMMAND_QUEUE_DESC &Desc, TRefCountPtr< ID3D12CommandQueue > &OutCommandQueue)
Definition D3D12RHI.cpp:363
void EnqueueEndOfPipeTask(TUniqueFunction< void()> TaskFunc, TUniqueFunction< void(FD3D12Payload &)> ModifyPayloadCallback={})
Definition D3D12RHI.cpp:392
virtual ID3D12Resource * RHIGetResource(FRHIBuffer *InBuffer) const final override
Definition D3D12RHI.cpp:690
virtual class IRHICommandContext * RHIGetDefaultContext() final override
Definition D3D12RHI.cpp:368
virtual int64 RHIGetResourceMemorySize(FRHIBuffer *InBuffer) const final override
Definition D3D12RHI.cpp:702
virtual FStagingBufferRHIRef RHICreateStagingBuffer() final override
Definition D3D12DirectCommandListManager.cpp:93
virtual FTextureRHIRef RHICreateTextureCubeFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource) final override
Definition D3D12Texture.cpp:2986
virtual void * RHILockBuffer(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override
Definition D3D12Buffer.cpp:834
virtual void RHIBlockUntilGPUIdle() final override
Definition D3D12Commands.cpp:1504
virtual void RHIEndFrame_RenderThread(FRHICommandListImmediate &RHICmdList) final override
Definition D3D12RHI.cpp:523
virtual bool HandleSpecialUnlock(FRHICommandListBase &RHICmdList, FD3D12Texture *InTexture, const FRHILockTextureArgs &Arguments)
Definition D3D12RHIPrivate.h:534
virtual FD3D12ResourceDesc GetResourceDesc(const FRHITextureDesc &CreateInfo) const
Definition D3D12Texture.cpp:224
virtual uint32 RHIGetViewportNextPresentGPUIndex(FRHIViewport *Viewport) final override
Definition D3D12Viewport.cpp:829
virtual void RHIReadSurfaceData(FRHITexture *Texture, FIntRect Rect, TArray< FColor > &OutData, FReadSurfaceDataFlags InFlags) final override
Definition D3D12RenderTarget.cpp:609
virtual ID3D12GraphicsCommandList * RHIGetGraphicsCommandList(FRHICommandListBase &ExecutingCmdList, uint32 InDeviceIndex) const final override
Definition D3D12RHI.cpp:678
void ProcessInterruptQueueOnGPUCrash()
Definition D3D12Submission.cpp:1038
virtual void * RHILockStagingBuffer(FRHIStagingBuffer *StagingBuffer, FRHIGPUFence *Fence, uint32 Offset, uint32 SizeRHI) final override
Definition D3D12DirectCommandListManager.cpp:100
virtual bool HandleSpecialLock(FRHILockTextureResult &Result, FD3D12Texture *InTexture, const FRHILockTextureArgs &Arguments)
Definition D3D12RHIPrivate.h:533
FCreateBufferInternalResult CreateBufferInternal(const FRHIBufferCreateDesc &CreateDesc, bool bHasInitialData, ID3D12ResourceAllocator *ResourceAllocator)
Definition D3D12Buffer.cpp:472
virtual FAmplificationShaderRHIRef RHICreateAmplificationShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D12Shaders.cpp:201
virtual void RHIReadSurfaceFloatData(FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, FReadSurfaceDataFlags InFlags) final override
Definition D3D12RenderTarget.cpp:923
virtual TArray< FD3D12MinimalAdapterDesc > RHIGetAdapterDescs() const final override
Definition D3D12RHI.cpp:641
void ReadSurfaceDataMSAARaw(FRHITexture *TextureRHI, FIntRect Rect, TArray< uint8 > &OutData, FReadSurfaceDataFlags InFlags)
Definition D3D12RenderTarget.cpp:688
INTCExtensionContext * GetIntelExtensionContext()
Definition D3D12RHIPrivate.h:550
virtual FRWLock * RHIGetSuspendedLock()
Definition D3D12RHIPrivate.h:428
void SubmitPayloads(TArray< FD3D12Payload * > &&Payloads)
Definition D3D12Submission.cpp:332
FUpdateTexture3DData BeginUpdateTexture3D_Internal(FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion)
Definition D3D12Texture.cpp:2737
virtual bool RHIGetRenderQueryResult(FRHIRenderQuery *RenderQuery, uint64 &OutResult, bool bWait, uint32 GPUIndex=INDEX_NONE) final override
Definition D3D12Query.cpp:292
virtual void RHIUnmapStagingSurface(FRHITexture *Texture, uint32 GPUIndex=0) final override
Definition D3D12RenderTarget.cpp:906
void ProcessTimestamps(FD3D12TimingArray const &TimingPerQueue)
Definition D3D12Submission.cpp:1365
virtual void RHIUnlockTexture(FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments) final override
Definition D3D12Texture.cpp:2496
virtual void RHIFinishExternalComputeWork(FRHICommandListBase &ExecutingCmdList, uint32 InDeviceIndex, ID3D12GraphicsCommandList *InCommandList) final override
Definition D3D12RHI.cpp:744
virtual uint64 RHIComputeStatePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer) final override
Definition D3D12State.cpp:503
virtual void Shutdown() override
Definition D3D12RHI.cpp:298
virtual void RHIReplaceResources(FRHICommandListBase &RHICmdList, TArray< FRHIResourceReplaceInfo > &&ReplaceInfos) final override
Definition D3D12Resources.cpp:1630
virtual void * RHIGetNativeComputeQueue() final override
Definition D3D12RHI.cpp:810
virtual uint32 RHIGetResourceDeviceIndex(FRHIBuffer *InBuffer) const final override
Definition D3D12RHI.cpp:696
virtual void RHITick(float DeltaTime) final override
Definition D3D12Viewport.cpp:737
virtual void RHIGetTextureMemoryStats(FTextureMemoryStats &OutStats) final override
Definition D3D12Texture.cpp:379
virtual FCreateTextureInternalResult CreateTextureInternal(const FRHITextureCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator=nullptr)
Definition D3D12Texture.cpp:622
virtual void RHIProcessDeleteQueue() final override
Definition D3D12RHI.cpp:433
FD3D12Texture * CreateAliasedD3D12Texture2D(FD3D12Texture *SourceTexture)
Definition D3D12Texture.cpp:3009
virtual void RHIEndMultiUpdateTexture3D(FRHICommandListBase &RHICmdList, TArray< FUpdateTexture3DData > &UpdateDataArray) final override
Definition D3D12Texture.cpp:2635
virtual uint64 RHIComputePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer) final override
Definition D3D12State.cpp:582
virtual void * RHIGetNativeInstance() final override
Definition D3D12RHI.cpp:815
virtual FWorkGraphPipelineStateRHIRef RHICreateWorkGraphPipelineState(const FWorkGraphPipelineStateInitializer &Initializer) final override
Definition D3D12WorkGraph.cpp:312
virtual void RHITransitionResource(FRHICommandList &RHICmdList, FRHITexture *InTexture, D3D12_RESOURCE_STATES InState, uint32 InSubResource) final override
Definition D3D12RHI.cpp:753
virtual FRHITextureInitializer RHICreateTextureInitializer(FRHICommandListBase &RHICmdList, const FRHITextureCreateDesc &CreateDesc) override
Definition D3D12Texture.cpp:1019
static FORCEINLINE const TReturnType * ResourceCast(const TRHIType *Resource)
Definition D3D12RHIPrivate.h:298
virtual FVertexShaderRHIRef RHICreateVertexShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D12Shaders.cpp:191
virtual FPixelShaderRHIRef RHICreatePixelShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D12Shaders.cpp:206
virtual FVertexDeclarationRHIRef RHICreateVertexDeclaration(const FVertexDeclarationElementList &Elements) final override
Definition D3D12VertexDeclaration.cpp:161
virtual FBlendStateRHIRef RHICreateBlendState(const FBlendStateInitializerRHI &Initializer) final override
Definition D3D12State.cpp:446
void GetBestSupportedMSAASetting(DXGI_FORMAT PlatformFormat, uint32 MSAACount, uint32 &OutBestMSAACount, uint32 &OutMSAAQualityLevels)
Definition D3D12RHI.cpp:908
virtual bool GetHardwareGPUFrameTime(double &OutGPUFrameTime) const
Definition D3D12RHIPrivate.h:315
const FD3D12Adapter & GetAdapter(uint32_t Index=0) const
Definition D3D12RHIPrivate.h:537
virtual void RHIUpdateResourceResidency(FRHICommandListBase &RHICmdList, uint32 InGPUIndex, FRHIResource *InResource) final override
Definition D3D12RHI.cpp:786
virtual void Init() override
Definition WindowsD3D12Device.cpp:1361
HANDLE FlipEvent
Definition D3D12RHIPrivate.h:672
bool IsInInterruptThread() const
Definition D3D12Submission.cpp:1068
virtual void RHIUpdateUniformBuffer(FRHICommandListBase &RHICmdList, FRHIUniformBuffer *UniformBufferRHI, const void *Contents) final override
Definition D3D12UniformBuffer.cpp:160
void SetAmdSupportedExtensionFlags(uint32 Flags)
Definition D3D12RHIPrivate.h:547
void HandleFailedD3D12Result(HRESULT D3DResult, ID3D12Device *Device, bool bCreatingTextures, const TCHAR *Message)
Definition D3D12Util.cpp:1024
bool bPixEventEnabled
Definition D3D12RHIPrivate.h:561
virtual void RHIResizeViewport(FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen) final override
Definition D3D12Viewport.cpp:714
void UnlockBuffer(FRHICommandListBase &RHICmdList, FD3D12Buffer *Buffer, EBufferUsageFlags BufferUsage)
Definition D3D12Buffer.cpp:762
virtual FWorkGraphShaderRHIRef RHICreateWorkGraphShader(TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency) override
Definition D3D12Shaders.cpp:228
virtual void EndUpdateTexture3D_ComputeShader(FRHIComputeCommandList &RHICmdList, FUpdateTexture3DData &UpdateData, FD3D12UpdateTexture3DData *UpdateDataD3D12)
Definition D3D12RHIPrivate.h:513
virtual void RHISignalManualFence(FRHICommandList &RHICmdList, ID3D12Fence *Fence, uint64 Value) final override
Definition D3D12RHI.cpp:758
virtual void RHIWriteGPUFence_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIGPUFence *FenceRHI) final override
Definition D3D12DirectCommandListManager.cpp:56
virtual FTextureRHIRef AsyncReallocateTexture2D_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus)
Definition D3D12Texture.cpp:1555
void ShutdownSubmissionPipe()
Definition D3D12Submission.cpp:203
virtual FGeometryShaderRHIRef RHICreateGeometryShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D12Shaders.cpp:211
virtual void RHIVerifyResult(ID3D12Device *Device, HRESULT Result, const ANSICHAR *Code, const ANSICHAR *Filename, uint32 Line, FString Message=FString()) const final override
Definition D3D12RHI.cpp:776
virtual FRenderQueryRHIRef RHICreateRenderQuery(ERenderQueryType QueryType) final override
Definition D3D12Query.cpp:155
void DeferredDelete(Args &&... InArgs)
Definition D3D12RHIPrivate.h:242
virtual FRHIBufferInitializer RHICreateBufferInitializer(FRHICommandListBase &RHICmdList, const FRHIBufferCreateDesc &CreateDesc) override
Definition D3D12Buffer.cpp:561
bool SetupDisplayHDRMetaData()
Definition WindowsD3D12Device.cpp:539
virtual const TCHAR * GetName() override
Definition D3D12RHIPrivate.h:289
virtual bool BeginUpdateTexture3D_ComputeShader(FUpdateTexture3DData &UpdateData, FD3D12UpdateTexture3DData *UpdateDataD3D12)
Definition D3D12RHIPrivate.h:508
virtual void RHIReleaseTransition(FRHITransition *Transition) final override
Definition D3D12CommandContext.cpp:789
FD3D12TimingArray CurrentTimingPerQueue
Definition D3D12RHIPrivate.h:266
void ProcessInterruptQueueUntil(FGraphEvent *GraphEvent)
Definition D3D12Submission.cpp:994
uint32 GetNumAdapters() const
Definition D3D12RHIPrivate.h:539
TArray< TSharedPtr< FD3D12Adapter > > ChosenAdapters
Definition D3D12RHIPrivate.h:554
virtual void RHIUpdateTextureReference(FRHICommandListBase &RHICmdList, FRHITextureReference *TextureRef, FRHITexture *NewTexture) final override
Definition D3D12TextureReference.cpp:109
virtual FTextureReferenceRHIRef RHICreateTextureReference(FRHICommandListBase &RHICmdList, FRHITexture *InReferencedTexture) final override
Definition D3D12TextureReference.cpp:98
virtual void RHIEndRenderQueryBatch_TopOfPipe(FRHICommandListBase &RHICmdList, ERenderQueryType QueryType) final override
Definition D3D12Query.cpp:261
uint32 ZeroBufferSize
Definition D3D12RHIPrivate.h:583
static FD3D12DynamicRHI * GetD3DRHI()
Definition D3D12RHIPrivate.h:168
virtual void RHISubmitCommandLists(FRHISubmitCommandListsArgs &&Args) final override
Definition D3D12Submission.cpp:261
static FORCEINLINE_DEBUGGABLE TReturnType * ResourceCast(TRHIType *Resource, uint32 GPUIndex)
Definition D3D12RHIPrivate.h:304
virtual void RHIEndUpdateTexture3D(FRHICommandListBase &RHICmdList, FUpdateTexture3DData &UpdateData) final override
Definition D3D12Texture.cpp:2514
virtual void RHIEndFrame(const FRHIEndFrameArgs &Args) final override
Definition D3D12RHI.cpp:572
void SubmitCommands(TConstArrayView< struct FD3D12FinalizedCommands * > Commands)
Definition D3D12Submission.cpp:266
virtual void * RHIGetNativeDevice() final override
Definition D3D12RHI.cpp:800
virtual void RHIFlushResources() final override
Definition D3D12RHI.cpp:387
virtual void RHIUnlockBuffer(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer) final override
Definition D3D12Buffer.cpp:870
void TerminateOnOutOfMemory(ID3D12Device *InDevice, HRESULT D3DResult, bool bCreatingTextures)
Definition D3D12Util.cpp:755
virtual 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 D3D12Texture.cpp:1106
D3D_FEATURE_LEVEL FeatureLevel
Definition D3D12RHIPrivate.h:564
virtual void RHIBindDebugLabelName(FRHICommandListBase &RHICmdList, FRHITexture *Texture, const TCHAR *Name) final override
Definition D3D12Texture.cpp:2859
virtual FGraphicsPipelineStateRHIRef RHICreateGraphicsPipelineState(const FGraphicsPipelineStateInitializer &Initializer) final override
Definition D3D12State.cpp:708
void * ZeroBuffer
Definition D3D12RHIPrivate.h:582
void EndUpdateTexture3D_Internal(FRHICommandListBase &RHICmdList, FUpdateTexture3DData &UpdateData)
Definition D3D12Texture.cpp:2782
virtual void RHIMapStagingSurface(FRHITexture *Texture, FRHIGPUFence *Fence, void *&OutData, int32 &OutWidth, int32 &OutHeight, uint32 GPUIndex=0) final override
Definition D3D12RenderTarget.cpp:866
FD3D12Buffer * CreateD3D12Buffer(const FRHIBufferCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator)
Definition D3D12RHIPrivate.h:631
virtual void RHICreateTransition(FRHITransition *Transition, const FRHITransitionCreateInfo &CreateInfo) final override
Definition D3D12CommandContext.cpp:784
virtual FShaderBundleRHIRef RHICreateShaderBundle(const FShaderBundleCreateInfo &CreateInfo) override
Definition D3D12Shaders.cpp:285
virtual FComputePipelineStateRHIRef RHICreateComputePipelineState(const FComputePipelineStateInitializer &Initializer) final override
Definition D3D12State.cpp:757
virtual FRHICalcTextureSizeResult RHICalcTexturePlatformSize(const FRHITextureDesc &Desc, uint32 FirstMipIndex) override
Definition D3D12Texture.cpp:364
FD3D12Texture * CreateD3D12Texture(const FRHITextureCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator)
Definition D3D12RHIPrivate.h:606
virtual void HandleGpuTimeout(FD3D12Payload *Payload, double SecondsSinceSubmission)
Definition D3D12RHI.cpp:928
virtual void RHIUpdateTexture2D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, const uint8 *SourceData) final override
Definition D3D12Texture.cpp:2502
virtual FViewportRHIRef RHICreateViewport(void *WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override
Definition D3D12Viewport.cpp:698
virtual FDepthStencilStateRHIRef RHICreateDepthStencilState(const FDepthStencilStateInitializerRHI &Initializer) final override
Definition D3D12State.cpp:376
AGSContext * GetAmdAgsContext()
Definition D3D12RHIPrivate.h:546
FGraphEventRef EopTask
Definition D3D12RHIPrivate.h:274
void ForEachDevice(ID3D12Device *inDevice, const PerDeviceFunction &pfPerDeviceFunction)
Definition D3D12Util.cpp:31
virtual void RHIGetDisplaysInformation(FDisplayInformationArray &OutDisplayInformation) final override
Definition WindowsD3D12Viewport.cpp:548
virtual void RHIFinalizeContext(FRHIFinalizeContextArgs &&Args, TRHIPipelineArray< IRHIPlatformCommandList * > &Output) final override
Definition D3D12Submission.cpp:222
virtual FMeshShaderRHIRef RHICreateMeshShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition D3D12Shaders.cpp:196
virtual void RHIUnlockBufferMGPU(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 GPUIndex) final override
Definition D3D12Buffer.cpp:892
void OutputGPUCrashReport(FTextBuilder &ErrorMessage)
Definition D3D12Util.cpp:871
virtual DXGI_FORMAT RHIGetSwapChainFormat(EPixelFormat InFormat) const final override
Definition D3D12RHI.cpp:684
AGSContext * AmdAgsContext
Definition D3D12RHIPrivate.h:571
bool IsQuadBufferStereoEnabled() const
Definition WindowsD3D12Device.cpp:1918
virtual bool RHIMatchPrecachePSOInitializers(const FGraphicsPipelineStateInitializer &LHS, const FGraphicsPipelineStateInitializer &RHS) final override
Definition D3D12State.cpp:653
virtual bool RHIIsPixEnabled() const final override
Definition D3D12RHI.cpp:657
virtual void RHIBeginRenderQueryBatch_TopOfPipe(FRHICommandListBase &RHICmdList, ERenderQueryType QueryType) final override
Definition D3D12Query.cpp:164
virtual FTextureRHIRef RHICreateTexture2DArrayFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource) final override
Definition D3D12Texture.cpp:2981
virtual bool QueueSupportsTileMapping(ED3D12QueueType)
Definition D3D12RHIPrivate.h:310
bool IsPixEventEnabled() const
Definition D3D12RHIPrivate.h:541
FD3D12Buffer * CreateD3D12Buffer(FRHICommandListBase *RHICmdList, const FRHIBufferCreateDesc &CreateDesc, ID3D12ResourceAllocator *ResourceAllocator=nullptr)
Definition D3D12RHIPrivate.h:625
virtual FRasterizerStateRHIRef RHICreateRasterizerState(const FRasterizerStateInitializerRHI &Initializer) final override
Definition D3D12State.cpp:347
virtual void RHIUpdateTexture3D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8 *SourceData) final override
Definition D3D12Texture.cpp:2681
virtual bool RHIGetTextureMemoryVisualizeData(FColor *TextureData, int32 SizeX, int32 SizeY, int32 Pitch, int32 PixelSize) final override
Definition D3D12Texture.cpp:472
virtual FUniformBufferRHIRef RHICreateUniformBuffer(const void *Contents, const FRHIUniformBufferLayout *Layout, EUniformBufferUsage Usage, EUniformBufferValidation Validation) final override
Definition D3D12UniformBuffer.cpp:24
virtual FTextureRHIRef RHICreateTexture2DFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding &ClearValueBinding, ID3D12Resource *Resource) final override
Definition D3D12Texture.cpp:2976
virtual void RHIEndRenderQuery_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery) final override
Definition D3D12Query.cpp:209
virtual bool RHIIsResourcePlaced(FRHIBuffer *InBuffer) const final override
Definition D3D12RHI.cpp:708
virtual FTextureRHIRef RHIAsyncReallocateTexture2D(FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus) override
Definition D3D12Texture.cpp:1661
virtual void RHIAliasTextureResources(FTextureRHIRef &DestTexture, FTextureRHIRef &SrcTexture) final override
Definition D3D12Texture.cpp:2991
static void SetFormatAliasedTexturesMustBeCreatedUsingCommonLayout(bool bValue)
Definition D3D12Texture.cpp:219
virtual bool RHIGetAvailableResolutions(FScreenResolutionArray &Resolutions, bool bIgnoreRefreshRate) final override
Definition WindowsD3D12Device.cpp:1973
uint32 AmdSupportedExtensionFlags
Definition D3D12RHIPrivate.h:572
virtual void * RHILockBufferMGPU(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 GPUIndex, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override
Definition D3D12Buffer.cpp:859
virtual IRHIComputeContext * RHIGetCommandContext(ERHIPipeline Pipeline, FRHIGPUMask GPUMask) final override
Definition D3D12CommandContext.cpp:742
void ReadSurfaceDataNoMSAARaw(FRHITexture *TextureRHI, FIntRect Rect, TArray< uint8 > &OutData, FReadSurfaceDataFlags InFlags)
Definition D3D12RenderTarget.cpp:515
virtual FComputeShaderRHIRef RHICreateComputeShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) override
Definition D3D12Shaders.cpp:216
virtual void RHIFlushResourceBarriers(FRHICommandListBase &RHICmdList, uint32 InGPUIndex) final override
Definition D3D12RHI.cpp:781
virtual ~FD3D12DynamicRHI()
Definition D3D12RHI.cpp:270
virtual void * RHIGetNativeGraphicsQueue() final override
Definition D3D12RHI.cpp:805
virtual FGPUFenceRHIRef RHICreateGPUFence(const FName &Name) final override
Definition D3D12DirectCommandListManager.cpp:87
TRefCountPtr< FD3D12Resource > GetStagingTexture(FRHITexture *TextureRHI, FIntRect InRect, FIntRect &OutRect, FReadSurfaceDataFlags InFlags, D3D12_PLACED_SUBRESOURCE_FOOTPRINT &readBackHeapDesc, uint32 GPUIndex)
Definition D3D12RenderTarget.cpp:390
void InitializeSubmissionPipe()
Definition D3D12Submission.cpp:153
void ProcessDeferredDeletionQueue_Platform()
Definition WindowsD3D12Device.cpp:2279
virtual IRHITransientResourceAllocator * RHICreateTransientResourceAllocator() override
Definition D3D12CommandContext.cpp:794
virtual void RHIGetSupportedResolution(uint32 &Width, uint32 &Height) final override
Definition D3D12RHI.cpp:825
FD3D12Adapter & GetAdapter(uint32_t Index=0)
Definition D3D12RHIPrivate.h:536
void * LockBuffer(FRHICommandListBase &RHICmdList, FD3D12Buffer *Buffer, uint32 BufferSize, EBufferUsageFlags BufferUsage, uint32 Offset, uint32 Size, EResourceLockMode LockMode)
Definition D3D12Buffer.cpp:635
virtual void RHIWaitManualFence(FRHICommandList &RHICmdList, ID3D12Fence *Fence, uint64 Value) final override
Definition D3D12RHI.cpp:767
virtual FSamplerStateRHIRef RHICreateSamplerState(const FSamplerStateInitializerRHI &Initializer) final override
Definition D3D12State.cpp:218
virtual void PostInit() override
Definition D3D12RHI.cpp:257
Definition D3D12Device.h:104
Definition D3D12Resources.h:641
Definition D3D12Resources.h:181
bool RequiresResourceStateTracking() const
Definition D3D12Resources.h:325
ED3D12Access GetDefaultAccess() const
Definition D3D12Resources.h:320
Definition D3D12Texture.h:31
Definition D3D12Submission.cpp:84
Definition D3D12Device.h:70
Definition DynamicRHI.h:206
virtual void RHIUpdateResourceCollection(FRHICommandListBase &RHICmdList, FRHIResourceCollection *InResourceCollection, uint32 InStartIndex, TConstArrayView< FRHIResourceCollectionMember > InMemberUpdates)
Definition DynamicRHI.h:534
virtual FRayTracingShaderRHIRef RHICreateRayTracingShader(TArrayView< const uint8 > Code, const FSHAHash &Hash, EShaderFrequency ShaderFrequency)
Definition DynamicRHI.h:1022
virtual FShaderBindingTableRHIRef RHICreateShaderBindingTable(FRHICommandListBase &RHICmdList, const FRayTracingShaderBindingTableInitializer &Initializer)
Definition DynamicRHI.h:1034
virtual void RHIHandleDisplayChange()
Definition DynamicRHI.h:746
virtual FUnorderedAccessViewRHIRef RHIGetViewportBackBufferUAV(FRHIViewport *ViewportRHI)
Definition DynamicRHI.h:669
virtual FRayTracingSceneRHIRef RHICreateRayTracingScene(FRayTracingSceneInitializer Initializer)
Definition DynamicRHI.h:1016
virtual FRayTracingClusterOperationSize RHICalcRayTracingClusterOperationSize(const FRayTracingClusterOperationInitializer &Initializer)
Definition DynamicRHI.h:998
virtual FRHIResourceCollectionRef RHICreateResourceCollection(FRHICommandListBase &RHICmdList, TConstArrayView< FRHIResourceCollectionMember > InMembers)
Definition DynamicRHI.h:529
virtual FRayTracingGeometryRHIRef RHICreateRayTracingGeometry(FRHICommandListBase &RHICmdList, const FRayTracingGeometryInitializer &Initializer)
Definition DynamicRHI.h:1010
virtual FRayTracingAccelerationStructureSize RHICalcRayTracingGeometrySize(const FRayTracingGeometryInitializer &Initializer)
Definition DynamicRHI.h:992
virtual FRayTracingAccelerationStructureSize RHICalcRayTracingSceneSize(const FRayTracingSceneInitializer &Initializer)
Definition DynamicRHI.h:986
virtual FRayTracingAccelerationStructureOfflineMetadata RHIGetRayTracingGeometryOfflineMetadata(const FRayTracingGeometryOfflineDataHeader &OfflineDataHeader)
Definition DynamicRHI.h:1004
virtual FRayTracingPipelineStateRHIRef RHICreateRayTracingPipelineState(const FRayTracingPipelineStateInitializer &Initializer)
Definition DynamicRHI.h:1028
Definition Float16Color.h:13
Definition RHIResources.h:4572
Definition NameTypes.h:617
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHICommandList.h:4626
Definition RHICommandList.h:3819
Definition RHICommandList.h:2735
Definition RHIResources.h:2387
Definition RHIResources.h:978
Definition RHIResources.h:972
Definition RHIResources.h:2444
Definition RHIResourceCollection.h:46
Definition RHIResourceReplace.h:12
Definition RHIResources.h:54
Definition RHIResources.h:3981
Definition RHITextureReference.h:8
Definition RHIResources.h:2153
Definition RHIResources.h:1232
Definition RHIResources.h:725
Definition RHIResources.h:954
Definition RHIResources.h:1265
Definition RHIResources.h:2515
Definition RHIResources.h:5023
Definition RHITypes.h:16
Definition SecureHash.h:226
Definition ScopeLock.h:141
Definition D3D12RHIPrivate.h:719
FScopedResourceBarrier(FD3D12ContextCommon &InContext, const FD3D12Resource *InResource, ED3D12Access InBeforeD3D12Access, ED3D12Access InDesiredD3D12Access, uint32 InSubresource)
Definition D3D12RHIPrivate.h:729
FScopedResourceBarrier(FD3D12ContextCommon &InContext, const FD3D12Resource *InResource, ED3D12Access InDesiredD3D12Access, uint32 InSubresource)
Definition D3D12RHIPrivate.h:757
~FScopedResourceBarrier()
Definition D3D12RHIPrivate.h:770
Definition Text.h:1316
Definition ThreadSafeCounter.h:14
Definition RHIResources.h:4915
Definition DynamicRHI.h:1472
Definition RHIContext.h:693
Definition RHIContext.h:257
Definition RHIContext.h:234
Definition RHITransientResourceAllocator.h:536
Definition ArrayView.h:139
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
UE_FORCEINLINE_HINT ElementType & Emplace_GetRef(ArgsType &&... Args) UE_LIFETIMEBOUND
Definition Array.h:2613
Definition IConsoleManager.h:1792
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition Queue.h:48
Definition RHIPipeline.h:55
Definition RefCounting.h:454
Definition SharedPointer.h:692
Definition FunctionFwd.h:19
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Definition CriticalSection.h:14
Definition D3D12CommandList.cpp:417
Type
Definition RHIFeatureLevel.h:20
@ SM5
Definition RHIFeatureLevel.h:42
@ Num
Definition RHIFeatureLevel.h:54
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition RHIResources.h:246
Definition Color.h:486
static CORE_API const TCHAR * Get()
Definition CommandLine.cpp:61
Definition D3D12RHIPrivate.h:618
ED3D12Access DesiredD3D12Access
Definition D3D12RHIPrivate.h:620
FD3D12Buffer * Buffer
Definition D3D12RHIPrivate.h:619
Definition D3D12RHIPrivate.h:596
FD3D12Texture * Texture
Definition D3D12RHIPrivate.h:597
ED3D12Access DesiredD3D12Access
Definition D3D12RHIPrivate.h:599
ED3D12Access CreateD3D12Access
Definition D3D12RHIPrivate.h:598
Definition D3D12RHIPrivate.h:259
FD3D12Timing * CreateNew(FD3D12Queue &Queue)
Definition D3D12RHIPrivate.h:260
Definition WindowsD3D12Submission.h:13
Definition D3D12RHIPrivate.h:131
uint32 StackSize
Definition D3D12RHIPrivate.h:140
uint32 ScratchSize
Definition D3D12RHIPrivate.h:141
uint32 NumVGPR
Definition D3D12RHIPrivate.h:138
uint32 NumSGPR
Definition D3D12RHIPrivate.h:139
static constexpr uint32 MaxPerformanceGroups
Definition D3D12RHIPrivate.h:132
uint32 PerformanceGroup
Definition D3D12RHIPrivate.h:136
Definition D3D12Resources.h:134
Definition D3D12RHIPrivate.h:121
bool bComputeShaderCopy
Definition D3D12RHIPrivate.h:123
FD3D12ResourceLocation * UploadHeapResourceLocation
Definition D3D12RHIPrivate.h:122
Definition D3D12RHIPrivate.h:148
static CORE_API bool Param(const TCHAR *Stream, const TCHAR *Param)
Definition Parse.cpp:325
Definition RHIResources.h:1417
Definition RHIBufferInitializer.h:12
Definition DynamicRHI.h:120
Definition MultiGPU.h:33
Definition DynamicRHI.h:149
Definition DynamicRHI.h:198
Definition RHIResources.h:1938
FResourceBulkDataInterface * BulkData
Definition RHIResources.h:2140
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 RHI.h:278
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 RHI.h:232
Definition RHIResources.h:3910
Definition RHIStats.h:12
Definition RHICommandList.h:220
Definition RHITypes.h:127
Definition RHITypes.h:155
Definition ID3D12DynamicRHI.h:22
Definition D3D12Resources.h:827
Definition LinuxPlatformSplash.cpp:43
Definition IntPoint.h:25