UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
D3D12CommandContext.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4D3D12CommandContext.h: D3D12 Command Context Interfaces
5=============================================================================*/
6
7#pragma once
8
9#include "D3D12Allocation.h"
11#include "D3D12CommandList.h"
12#include "D3D12Queue.h"
13#include "D3D12Query.h"
14#include "D3D12Resources.h"
16#include "D3D12Submission.h"
17#include "D3D12Texture.h"
18#include COMPILED_PLATFORM_HEADER(D3D12BarriersFactory.h)
20
21#include "RHICoreShader.h"
22#include "RHICore.h"
24
25#include "GPUProfiler.h"
26
27#if USE_PIX
30 #include <pix3.h>
33#endif
34
35enum class ED3D12PipelineType : uint8;
36
39struct FD3D12ViewSubset;
40class FD3D12Device;
41class FD3D12Resource;
42class FD3D12Heap;
47
49{
50 enum class EType
51 {
54 Heap,
56#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
59#endif
63 Func,
66
67 union
68 {
73
75
76 struct
77 {
81
83
84 struct
85 {
89
90 struct
91 {
95 void* RawMemory;
97
98 struct
99 {
104 };
105
110
115
117 : Type(Type)
119 {
120#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
121 check(Type == EType::BindlessDescriptorHeap || Type == EType::DescriptorHeap);
122#else
124#endif
125 }
126
131
132#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
136 {}
137#endif
138
140 : Type(Type)
141 , CPUAllocation(Ptr)
142 {
144 }
145
150
155
160
163 {
164 // Add a ref, in case texture gets destroyed while this deferred delete is in flight. We can't use TRefCountPtr in the union.
166 InTexture->AddRef();
167
168 // We can't use TUniquePtr in the union, so do placement new.
171
173 }
174};
175
176enum class ED3D12Units
177{
178 Raw,
180};
181
183{
184 None = 0,
185
186 // Block the calling thread until the submission thread has dispatched all work.
188
189 // Both the calling thread until the GPU has signaled completion of all dispatched work.
191};
193
194//
195// Base class that manages the recording of FD3D12FinalizedCommands instances.
196// Manages the logic for creating and recycling command lists and allocators.
197//
199{
201
202protected:
203 FD3D12ContextCommon(FD3D12Device* Device, ED3D12QueueType QueueType, bool bIsDefaultContext);
204
205public:
206 virtual ~FD3D12ContextCommon() = default;
207
208protected:
209 virtual void OpenCommandList();
210 virtual void CloseCommandList();
211
212public:
214 {
215 TransientOnly,
216 All
217 };
218
219 virtual void ClearState(EClearStateMode ClearStateMode = EClearStateMode::All) {}
221
222
223 // Inserts a command to signal the specified sync point
224 void SignalSyncPoint(FD3D12SyncPoint* SyncPoint);
225
226 // Inserts a command that blocks the GPU queue until the specified sync point is signaled.
227 void WaitSyncPoint(FD3D12SyncPoint* SyncPoint);
228
229 // Inserts a command that signals the specified D3D12 fence object.
230 void SignalManualFence(ID3D12Fence* Fence, uint64 Value);
231
232 // Inserts a command that waits the specified D3D12 fence object.
233 void WaitManualFence(ID3D12Fence* Fence, uint64 Value);
234
235 // Inserts a timestamp query command. "Target" specifies the optional
236 // location the result will be written to by the interrupt handler thread.
237 FD3D12QueryLocation InsertTimestamp(ED3D12Units Units, uint64* Target);
238
239 // Allocates a query of the specified type, returning its location.
240 FD3D12QueryLocation AllocateQuery(ED3D12QueryType Type, void* Target);
241
242 // Resizes physical memory allocation for a buffer. Allocates new backing heaps as necessary.
243 // Causes the command list to be split, as reserved resource update operations are performed on the D3D12 queue.
244 // The actual work is deferred via FD3D12Payload.
245 void SetReservedBufferCommitSize(FD3D12Buffer* Buffer, uint64 CommitSizeInBytes);
246
247 // Complete recording of the current command list set, and appends the resulting
248 // payloads to the given array. Resets the context so new commands can be recorded.
250
251 // The owner device of this context
253
254 // The type of command lists this context records.
256 bool IsAsyncComputeContext() const { return QueueType == ED3D12QueueType::Async; }
257 ERHIPipeline GetRHIPipeline() const;
258
259 // True for the immediate context (@todo remove this)
261 bool IsDefaultContext() const { return bIsDefaultContext; }
262
263 bool IsOpen() const { return CommandList != nullptr; }
264 bool IsPendingCommands() const { return IsOpen() || Barriers->GetNumPendingBarriers(); }
265
267 {
268 if (!ContextSyncPoint)
269 {
270 ContextSyncPoint = FD3D12SyncPoint::Create(ED3D12SyncPointType::GPUAndCPU, TEXT("ContextSyncPoint"));
271 BatchedSyncPoints.ToSignal.Add(ContextSyncPoint);
272 }
273
274 return ContextSyncPoint;
275 }
276
277 // Sync points which are waited at the start / signaled at the end
278 // of the whole batch of command lists this context recorded.
279 struct
280 {
283 } BatchedSyncPoints;
284
285 void BindDiagnosticBuffer(FD3D12RootSignature const* RootSignature, ED3D12PipelineType PipelineType);
286
288 {
289 return TimestampQueries;
290 }
291
292private:
293 // Allocators to manage query heaps
294 FD3D12QueryAllocator TimestampQueries;
295 FD3D12QueryAllocator OcclusionQueries;
296 FD3D12QueryAllocator PipelineStatsQueries;
297
298 // The active D3D12 command list where recorded D3D commands are directed.
299 // This is swapped when command lists are split (e.g. when signalling a fence).
300 FD3D12CommandList* CommandList = nullptr;
301
302 // The command allocator used to open command lists within this context.
303 // The allocator is reused for each new command list until the context is finalized.
304 FD3D12CommandAllocator* CommandAllocator = nullptr;
305
306 // The array of recorded payloads the submission thread will process.
307 // These are returned when the context is finalized.
308 TArray<FD3D12Payload*> Payloads;
309
310 // A sync point signaled when all payloads in this context have completed.
311 FD3D12SyncPointRef ContextSyncPoint;
312
313public:
315 {
316 // Nothing to do
317 }
318
319 // Returns the current command list (or creates a new one if the command list was not open).
321 {
322 OpenIfNotAlready();
323
324 return *CommandList;
325 }
326
327protected:
328 enum class EMarkerType { In, Out };
329 void WriteMarker(D3D12_GPU_VIRTUAL_ADDRESS Address, uint32 Value, EMarkerType Type);
330
331 enum class EPhase
332 {
333 Wait,
334 UpdateReservedResources,
335 Execute,
336 Signal
337 } CurrentPhase = EPhase::Wait;
338
340 {
341 if (Payloads.Num() == 0 || Phase < CurrentPhase)
342 {
343 NewPayload();
344 }
345
346 CurrentPhase = Phase;
347 return Payloads.Last();
348 }
349
350 void NewPayload();
351
352 uint32 ActiveQueries = 0;
353
355
356public:
357 // Open the command list if it's not already open.
359 {
360 if (!CommandList)
361 {
362 OpenCommandList();
363 }
364 }
365
366 // Flushes any pending commands in this context to the GPU.
367 void FlushCommands(ED3D12FlushFlags FlushFlags = ED3D12FlushFlags::None);
368
369 // Closes the current command list if the number of enqueued commands exceeds
370 // the threshold defined by the "D3D12.MaxCommandsPerCommandList" cvar.
371 void ConditionalSplitCommandList();
372
373 auto BaseCommandList () { return GetCommandList().BaseCommandList(); }
374 auto CopyCommandList () { return GetCommandList().CopyCommandList(); }
375 auto GraphicsCommandList () { return GetCommandList().GraphicsCommandList(); }
376#if D3D12_MAX_COMMANDLIST_INTERFACE >= 1
377 auto GraphicsCommandList1 () { return GetCommandList().GraphicsCommandList1(); }
378#endif
379#if D3D12_MAX_COMMANDLIST_INTERFACE >= 2
380 auto GraphicsCommandList2 () { return GetCommandList().GraphicsCommandList2(); }
381#endif
382#if D3D12_MAX_COMMANDLIST_INTERFACE >= 3
383 auto GraphicsCommandList3 () { return GetCommandList().GraphicsCommandList3(); }
384#endif
385#if D3D12_MAX_COMMANDLIST_INTERFACE >= 4
386 auto GraphicsCommandList4 () { return GetCommandList().GraphicsCommandList4(); }
387#endif
388#if D3D12_MAX_COMMANDLIST_INTERFACE >= 5
389 auto GraphicsCommandList5 () { return GetCommandList().GraphicsCommandList5(); }
390#endif
391#if D3D12_MAX_COMMANDLIST_INTERFACE >= 6
392 auto GraphicsCommandList6 () { return GetCommandList().GraphicsCommandList6(); }
393#endif
394#if D3D12_MAX_COMMANDLIST_INTERFACE >= 7
395 auto GraphicsCommandList7 () { return GetCommandList().GraphicsCommandList7(); }
396#endif
397#if D3D12_MAX_COMMANDLIST_INTERFACE >= 8
398 auto GraphicsCommandList8 () { return GetCommandList().GraphicsCommandList8(); }
399#endif
400#if D3D12_MAX_COMMANDLIST_INTERFACE >= 9
401 auto GraphicsCommandList9 () { return GetCommandList().GraphicsCommandList9(); }
402#endif
403#if D3D12_MAX_COMMANDLIST_INTERFACE >= 10
404 auto GraphicsCommandList10() { return GetCommandList().GraphicsCommandList10(); }
405#endif
406
407#if D3D12_SUPPORTS_DEBUG_COMMAND_LIST
408 auto DebugCommandList () { return GetCommandList().DebugCommandList(); }
409#endif
410#if D3D12_RHI_RAYTRACING
411 auto RayTracingCommandList() { return GetCommandList().RayTracingCommandList(); }
412#endif
413#if NV_AFTERMATH
414 auto AftermathHandle () { return GetCommandList().AftermathHandle(); }
415#endif
416
417 void BeginQuery(FD3D12QueryLocation const& Location) { GetCommandList().BeginQuery(Location); }
418 void EndQuery (FD3D12QueryLocation const& Location) { GetCommandList().EndQuery (Location); }
419
420#if ENABLE_RESIDENCY_MANAGEMENT
421 void UpdateResidency(const FD3D12Resource* Resource) { check(Resource); GetCommandList().UpdateResidency(Resource); }
422#else
423 void UpdateResidency(const FD3D12Resource* Resource) { }
424#endif
425
426 // Resource transition / barrier functions. These get batched and recorded into the command list when FlushResourceBarriers() is called.
427 void AddGlobalBarrier(
430
431 void AddBarrier(
432 const FD3D12Resource* pResource,
435 uint32 Subresource);
436
437 // Flushes the batched resource barriers to the current command list
438 void FlushResourceBarriers();
439};
440
441//
442// Context for the copy queue. Doesn't implement an RHI interface
443// since the copy queue is not directly exposed to the renderer.
444//
452
453//
454// Helper for recording and submitting copy queue work.
455// Used for buffer / texture data upload etc.
456//
458{
459private:
460 FD3D12Device* const Device;
461 FD3D12SyncPointRef SyncPoint;
462
463#if DO_CHECK
464 mutable bool bSyncPointRetrieved = false;
465#endif
466
467public:
469
471
474};
475
476// Base class used to define commands that are not device specific, or that broadcast to all devices.
477// @todo mgpu - try to remove this class
479{
480public:
482
483 void RHIEndDrawingViewport(FRHIViewport* Viewport, bool bPresent, bool bLockToVsync) final override;
484
485 FRHIGPUMask GetGPUMask() const { return GPUMask; }
487
489
490 virtual class FD3D12CommandContextRedirector* AsRedirector() { return nullptr; }
491
493 {
494 return static_cast<FD3D12CommandContextBase&>(RHICmdList.GetComputeContext().GetLowestLevelContext());
495 }
496
498 {
499 return RHIContext ? static_cast<FD3D12CommandContextBase*>(&RHIContext->GetLowestLevelContext()) : nullptr;
500 }
501
503
504protected:
506
509};
510
511// RHI Context type used for graphics and async compute command lists.
513{
514public:
516 virtual ~FD3D12CommandContext();
517
518 static FD3D12CommandContext& Get(FRHICommandListBase& RHICmdList, uint32 GPUIndex)
519 {
521#if WITH_MGPU
522 return *Base.GetSingleDeviceContext(GPUIndex);
523#else
524 return static_cast<FD3D12CommandContext&>(Base);
525#endif
526 }
527
528 virtual void OpenCommandList() override;
529 virtual void CloseCommandList() override final;
530
537
538 virtual void ClearState(EClearStateMode ClearStateMode = EClearStateMode::All) override final;
543
544#if RHI_NEW_GPU_PROFILER
545 void FlushProfilerStats()
546 {
547 // Flush accumulated draw stats
548 if (StatEvent)
549 {
551 StatEvent = {};
552 }
553 }
554#endif
555
557
558 // Current GPU event stack
560
562
565
568
572
575
578
580#if PLATFORM_SUPPORTS_VARIABLE_RATE_SHADING
584#endif
585
588
589#if PLATFORM_SUPPORTS_VIRTUAL_TEXTURES
590 bool bNeedFlushTextureCache = false;
592 inline void FlushTextureCacheIfNeeded()
593 {
595 {
597
599 }
600 }
601 virtual void FlushTextureCache() {};
602#endif
603
604#if RHI_RAYTRACING
605 // Used to deduplicate work done by the shader table on this context.
607#endif
608
611
614
615 template <class ShaderType> void SetResourcesFromTables(const ShaderType* RESTRICT);
616
620
623
624 template<typename TPixelShader>
626 FD3D12Texture* SourceTexture,
627 FD3D12Texture* DestTexture,
630 const D3D12_RESOURCE_DESC& ResolveTargetDesc,
632 const FResolveRect& DestRect,
633 typename TPixelShader::FParameter PixelShaderParameter
634 );
635
636 virtual void SetDepthBounds(float MinDepth, float MaxDepth);
637 virtual void SetShadingRate(EVRSShadingRate ShadingRate, FD3D12Resource* ShadingRateImage, const TStaticArray<EVRSRateCombiner, ED3D12VRSCombinerStages::Num>& Combiners);
638
640
641 virtual void RHIBeginTransitions(TArrayView<const FRHITransition*> Transitions) final override;
642 virtual void RHIEndTransitions(TArrayView<const FRHITransition*> Transitions) final override;
643
644 // IRHIComputeContext interface
645 virtual void RHISetComputePipelineState(FRHIComputePipelineState* ComputePipelineState) final override;
646 virtual void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override;
647 virtual void RHIDispatchIndirectComputeShader(FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override;
653#if WITH_RHI_BREADCRUMBS
654 virtual void RHIBeginBreadcrumbGPU(FRHIBreadcrumbNode* Breadcrumb) final override;
655 virtual void RHIEndBreadcrumbGPU (FRHIBreadcrumbNode* Breadcrumb) final override;
656#endif
657
658 // IRHICommandContext interface
659 virtual void RHISetMultipleViewports(uint32 Count, const FViewportBounds* Data) final override;
660 virtual void RHIClearUAVFloat(FRHIUnorderedAccessView* UnorderedAccessViewRHI, const FVector4f& Values) final override;
661 virtual void RHIClearUAVUint(FRHIUnorderedAccessView* UnorderedAccessViewRHI, const FUintVector4& Values) final override;
662 virtual void RHICopyTexture(FRHITexture* SourceTexture, FRHITexture* DestTexture, const FRHICopyTextureInfo& CopyInfo) final override;
663 virtual void RHICopyBufferRegion(FRHIBuffer* DestBuffer, uint64 DstOffset, FRHIBuffer* SourceBuffer, uint64 SrcOffset, uint64 NumBytes) final override;
664 virtual void RHICopyToStagingBuffer(FRHIBuffer* SourceBuffer, FRHIStagingBuffer* DestinationStagingBuffer, uint32 Offset, uint32 NumBytes) final override;
665 virtual void RHIBeginRenderQuery(FRHIRenderQuery* RenderQuery) final override;
666 virtual void RHIEndRenderQuery(FRHIRenderQuery* RenderQuery) final override;
667#if (RHI_NEW_GPU_PROFILER == 0)
669#endif
670 virtual void RHISetStreamSource(uint32 StreamIndex, FRHIBuffer* VertexBuffer, uint32 Offset) final override;
671 virtual void RHISetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ) final override;
672 virtual void RHISetStereoViewport(float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ) override;
673 virtual void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override;
676 virtual void RHISetStencilRef(uint32 StencilRef) final override;
677 virtual void RHISetBlendFactor(const FLinearColor& BlendFactor) final override;
678
681
682 virtual void RHISetShaderRootConstants(
683 const FUint32Vector4& Constants) override;
684
690 bool bEmulated) override;
691
698 bool bEmulated) override;
699
700 virtual void RHIDrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override;
701 virtual void RHIDrawPrimitiveIndirect(FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override;
702 virtual void RHIDrawIndexedIndirect(FRHIBuffer* IndexBufferRHI, FRHIBuffer* ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances) final override;
703 virtual void RHIDrawIndexedPrimitive(FRHIBuffer* IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override;
704 virtual void RHIDrawIndexedPrimitiveIndirect(FRHIBuffer* IndexBuffer, FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override;
706#if PLATFORM_SUPPORTS_MESH_SHADERS
707 virtual void RHIDispatchMeshShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override;
708 virtual void RHIDispatchIndirectMeshShader(FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override;
709#endif
710 virtual void RHISetDepthBounds(float MinDepth, float MaxDepth) final override;
711 virtual void RHISetShadingRate(EVRSShadingRate ShadingRate, EVRSRateCombiner Combiner) final override;
712
713 virtual void RHIClearMRTImpl(bool* bClearColorArray, int32 NumClearColors, const FLinearColor* ColorArray, bool bClearDepth, float Depth, bool bClearStencil, uint32 Stencil);
714
715 virtual void RHIBeginRenderPass(const FRHIRenderPassInfo& InInfo, const TCHAR* InName)
716 {
718 InInfo.ConvertToRenderTargetsInfo(RTInfo);
720
722 }
723
731
733
734#if D3D12_RHI_RAYTRACING
735 virtual void RHIBindAccelerationStructureMemory(FRHIRayTracingScene* Scene, FRHIBuffer* Buffer, uint32 BufferOffset) final override;
737#if WITH_MGPU
738 // Should be called before RHIBuildAccelerationStructures when multiple GPU support is present (for example, from FD3D12CommandContextRedirector::RHIBuildAccelerationStructures)
740#endif
741 virtual void RHIExecuteMultiIndirectClusterOperation(const FRayTracingClusterOperationParams& Params) final override;
744 virtual void RHIClearShaderBindingTable(FRHIShaderBindingTable* SBT) final override;
746
749 uint32 Width, uint32 Height) final override;
752 FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override;
753
756 uint32 NumBindings, const FRayTracingLocalShaderBindings* Bindings, ERayTracingBindingType BindingType) final override;
757#endif // D3D12_RHI_RAYTRACING
758
761 {
762 return static_cast<TReturnType*>(Resource);
763 }
764
767 {
769 return Object ? static_cast<TReturnType*>(Object->GetLinkedObject(GPUIndex)) : nullptr;
770 }
771
772 template<typename ObjectType, typename RHIType>
773 static FORCEINLINE_DEBUGGABLE ObjectType* RetrieveObject(RHIType* RHIObject, uint32 GPUIndex)
774 {
775 return ResourceCast<RHIType, ObjectType>(RHIObject, GPUIndex);
776 }
777
778 template<typename ObjectType, typename RHIType>
780 {
782 }
783
785 {
787 return RHITexture ? RHITexture->GetLinkedObject(GPUIndex) : nullptr;
788 }
789
794
799
801
802 uint32 GetGPUIndex() const { return GPUMask.ToIndex(); }
803
804 virtual void RHISetGPUMask(FRHIGPUMask InGPUMask) final override
805 {
806 // This is a single-GPU context so it doesn't make sense to ever change its GPU
807 // mask. If multiple GPUs are supported we should be using the redirector context.
809 }
810
812 {
813 return StaticUniformBuffers;
814 }
815
817
820
821 virtual void Finalize(TArray<FD3D12Payload*>& OutPayloads) override;
822
823#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
825 FD3D12ContextBindlessState& GetBindlessState() { return BindlessState; }
826#endif
827
829 {
830 static const FRHIShaderBindingLayout Default;
831 return ShaderBindinglayout ? *ShaderBindinglayout : Default;
832 }
833
835 ID3D12Resource* DestResource, const FName& DestName, uint64 DestOffset,
836 ID3D12Resource* SourceResource, const FName& SourceName, uint64 SourceOffset,
837 uint32 ByteCount
838 );
839
841 const D3D12_TEXTURE_COPY_LOCATION* DestCopyLocation, int DestX, int DestY, int DestZ, EPixelFormat DestPixelFormat,
843 const FName& DebugName
844 );
845
846protected:
847
849 {
850 return InGPUIndex == GetGPUIndex() ? this : nullptr;
851 }
852
853private:
854 void SetupDispatch(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ);
855 void SetupDraw(FRHIBuffer* IndexBufferRHI, uint32 NumPrimitives = 0, uint32 NumVertices = 0);
856 void SetupDispatchDraw(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ);
858 void PostGpuEvent();
859
860 static void ClearUAV(TRHICommandList_RecursiveHazardous<FD3D12CommandContext>& RHICmdList, FD3D12UnorderedAccessView_RHI* UAV, const void* ClearValues, bool bFloat);
861
864
865 TArray<FRHIUniformBuffer*> StaticUniformBuffers;
866 const FRHIShaderBindingLayout* ShaderBindinglayout = nullptr;
867
868#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
870#endif
871};
872
873// Version of command context to handle multi-GPU. Because IRHICommandContext is pure virtual we can return the normal
874// FD3D12CommandContext when not using mGPU, thus there is no additional overhead for the common case i.e. 1 GPU.
876{
877public:
878 // The type of command lists this context records.
881
883
884 virtual FD3D12CommandContextRedirector* AsRedirector() override { return this; }
885
886#define ContextRedirect(Call) { for (uint32 GPUIndex : GPUMask) PhysicalContexts[GPUIndex]-> Call; }
887#define ContextGPU0(Call) { PhysicalContexts[0]-> Call; }
888
889 FORCEINLINE virtual void RHISetComputePipelineState(FRHIComputePipelineState* ComputePipelineState) final override
890 {
891 ContextRedirect(RHISetComputePipelineState(ComputePipelineState));
892 }
893 FORCEINLINE virtual void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override
894 {
895 ContextRedirect(RHIDispatchComputeShader(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ));
896 }
897 FORCEINLINE virtual void RHIDispatchIndirectComputeShader(FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override
898 {
899 ContextRedirect(RHIDispatchIndirectComputeShader(ArgumentBuffer, ArgumentOffset));
900 }
901
903 {
905 }
906 FORCEINLINE virtual void RHIEndTransitions(TArrayView<const FRHITransition*> Transitions) final override
907 {
909 }
910
911#if WITH_MGPU
912 virtual void RHITransferResources(TConstArrayView<FTransferResourceParams> Params) final override;
915
916 // New and improved cross GPU transfer API
920#endif // WITH_MGPU
921
934
935#if WITH_RHI_BREADCRUMBS
937 {
938 // Always forward to all sub-contexts, regardless of mask
939 for (uint32 GPUIndex : PhysicalGPUMask)
940 {
941 PhysicalContexts[GPUIndex]->RHIBeginBreadcrumbGPU(Breadcrumb);
942 }
943 }
945 {
946 // Always forward to all sub-contexts, regardless of mask
947 for (uint32 GPUIndex : PhysicalGPUMask)
948 {
949 PhysicalContexts[GPUIndex]->RHIEndBreadcrumbGPU(Breadcrumb);
950 }
951 }
952#endif // WITH_RHI_BREADCRUMBS
953
954 // IRHICommandContext interface
955 FORCEINLINE virtual void RHISetMultipleViewports(uint32 Count, const FViewportBounds* Data) final override
956 {
958 }
959 FORCEINLINE virtual void RHIClearUAVFloat(FRHIUnorderedAccessView* UnorderedAccessViewRHI, const FVector4f& Values) final override
960 {
961 ContextRedirect(RHIClearUAVFloat(UnorderedAccessViewRHI, Values));
962 }
963 FORCEINLINE virtual void RHIClearUAVUint(FRHIUnorderedAccessView* UnorderedAccessViewRHI, const FUintVector4& Values) final override
964 {
965 ContextRedirect(RHIClearUAVUint(UnorderedAccessViewRHI, Values));
966 }
971 FORCEINLINE virtual void RHICopyBufferRegion(FRHIBuffer* DestBuffer, uint64 DstOffset, FRHIBuffer* SourceBuffer, uint64 SrcOffset, uint64 NumBytes) final override
972 {
973 ContextRedirect(RHICopyBufferRegion(DestBuffer, DstOffset, SourceBuffer, SrcOffset, NumBytes));
974 }
983#if (RHI_NEW_GPU_PROFILER == 0)
988#endif
989 FORCEINLINE virtual void RHISetStreamSource(uint32 StreamIndex, FRHIBuffer* VertexBuffer, uint32 Offset) final override
990 {
992 }
993 FORCEINLINE virtual void RHISetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ) final override
994 {
995 ContextRedirect(RHISetViewport(MinX, MinY, MinZ, MaxX, MaxY, MaxZ));
996 }
997 FORCEINLINE virtual void RHISetStereoViewport(float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ) override
998 {
1000 }
1001
1002 FORCEINLINE virtual void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override
1003 {
1004 ContextRedirect(RHISetScissorRect(bEnable, MinX, MinY, MaxX, MaxY));
1005 }
1030 FORCEINLINE void RHISetBlendFactor(const FLinearColor& BlendFactor) final override
1031 {
1032 ContextRedirect(RHISetBlendFactor(BlendFactor));
1033 }
1034 FORCEINLINE void RHISetShaderRootConstants(const FUint32Vector4& Constants) final override
1035 {
1037 }
1038 FORCEINLINE virtual void RHIDrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override
1039 {
1040 ContextRedirect(RHIDrawPrimitive(BaseVertexIndex, NumPrimitives, NumInstances));
1041 }
1042 FORCEINLINE virtual void RHIDrawPrimitiveIndirect(FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override
1043 {
1044 ContextRedirect(RHIDrawPrimitiveIndirect(ArgumentBuffer, ArgumentOffset));
1045 }
1046 FORCEINLINE virtual void RHIDrawIndexedIndirect(FRHIBuffer* IndexBufferRHI, FRHIBuffer* ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances) final override
1047 {
1049 }
1050 FORCEINLINE virtual void RHIDrawIndexedPrimitive(FRHIBuffer* IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override
1051 {
1052 ContextRedirect(RHIDrawIndexedPrimitive(IndexBuffer, BaseVertexIndex, FirstInstance, NumVertices, StartIndex, NumPrimitives, NumInstances));
1053 }
1054 FORCEINLINE virtual void RHIDrawIndexedPrimitiveIndirect(FRHIBuffer* IndexBuffer, FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override
1055 {
1056 ContextRedirect(RHIDrawIndexedPrimitiveIndirect(IndexBuffer, ArgumentBuffer, ArgumentOffset));
1057 }
1062#if PLATFORM_SUPPORTS_MESH_SHADERS
1063 FORCEINLINE virtual void RHIDispatchMeshShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override
1064 {
1065 ContextRedirect(RHIDispatchMeshShader(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ));
1066 }
1067 FORCEINLINE virtual void RHIDispatchIndirectMeshShader(FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override
1068 {
1069 ContextRedirect(RHIDispatchIndirectMeshShader(ArgumentBuffer, ArgumentOffset));
1070 }
1071#endif
1072 FORCEINLINE virtual void RHISetDepthBounds(float MinDepth, float MaxDepth) final override
1073 {
1074 ContextRedirect(RHISetDepthBounds(MinDepth, MaxDepth));
1075 }
1076
1077 FORCEINLINE virtual void RHISetShadingRate(EVRSShadingRate ShadingRate, EVRSRateCombiner Combiner) final override
1078 {
1079 ContextRedirect(RHISetShadingRate(ShadingRate, Combiner));
1080 }
1081
1082 virtual void RHIBeginRenderPass(const FRHIRenderPassInfo& InInfo, const TCHAR* InName) final override
1083 {
1085 }
1086
1087 virtual void RHIEndRenderPass() final override
1088 {
1090 }
1091
1092#if D3D12_RHI_RAYTRACING
1093 virtual void RHIExecuteMultiIndirectClusterOperation(const FRayTracingClusterOperationParams& Params) final override
1094 {
1096 }
1097
1099 {
1100#if WITH_MGPU
1101 FD3D12CommandContext::UnregisterAccelerationStructuresInternalMGPU(Params, GPUMask);
1102#endif
1103
1105 }
1106
1108 {
1110 }
1111
1114 uint32 Width, uint32 Height) final override
1115 {
1117 }
1118
1121 FRHIBuffer* ArgumentBuffer, uint32 ArgumentOffset) final override
1122 {
1124 }
1125
1127 {
1129 }
1130
1131 virtual void RHIClearShaderBindingTable(FRHIShaderBindingTable* SBT) final override
1132 {
1134 }
1135
1136 virtual void RHIBindAccelerationStructureMemory(FRHIRayTracingScene* Scene, FRHIBuffer* Buffer, uint32 BufferOffset) final override
1137 {
1139 }
1140
1142 {
1144 }
1145
1146#endif // D3D12_RHI_RAYTRACING
1147
1148 virtual void RHISetGPUMask(FRHIGPUMask InGPUMask) final override
1149 {
1152 }
1153
1154 virtual FRHIGPUMask RHIGetGPUMask() const final override
1155 {
1156 return GPUMask;
1157 }
1158
1159 // Sets the mask of which GPUs can be supported, as opposed to the currently active
1160 // set. RHISetGPUMask checks that the active mask is a subset of the physical mask.
1165
1167 {
1168 check(Context);
1169 const uint32 GPUIndex = Context->GetGPUIndex();
1170 check(PhysicalGPUMask.Contains(GPUIndex));
1171 PhysicalContexts[GPUIndex] = Context;
1172 }
1173
1175 {
1176 return PhysicalContexts[GPUIndex];
1177 }
1178
1180 {
1183 {
1184 PhysicalContexts[Index]->SetExecutingCommandList(InCmdList);
1185 }
1186 }
1187
1188private:
1190};
1191
1192class FD3D12ContextArray : public TRHIPipelineArray<FD3D12CommandContextBase*>
1193{
1194public:
1196 {
1197 for (int32 Index = 0; Index < int32(ERHIPipeline::Num); ++Index)
1198 {
1199 (*this)[Index] = FD3D12CommandContextBase::Get(Contexts[Index]);
1200 }
1201 }
1202
1203 operator FRHIContextArray() const
1204 {
1205 FRHIContextArray Result;
1206 for (int32 Index = 0; Index < int32(ERHIPipeline::Num); ++Index)
1207 {
1209 Result[Index] = Base ? &Base->GetHighestLevelContext() : nullptr;
1210 }
1211 return Result;
1212 }
1213};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define FORCENOINLINE
Definition AndroidPlatform.h:142
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
#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::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define RESTRICT
Definition Platform.h:706
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
ED3D12Access
Definition D3D12Access.h:15
ED3D12FlushFlags
Definition D3D12CommandContext.h:183
#define ContextRedirect(Call)
Definition D3D12CommandContext.h:886
ED3D12Units
Definition D3D12CommandContext.h:177
ED3D12QueryType
Definition D3D12Query.h:15
ED3D12QueueType
Definition D3D12Queue.h:11
#define MAX_CBS
Definition D3D12RHI.h:20
ED3D12PipelineType
Definition D3D12StateCachePrivate.h:59
ED3D12SyncPointType
Definition D3D12Submission.h:30
FORCEINLINE FD3D12Texture * GetD3D12TextureFromRHITexture(FRHITexture *Texture)
Definition D3D12Texture.h:237
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define THIRD_PARTY_INCLUDES_START
Definition GenericPlatformCompilerPreSetup.h:63
EPixelFormat
Definition PixelFormat.h:16
ERayTracingBindingType
Definition RHICommandList.h:281
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_NumStandardFrequencies
Definition RHIDefinitions.h:222
uint8 FUniformBufferStaticSlot
Definition RHIDefinitions.h:722
EVRSRateCombiner
Definition RHIDefinitions.h:873
EAsyncComputeBudget
Definition RHIDefinitions.h:1317
ETextureCreateFlags
Definition RHIDefinitions.h:1091
EVRSShadingRate
Definition RHIDefinitions.h:860
ERHIPipeline
Definition RHIPipeline.h:13
EShaderParameterTypeMask
Definition ShaderCore.h:263
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RobinHoodHashTable.h:1419
Definition AndroidPlatformMemory.h:38
Definition D3D12RHICommon.h:54
Definition D3D12Adapter.h:136
Definition D3D12Resources.h:891
Definition D3D12Resources.h:1017
Definition D3D12CommandList.h:36
Definition D3D12CommandContext.h:479
virtual FD3D12CommandContext * GetSingleDeviceContext(uint32 InGPUIndex)=0
virtual class FD3D12CommandContextRedirector * AsRedirector()
Definition D3D12CommandContext.h:490
static FD3D12CommandContextBase * Get(IRHIComputeContext *RHIContext)
Definition D3D12CommandContext.h:497
FRHIGPUMask GetPhysicalGPUMask() const
Definition D3D12CommandContext.h:486
friend class FD3D12CommandContext
Definition D3D12CommandContext.h:505
void RHIEndDrawingViewport(FRHIViewport *Viewport, bool bPresent, bool bLockToVsync) final override
Definition D3D12Viewport.cpp:753
virtual void RHISetAsyncComputeBudget(EAsyncComputeBudget Budget)
Definition D3D12CommandContext.h:488
FRHIGPUMask PhysicalGPUMask
Definition D3D12CommandContext.h:508
FRHIGPUMask GPUMask
Definition D3D12CommandContext.h:507
static FD3D12CommandContextBase & Get(FRHICommandListBase &RHICmdList)
Definition D3D12CommandContext.h:492
FRHIGPUMask GetGPUMask() const
Definition D3D12CommandContext.h:485
Definition D3D12CommandContext.h:876
virtual FORCEINLINE void RHISetGraphicsPipelineState(FRHIGraphicsPipelineState *GraphicsPipelineState, uint32 StencilRef, bool bApplyAdditionalState) final override
Definition D3D12CommandContext.h:1006
virtual FORCEINLINE void RHISetShadingRate(EVRSShadingRate ShadingRate, EVRSRateCombiner Combiner) final override
Definition D3D12CommandContext.h:1077
virtual FORCEINLINE void RHIDrawPrimitiveIndirect(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12CommandContext.h:1042
virtual FORCEINLINE void RHISetStaticUniformBuffer(FUniformBufferStaticSlot Slot, FRHIUniformBuffer *Buffer) final override
Definition D3D12CommandContext.h:1014
virtual FORCEINLINE void RHIEndRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition D3D12CommandContext.h:979
virtual FORCEINLINE void RHISetComputePipelineState(FRHIComputePipelineState *ComputePipelineState) final override
Definition D3D12CommandContext.h:889
virtual FORCEINLINE void RHIBeginTransitions(TArrayView< const FRHITransition * > Transitions) final override
Definition D3D12CommandContext.h:902
virtual FRHIGPUMask RHIGetGPUMask() const final override
Definition D3D12CommandContext.h:1154
virtual FORCEINLINE void RHIDrawIndexedIndirect(FRHIBuffer *IndexBufferRHI, FRHIBuffer *ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances) final override
Definition D3D12CommandContext.h:1046
virtual FORCEINLINE void RHIDrawIndexedPrimitive(FRHIBuffer *IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition D3D12CommandContext.h:1050
virtual FORCEINLINE void RHISetDepthBounds(float MinDepth, float MaxDepth) final override
Definition D3D12CommandContext.h:1072
virtual FD3D12CommandContextRedirector * AsRedirector() override
Definition D3D12CommandContext.h:884
virtual FORCEINLINE void RHIMultiDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset, FRHIBuffer *CountBuffer, uint32 CountBufferOffset, uint32 MaxDrawArguments) final override
Definition D3D12CommandContext.h:1058
virtual FORCEINLINE void RHIBeginRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition D3D12CommandContext.h:975
virtual void RHIBeginRenderPass(const FRHIRenderPassInfo &InInfo, const TCHAR *InName) final override
Definition D3D12CommandContext.h:1082
virtual void RHISetGPUMask(FRHIGPUMask InGPUMask) final override
Definition D3D12CommandContext.h:1148
virtual FORCEINLINE void RHISetShaderParameters(FRHIComputeShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
Definition D3D12CommandContext.h:926
virtual FORCEINLINE void RHISetStencilRef(uint32 StencilRef) final override
Definition D3D12CommandContext.h:1026
FORCEINLINE FD3D12CommandContext * GetSingleDeviceContext(uint32 GPUIndex) final override
Definition D3D12CommandContext.h:1174
virtual FORCEINLINE void RHIEndTransitions(TArrayView< const FRHITransition * > Transitions) final override
Definition D3D12CommandContext.h:906
virtual FORCEINLINE void RHISetMultipleViewports(uint32 Count, const FViewportBounds *Data) final override
Definition D3D12CommandContext.h:955
bool const bIsDefaultContext
Definition D3D12CommandContext.h:880
FORCEINLINE void SetPhysicalGPUMask(FRHIGPUMask InGPUMask)
Definition D3D12CommandContext.h:1161
FORCEINLINE void SetPhysicalContext(FD3D12CommandContext *Context)
Definition D3D12CommandContext.h:1166
FORCEINLINE void RHISetShaderRootConstants(const FUint32Vector4 &Constants) final override
Definition D3D12CommandContext.h:1034
virtual FORCEINLINE void RHISetStaticUniformBuffers(const FUniformBufferStaticBindings &InUniformBuffers) final override
Definition D3D12CommandContext.h:1010
virtual FORCEINLINE void RHISetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ) final override
Definition D3D12CommandContext.h:993
virtual FORCEINLINE void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override
Definition D3D12CommandContext.h:893
virtual FORCEINLINE void RHICopyToStagingBuffer(FRHIBuffer *SourceBuffer, FRHIStagingBuffer *DestinationStagingBuffer, uint32 Offset, uint32 NumBytes) final override
Definition D3D12CommandContext.h:922
virtual FORCEINLINE void RHISetShaderUnbinds(FRHIComputeShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds) final override
Definition D3D12CommandContext.h:930
FORCEINLINE void RHISetBlendFactor(const FLinearColor &BlendFactor) final override
Definition D3D12CommandContext.h:1030
virtual void RHIEndRenderPass() final override
Definition D3D12CommandContext.h:1087
virtual FORCEINLINE void RHISetStereoViewport(float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ) override
Definition D3D12CommandContext.h:997
virtual FORCEINLINE void RHISetShaderParameters(FRHIGraphicsShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
Definition D3D12CommandContext.h:1018
virtual FORCEINLINE void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override
Definition D3D12CommandContext.h:1002
virtual void SetExecutingCommandList(FRHICommandListBase *InCmdList) final override
Definition D3D12CommandContext.h:1179
virtual FORCEINLINE void RHICopyTexture(FRHITexture *SourceTextureRHI, FRHITexture *DestTextureRHI, const FRHICopyTextureInfo &CopyInfo) final override
Definition D3D12CommandContext.h:967
virtual FORCEINLINE void RHISetStreamSource(uint32 StreamIndex, FRHIBuffer *VertexBuffer, uint32 Offset) final override
Definition D3D12CommandContext.h:989
virtual FORCEINLINE void RHIDispatchIndirectComputeShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12CommandContext.h:897
virtual FORCEINLINE void RHIDrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition D3D12CommandContext.h:1038
virtual FORCEINLINE void RHIClearUAVUint(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FUintVector4 &Values) final override
Definition D3D12CommandContext.h:963
virtual FORCEINLINE void RHIDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12CommandContext.h:1054
virtual FORCEINLINE void RHISetShaderUnbinds(FRHIGraphicsShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds) final override
Definition D3D12CommandContext.h:1022
virtual FORCEINLINE void RHICopyBufferRegion(FRHIBuffer *DestBuffer, uint64 DstOffset, FRHIBuffer *SourceBuffer, uint64 SrcOffset, uint64 NumBytes) final override
Definition D3D12CommandContext.h:971
ED3D12QueueType const QueueType
Definition D3D12CommandContext.h:879
virtual FORCEINLINE void RHIClearUAVFloat(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FVector4f &Values) final override
Definition D3D12CommandContext.h:959
virtual FORCEINLINE void RHICalibrateTimers(FRHITimestampCalibrationQuery *CalibrationQuery) final override
Definition D3D12CommandContext.h:984
Definition D3D12CommandContext.h:513
virtual void RHIDrawIndexedPrimitive(FRHIBuffer *IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition D3D12Commands.cpp:1270
virtual void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override
Definition D3D12Commands.cpp:140
static FD3D12CommandContext & Get(FRHICommandListBase &RHICmdList, uint32 GPUIndex)
Definition D3D12CommandContext.h:518
virtual void RHISetShaderRootConstants(const FUint32Vector4 &Constants) override
Definition D3D12Commands.cpp:1118
FD3D12ConstantBuffer StageConstantBuffers[SF_NumStandardFrequencies]
Definition D3D12CommandContext.h:587
virtual void RHICalibrateTimers(FRHITimestampCalibrationQuery *CalibrationQuery) final override
Definition D3D12Commands.cpp:1007
static FORCEINLINE TReturnType * ResourceCast(TRHIType *Resource)
Definition D3D12CommandContext.h:760
void CommitGraphicsResourceTables()
Definition D3D12Commands.cpp:1073
virtual void RHIMultiDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset, FRHIBuffer *CountBuffer, uint32 CountBufferOffset, uint32 MaxDrawArguments) final override
Definition D3D12Commands.cpp:1302
virtual void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override
Definition D3D12Commands.cpp:345
uint32 GetGPUIndex() const
Definition D3D12CommandContext.h:802
FD3D12StateCache StateCache
Definition D3D12CommandContext.h:561
void FlushPendingDescriptorUpdates()
Definition D3D12Commands.cpp:70
FD3D12FastConstantAllocator ConstantsAllocator
Definition D3D12CommandContext.h:556
virtual void SetDepthBounds(float MinDepth, float MaxDepth)
Definition D3D12Commands.cpp:1518
virtual void RHIDispatchComputeShaderBundle(FRHIShaderBundle *ShaderBundle, FRHIBuffer *RecordArgBuffer, TConstArrayView< FRHIShaderParameterResource > SharedBindlessParameters, TConstArrayView< FRHIShaderBundleComputeDispatch > Dispatches, bool bEmulated) override
Definition D3D12Commands.cpp:1123
virtual void RHIClearUAVUint(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FUintVector4 &Values) final override
Definition D3D12UAV.cpp:478
virtual void RHISetStreamSource(uint32 StreamIndex, FRHIBuffer *VertexBuffer, uint32 Offset) final override
Definition D3D12Commands.cpp:90
virtual void SetShadingRate(EVRSShadingRate ShadingRate, FD3D12Resource *ShadingRateImage, const TStaticArray< EVRSRateCombiner, ED3D12VRSCombinerStages::Num > &Combiners)
Definition D3D12Commands.cpp:1540
virtual void RHIBeginRenderPass(const FRHIRenderPassInfo &InInfo, const TCHAR *InName)
Definition D3D12CommandContext.h:715
void SetUAVParameter(EShaderFrequency Frequency, uint32 UAVIndex, FD3D12UnorderedAccessView *UAV)
Definition D3D12Commands.cpp:455
virtual void RHICopyToStagingBuffer(FRHIBuffer *SourceBuffer, FRHIStagingBuffer *DestinationStagingBuffer, uint32 Offset, uint32 NumBytes) final override
Definition D3D12Commands.cpp:220
FORCENOINLINE void CopyBufferRegionChecked(ID3D12Resource *DestResource, const FName &DestName, uint64 DestOffset, ID3D12Resource *SourceResource, const FName &SourceName, uint64 SourceOffset, uint32 ByteCount)
Definition D3D12Buffer.cpp:96
virtual void RHIDispatchIndirectComputeShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12Commands.cpp:151
virtual void RHISetShadingRate(EVRSShadingRate ShadingRate, EVRSRateCombiner Combiner) final override
Definition D3D12Commands.cpp:1529
const FRHIShaderBindingLayout & GetShaderBindingLayout() const
Definition D3D12CommandContext.h:828
virtual void RHISetComputePipelineState(FRHIComputePipelineState *ComputePipelineState) final override
Definition D3D12Commands.cpp:437
virtual void RHIDispatchGraphicsShaderBundle(FRHIShaderBundle *ShaderBundle, FRHIBuffer *RecordArgBuffer, const FRHIShaderBundleGraphicsState &BundleState, TConstArrayView< FRHIShaderParameterResource > SharedBindlessParameters, TConstArrayView< FRHIShaderBundleGraphicsDispatch > Dispatches, bool bEmulated) override
Definition D3D12Commands.cpp:1147
virtual void RHIDrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition D3D12Commands.cpp:1216
void ResolveTextureUsingShader(FD3D12Texture *SourceTexture, FD3D12Texture *DestTexture, FD3D12RenderTargetView *DestSurfaceRTV, FD3D12DepthStencilView *DestSurfaceDSV, const D3D12_RESOURCE_DESC &ResolveTargetDesc, const FResolveRect &SourceRect, const FResolveRect &DestRect, typename TPixelShader::FParameter PixelShaderParameter)
Definition D3D12RenderTarget.cpp:149
void SetSRVParameter(EShaderFrequency Frequency, uint32 SRVIndex, FD3D12ShaderResourceView *SRV)
Definition D3D12Commands.cpp:467
virtual void OpenCommandList() override
Definition D3D12CommandContext.cpp:369
virtual void RHISetStaticUniformBuffer(FUniformBufferStaticSlot Slot, FRHIUniformBuffer *Buffer) final override
Definition D3D12Commands.cpp:215
void ResolveTexture(UE::RHICore::FResolveTextureInfo Info)
Definition D3D12RenderTarget.cpp:309
bool bDiscardSharedGraphicsConstants
Definition D3D12CommandContext.h:574
void SetResourcesFromTables(const ShaderType *RESTRICT)
virtual void RHISetStencilRef(uint32 StencilRef) final override
Definition D3D12Commands.cpp:795
void CommitComputeResourceTables()
Definition D3D12Commands.cpp:1109
static FD3D12Texture * RetrieveTexture(FRHITexture *Texture, uint32 GPUIndex)
Definition D3D12CommandContext.h:784
virtual ~FD3D12CommandContext()
Definition D3D12CommandContext.cpp:73
uint16 DirtyUniformBuffers[SF_NumStandardFrequencies]
Definition D3D12CommandContext.h:567
void SetExplicitDescriptorCache(FD3D12ExplicitDescriptorCache &ExplicitDescriptorCache)
Definition D3D12Commands.cpp:79
virtual void RHIDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12Commands.cpp:1342
virtual void RHISetMultipleViewports(uint32 Count, const FViewportBounds *Data) final override
Definition D3D12Shaders.cpp:291
TArray< uint32 > GPUEventStack
Definition D3D12CommandContext.h:559
bool bOuterOcclusionQuerySubmitted
Definition D3D12CommandContext.h:571
virtual void RHICopyBufferRegion(FRHIBuffer *DestBuffer, uint64 DstOffset, FRHIBuffer *SourceBuffer, uint64 SrcOffset, uint64 NumBytes) final override
Definition D3D12Buffer.cpp:953
virtual void RHIDrawPrimitiveIndirect(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition D3D12Commands.cpp:1230
virtual void RHIBeginRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition D3D12Query.cpp:198
static FORCEINLINE_DEBUGGABLE TReturnType * ResourceCast(TRHIType *Resource, uint32 GPUIndex)
Definition D3D12CommandContext.h:766
virtual void RHIClearUAVFloat(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FVector4f &Values) final override
Definition D3D12UAV.cpp:472
virtual void SetAsyncComputeBudgetInternal(EAsyncComputeBudget Budget)
Definition D3D12CommandContext.h:639
FORCENOINLINE void CopyTextureRegionChecked(const D3D12_TEXTURE_COPY_LOCATION *DestCopyLocation, int DestX, int DestY, int DestZ, EPixelFormat DestPixelFormat, const D3D12_TEXTURE_COPY_LOCATION *SourceCopyLocation, const D3D12_BOX *SourceBox, EPixelFormat SourcePixelFormat, const FName &DebugName)
Definition D3D12Texture.cpp:1467
FORCEINLINE_DEBUGGABLE FD3D12Texture * RetrieveTexture(FRHITexture *Texture)
Definition D3D12CommandContext.h:790
virtual void RHIEndTransitions(TArrayView< const FRHITransition * > Transitions) final override
Definition D3D12Commands.cpp:181
virtual void RHIEndRenderPass()
Definition D3D12CommandContext.h:724
FD3D12CommandContext * GetSingleDeviceContext(uint32 InGPUIndex) final override
Definition D3D12CommandContext.h:848
virtual void RHISetShaderUnbinds(FRHIComputeShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds) final override
Definition D3D12Commands.cpp:788
virtual void RHISetStereoViewport(float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ) override
Definition D3D12Commands.cpp:315
void SetRenderTargets(uint32 NumSimultaneousRenderTargets, const FRHIRenderTargetView *NewRenderTargets, const FRHIDepthRenderTargetView *NewDepthStencilTarget)
Definition D3D12Commands.cpp:862
virtual void ConditionalClearShaderResource(FD3D12ResourceLocation *Resource, EShaderParameterTypeMask ShaderParameterTypeMask) override final
Definition D3D12CommandContext.cpp:679
virtual void RHISetGPUMask(FRHIGPUMask InGPUMask) final override
Definition D3D12CommandContext.h:804
virtual ERHIPipeline GetPipeline() const override
Definition D3D12CommandContext.h:531
virtual void RHIBeginTransitions(TArrayView< const FRHITransition * > Transitions) final override
Definition D3D12Commands.cpp:176
const TArray< FRHIUniformBuffer * > & GetStaticUniformBuffers() const
Definition D3D12CommandContext.h:811
void CommitComputeShaderConstants()
Definition D3D12Commands.cpp:1040
void ClearAllShaderResources()
Definition D3D12CommandContext.cpp:705
virtual void RHISetGraphicsPipelineState(FRHIGraphicsPipelineState *GraphicsPipelineState, uint32 StencilRef, bool bApplyAdditionalState) final override
Definition D3D12Commands.cpp:390
static FORCEINLINE_DEBUGGABLE ObjectType * RetrieveObject(RHIType *RHIObject, uint32 GPUIndex)
Definition D3D12CommandContext.h:773
virtual void CloseCommandList() override final
Definition D3D12CommandContext.cpp:400
virtual void RHISetShaderParameters(FRHIComputeShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
FORCEINLINE_DEBUGGABLE const FD3D12Texture * RetrieveTexture(const FRHITexture *Texture)
Definition D3D12CommandContext.h:795
void CommitNonComputeShaderConstants()
Definition D3D12Commands.cpp:1017
bool bDiscardSharedComputeConstants
Definition D3D12CommandContext.h:577
virtual void ClearState(EClearStateMode ClearStateMode=EClearStateMode::All) override final
Definition D3D12CommandContext.cpp:663
virtual void RHISetDepthBounds(float MinDepth, float MaxDepth) final override
Definition D3D12Commands.cpp:1513
virtual void RHISetBlendFactor(const FLinearColor &BlendFactor) final override
Definition D3D12Commands.cpp:800
virtual void RHISetStaticUniformBuffers(const FUniformBufferStaticBindings &InUniformBuffers) final override
Definition D3D12Commands.cpp:186
virtual void RHISetShaderParameters(FRHIGraphicsShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
FRenderQueryRHIRef OuterOcclusionQuery
Definition D3D12CommandContext.h:570
virtual void RHIDrawIndexedIndirect(FRHIBuffer *IndexBufferRHI, FRHIBuffer *ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances) final override
Definition D3D12Commands.cpp:1250
FORCEINLINE_DEBUGGABLE ObjectType * RetrieveObject(RHIType *RHIObject)
Definition D3D12CommandContext.h:779
FD3D12UniformBuffer * BoundUniformBuffers[SF_NumStandardFrequencies][MAX_CBS]
Definition D3D12CommandContext.h:564
void SetRenderTargetsAndClear(const FRHISetRenderTargetsInfo &RenderTargetsInfo)
Definition D3D12Commands.cpp:943
virtual void RHIClearMRTImpl(bool *bClearColorArray, int32 NumClearColors, const FLinearColor *ColorArray, bool bClearDepth, float Depth, bool bClearStencil, uint32 Stencil)
Definition D3D12Commands.cpp:1382
uint32 GetFrameFenceCounter() const
Definition D3D12CommandContext.cpp:477
void UnsetExplicitDescriptorCache()
Definition D3D12Commands.cpp:84
virtual void RHISetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ) final override
Definition D3D12Commands.cpp:297
virtual void RHIEndRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition D3D12Query.cpp:238
virtual void RHICopyTexture(FRHITexture *SourceTexture, FRHITexture *DestTexture, const FRHICopyTextureInfo &CopyInfo) final override
Definition D3D12Texture.cpp:3072
void ClearShaderResources(FD3D12UnorderedAccessView *UAV, EShaderParameterTypeMask ShaderParameterTypeMask)
Definition D3D12CommandContext.cpp:689
Definition D3D12CommandList.h:63
Definition D3D12ConstantBuffer.h:20
Definition D3D12CommandContext.h:1193
FD3D12ContextArray(FRHIContextArray const &Contexts)
Definition D3D12CommandContext.h:1195
Definition D3D12CommandContext.h:199
EMarkerType
Definition D3D12CommandContext.h:328
FD3D12CommandList & GetCommandList()
Definition D3D12CommandContext.h:320
FD3D12Payload * GetPayload(EPhase Phase)
Definition D3D12CommandContext.h:339
TArray< FD3D12SyncPointRef > ToWait
Definition D3D12CommandContext.h:281
ED3D12QueueType const QueueType
Definition D3D12CommandContext.h:255
auto CopyCommandList()
Definition D3D12CommandContext.h:374
auto GraphicsCommandList()
Definition D3D12CommandContext.h:375
void BeginQuery(FD3D12QueryLocation const &Location)
Definition D3D12CommandContext.h:417
void EndQuery(FD3D12QueryLocation const &Location)
Definition D3D12CommandContext.h:418
void BeginRecursiveCommand()
Definition D3D12CommandContext.h:314
virtual ~FD3D12ContextCommon()=default
bool IsAsyncComputeContext() const
Definition D3D12CommandContext.h:256
void OpenIfNotAlready()
Definition D3D12CommandContext.h:358
bool IsDefaultContext() const
Definition D3D12CommandContext.h:261
void UpdateResidency(const FD3D12Resource *Resource)
Definition D3D12CommandContext.h:423
EClearStateMode
Definition D3D12CommandContext.h:214
auto BaseCommandList()
Definition D3D12CommandContext.h:373
FD3D12Device *const Device
Definition D3D12CommandContext.h:252
FD3D12QueryAllocator & GetTimestampQueries()
Definition D3D12CommandContext.h:287
TArray< FD3D12SyncPointRef > ToSignal
Definition D3D12CommandContext.h:282
virtual void ConditionalClearShaderResource(FD3D12ResourceLocation *Resource, EShaderParameterTypeMask ShaderParameterTypeMask)
Definition D3D12CommandContext.h:220
bool IsOpen() const
Definition D3D12CommandContext.h:263
bool const bIsDefaultContext
Definition D3D12CommandContext.h:260
bool IsPendingCommands() const
Definition D3D12CommandContext.h:264
EPhase
Definition D3D12CommandContext.h:332
const TUniquePtr< FD3D12BarriersFactory::BarriersForContextType > Barriers
Definition D3D12CommandContext.h:354
virtual void ClearState(EClearStateMode ClearStateMode=EClearStateMode::All)
Definition D3D12CommandContext.h:219
FD3D12SyncPoint * GetContextSyncPoint()
Definition D3D12CommandContext.h:266
Definition D3D12CommandContext.h:446
FD3D12ContextCopy(FD3D12Device *Device)
Definition D3D12CommandContext.h:448
Definition D3D12CommandContext.h:458
FD3D12ContextCopy & Context
Definition D3D12CommandContext.h:468
FD3D12SyncPoint * GetSyncPoint() const
Definition D3D12CommandContext.cpp:589
~FD3D12CopyScope()
Definition D3D12CommandContext.cpp:572
Definition D3D12View.h:435
Definition D3D12RHICommon.h:78
Definition D3D12Device.h:176
Definition D3D12ExplicitDescriptorCache.h:109
Definition D3D12Allocation.h:553
Definition D3D12Resources.h:73
ObjectType * GetLinkedObject(uint32 GPUIndex) const
Definition D3D12RHICommon.h:239
Definition D3D12Descriptors.h:203
Definition D3D12Query.h:184
Definition D3D12View.h:423
Definition D3D12Resources.h:641
Definition D3D12Resources.h:181
Definition D3D12RootSignature.h:73
Definition D3D12View.h:351
Definition D3D12StateCachePrivate.h:300
Definition D3D12Submission.h:76
static FD3D12SyncPointRef Create(ED3D12SyncPointType Type, const TCHAR *InDebugName)
Definition D3D12Submission.h:101
Definition D3D12Texture.h:31
Definition D3D12Resources.h:956
Definition D3D12View.h:506
Definition D3D12View.h:388
Definition NameTypes.h:617
Definition RHIResources.h:1581
Definition RHICommandList.h:455
IRHIComputeContext & GetComputeContext()
Definition RHICommandList.h:693
Definition RHIResources.h:1078
Definition RHIResources.h:1018
Definition RHIResources.h:5541
Definition RHIResources.h:4073
Definition RHIResources.h:1058
Definition RHIResources.h:947
Definition RHIResources.h:1115
Definition RHIResources.h:3755
Definition RHIResources.h:984
Definition RHIResources.h:2444
Definition RHIResources.h:4018
Definition RHIResources.h:4167
Definition RHIShaderBindingLayout.h:72
Definition RHIResources.h:3863
Definition RHIResources.h:3919
Definition RHIResources.h:3981
Definition RHIResources.h:2153
Definition RHIResources.h:1232
Definition RHIResources.h:3294
Definition RHIResources.h:2515
Definition D3D12RHIPrivate.h:719
Definition RHIContext.h:49
Definition RHIContext.h:693
virtual void RHICommitShaderBindingTable(FRHIShaderBindingTable *SBT, FRHIBuffer *InlineBindingDataBuffer)
Definition RHIContext.h:876
virtual void RHIDispatchIndirectMeshShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)
Definition RHIContext.h:821
virtual void RHISetBindingsOnShaderBindingTable(FRHIShaderBindingTable *SBT, FRHIRayTracingPipelineState *Pipeline, uint32 NumBindings, const FRayTracingLocalShaderBindings *Bindings, ERayTracingBindingType BindingType)
Definition RHIContext.h:871
virtual void RHIDispatchMeshShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ)
Definition RHIContext.h:816
virtual void RHIClearShaderBindingTable(FRHIShaderBindingTable *SBT)
Definition RHIContext.h:866
FRHIRenderPassInfo RenderPassInfo
Definition RHIContext.h:882
Definition RHIContext.h:257
IRHIComputeContext & GetLowestLevelContext()
Definition RHIContext.h:506
UE::RHI::GPUProfiler::FEvent::FStats StatEvent
Definition RHIContext.h:567
virtual void RHIBuildAccelerationStructures(TConstArrayView< FRayTracingGeometryBuildParams > Params, const FRHIBufferRange &ScratchBufferRange)
Definition RHIContext.h:476
virtual void RHIBindAccelerationStructureMemory(FRHIRayTracingScene *Scene, FRHIBuffer *Buffer, uint32 BufferOffset)
Definition RHIContext.h:486
virtual void RHIExecuteMultiIndirectClusterOperation(const FRayTracingClusterOperationParams &Params)
Definition RHIContext.h:471
virtual void RHIRayTraceDispatchIndirect(FRHIRayTracingPipelineState *RayTracingPipelineState, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)
Definition RHIContext.h:279
virtual void SetExecutingCommandList(FRHICommandListBase *InCmdList)
Definition RHIContext.h:550
virtual void RHIRayTraceDispatch(FRHIRayTracingPipelineState *RayTracingPipelineState, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, uint32 Width, uint32 Height)
Definition RHIContext.h:272
Definition ArrayView.h:139
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Last(SizeType IndexFromTheEnd=0) UE_LIFETIMEBOUND
Definition Array.h:1263
Definition RHICommandList.h:5170
Definition RHIPipeline.h:55
Definition StaticArray.h:26
Definition FunctionFwd.h:19
Definition UniquePtr.h:107
constexpr int32 Num
Definition D3D12StateCachePrivate.h:69
Definition Voronoi.cpp:10
void ResolveRenderPassTargets(const FRHIRenderPassInfo &RenderPassInfo, TFunction< void(FResolveTextureInfo)> ResolveFunction)
Definition RHICore.cpp:14
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition D3D12CommandContext.h:49
EType
Definition D3D12CommandContext.h:51
FD3D12DescriptorHeap * DescriptorHeap
Definition D3D12CommandContext.h:71
FD3D12DeferredDeleteObject(void *Ptr, EType Type)
Definition D3D12CommandContext.h:139
uint32 Subresource
Definition D3D12CommandContext.h:102
FD3D12Texture * Texture
Definition D3D12CommandContext.h:100
FD3D12DeferredDeleteObject(FD3D12Resource *RHIObject)
Definition D3D12CommandContext.h:106
uint64 CommittedTextureSize
Definition D3D12CommandContext.h:94
struct FD3D12DeferredDeleteObject::@913::@916 DescriptorBlock
FD3D12DeferredDeleteObject(ID3D12Object *D3DObject)
Definition D3D12CommandContext.h:127
ETextureCreateFlags Flags
Definition D3D12CommandContext.h:93
TUniqueFunction< void()> * Func
Definition D3D12CommandContext.h:74
ID3D12Object * D3DObject
Definition D3D12CommandContext.h:72
struct FD3D12DeferredDeleteObject::@913::@918 TextureStagingBufferData
FD3D12DeferredDeleteObject(FPlatformMemory::FPlatformVirtualMemoryBlock &VirtualBlock, ETextureCreateFlags Flags, uint64 CommittedTextureSize, void *RawMemory)
Definition D3D12CommandContext.h:151
FD3D12DeferredDeleteObject(FD3D12Texture *InTexture, TUniquePtr< FD3D12LockedResource > &&InLockedResource, uint32 InSubresource)
Definition D3D12CommandContext.h:161
FD3D12Heap * Heap
Definition D3D12CommandContext.h:70
FD3D12DeferredDeleteObject(FD3D12Heap *InHeap)
Definition D3D12CommandContext.h:111
struct FD3D12DeferredDeleteObject::@913::@915 BindlessDescriptor
FD3D12DeferredDeleteObject(FD3D12DescriptorHeap *InDescriptorHeap, EType Type)
Definition D3D12CommandContext.h:116
FD3D12OnlineDescriptorBlock * Block
Definition D3D12CommandContext.h:86
FPlatformMemory::FPlatformVirtualMemoryBlock VirtualBlock
Definition D3D12CommandContext.h:92
uint8 LockedResourceStorage[sizeof(TUniquePtr< FD3D12LockedResource >)]
Definition D3D12CommandContext.h:101
enum FD3D12DeferredDeleteObject::EType Type
FD3D12DeferredDeleteObject(FD3D12OnlineDescriptorBlock *Block, FD3D12OnlineDescriptorManager *Manager)
Definition D3D12CommandContext.h:146
void * RawMemory
Definition D3D12CommandContext.h:95
FD3D12Resource * RHIObject
Definition D3D12CommandContext.h:69
FRHIDescriptorHandle Handle
Definition D3D12CommandContext.h:78
struct FD3D12DeferredDeleteObject::@913::@917 VirtualAllocDescriptor
FD3D12DeferredDeleteObject(TUniqueFunction< void()> &&Func)
Definition D3D12CommandContext.h:156
FD3D12Device * Device
Definition D3D12CommandContext.h:79
void * CPUAllocation
Definition D3D12CommandContext.h:82
FD3D12OnlineDescriptorManager * Manager
Definition D3D12CommandContext.h:87
Definition D3D12Descriptors.h:95
Definition D3D12Descriptors.h:188
Definition WindowsD3D12Submission.h:13
Definition D3D12Query.h:129
Definition D3D12View.h:109
Definition Color.h:48
Definition RHICommandList.h:212
Definition RHICommandList.h:183
Definition RHIDefinitions.h:1401
Definition MultiGPU.h:33
constexpr uint32 ToIndex() const
Definition MultiGPU.h:95
SGPU_CONSTEXPR bool Contains(uint32 GPUIndex) const
Definition MultiGPU.h:121
SGPU_CONSTEXPR bool ContainsAll(FRHIGPUMask Rhs) const
Definition MultiGPU.h:126
Definition RHIResources.h:5248
Definition RHIShaderParameters.h:414
Definition RHIContext.h:643
Definition RHICommandList.h:267
Definition RHICommandList.h:248
Definition RHIResources.h:5209
Definition RHI.h:507
Definition RHICore.h:14
Definition GPUProfiler.h:196