UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
D3D12GPUProfiler.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "D3D12RHICommon.h"
6#include "GPUProfiler.h"
7
10
11#if (RHI_NEW_GPU_PROFILER == 0)
12
13// This class has multiple inheritance but really FGPUTiming is a static class
14class FD3D12BufferedGPUTiming : public FGPUTiming, public FD3D12DeviceChild
15{
16public:
19
23 void StartTiming();
24
29 void EndTiming();
30
38
39 static void CalibrateTimers(FD3D12Adapter* ParentAdapter);
40
41 static void Initialize(FD3D12Adapter* ParentAdapter);
42
43private:
44 struct
45 {
48 } Begin, End;
49
51 bool bIsTiming = false;
53 bool bStablePowerState = false;
54};
55
56
58class FD3D12EventNode : public FGPUProfilerEventNode, public FD3D12DeviceChild
59{
60public:
61 FD3D12EventNode(const TCHAR* InName, FGPUProfilerEventNode* InParent, FD3D12Device* InParentDevice);
63
68 virtual float GetTiming() override;
69
70 virtual void StartTiming() override
71 {
73 }
74
75 virtual void StopTiming() override
76 {
78 }
79
81};
82
84class FD3D12EventNodeFrame : public FGPUProfilerEventNodeFrame, public FD3D12DeviceChild
85{
86public:
89
91 virtual void StartFrame() override;
92
94 virtual void EndFrame() override;
95
97 virtual float GetRootTimingResults() override;
98
101};
102
107struct FD3D12GPUProfiler : public FGPUProfiler, public FD3D12DeviceChild
108{
111
117
118 virtual FGPUProfilerEventNode* CreateEventNode(const TCHAR* InName, FGPUProfilerEventNode* InParent) override
119 {
121 return EventNode;
122 }
123
124 void BeginFrame();
125 void EndFrame();
126};
127
128#endif // (RHI_NEW_GPU_PROFILER == 0)
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
Definition D3D12Adapter.h:136
Definition D3D12GPUProfiler.h:15
void StartTiming()
Definition D3D12GPUProfiler.cpp:55
uint64 Result
Definition D3D12GPUProfiler.h:46
static void CalibrateTimers(FD3D12Adapter *ParentAdapter)
Definition D3D12GPUProfiler.cpp:41
void EndTiming()
Definition D3D12GPUProfiler.cpp:90
uint64 GetTiming()
Definition D3D12GPUProfiler.cpp:104
FD3D12SyncPointRef SyncPoint
Definition D3D12GPUProfiler.h:47
Definition D3D12RHICommon.h:78
FORCEINLINE FD3D12Device * GetParentDevice() const
Definition D3D12RHICommon.h:85
FD3D12Device * Parent
Definition D3D12RHICommon.h:80
Definition D3D12Device.h:176
Definition D3D12GPUProfiler.h:85
virtual float GetRootTimingResults() override
Definition D3D12GPUProfiler.cpp:162
FD3D12BufferedGPUTiming RootEventTiming
Definition D3D12GPUProfiler.h:100
virtual void EndFrame() override
Definition D3D12GPUProfiler.cpp:157
virtual ~FD3D12EventNodeFrame()
virtual void StartFrame() override
Definition D3D12GPUProfiler.cpp:151
Definition D3D12GPUProfiler.h:59
virtual float GetTiming() override
Definition D3D12GPUProfiler.cpp:126
virtual void StopTiming() override
Definition D3D12GPUProfiler.h:75
virtual void StartTiming() override
Definition D3D12GPUProfiler.h:70
FD3D12BufferedGPUTiming Timing
Definition D3D12GPUProfiler.h:80
virtual ~FD3D12EventNode()
Definition D3D12Submission.h:76
Definition IndirectArray.h:20
Definition D3D12GPUProfiler.h:108
void BeginFrame()
Definition D3D12GPUProfiler.cpp:176
TIndirectArray< FD3D12EventNodeFrame > GPUHitchEventNodeFrames
Definition D3D12GPUProfiler.h:110
virtual FGPUProfilerEventNode * CreateEventNode(const TCHAR *InName, FGPUProfilerEventNode *InParent) override
Definition D3D12GPUProfiler.h:118
void EndFrame()
Definition D3D12GPUProfiler.cpp:222
FD3D12GPUProfiler(FD3D12Device *Parent)
Definition D3D12GPUProfiler.h:112