5#include "Containers/Array.h"
6#include "Containers/Map.h"
24#define WANTS_DRAW_MESH_EVENTS (WITH_PROFILEGPU && WITH_RHI_BREADCRUMBS)
26#if WITH_RHI_BREADCRUMBS
61 #define RHI_BREADCRUMB_EVENT_GAMETHREAD_PRIVATE_IMPL(Stat, Condition, StaticName, Format, ...) \
62 TOptional<FRHIBreadcrumbScope_GameThread> PREPROCESSOR_JOIN(BreadcrumbScope, __LINE__); \
67 PREPROCESSOR_JOIN(BreadcrumbScope, __LINE__).Emplace( \
68 RHI_BREADCRUMB_DESC_COPY_VALUES( \
78 #define RHI_BREADCRUMB_EVENT_GAMETHREAD( StaticName, ...) RHI_BREADCRUMB_EVENT_GAMETHREAD_PRIVATE_IMPL(RHI_GPU_STAT_ARGS_NONE, true, TEXT(StaticName), nullptr, ##__VA_ARGS__)
79 #define RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD( Condition, StaticName, ...) RHI_BREADCRUMB_EVENT_GAMETHREAD_PRIVATE_IMPL(RHI_GPU_STAT_ARGS_NONE, Condition, TEXT(StaticName), nullptr, ##__VA_ARGS__)
82 #define RHI_BREADCRUMB_EVENT_GAMETHREAD_F( StaticName, Format, ...) RHI_BREADCRUMB_EVENT_GAMETHREAD_PRIVATE_IMPL(RHI_GPU_STAT_ARGS_NONE, true, TEXT(StaticName), TEXT(Format), ##__VA_ARGS__)
83 #define RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD_F(Condition, StaticName, Format, ...) RHI_BREADCRUMB_EVENT_GAMETHREAD_PRIVATE_IMPL(RHI_GPU_STAT_ARGS_NONE, Condition, TEXT(StaticName), TEXT(Format), ##__VA_ARGS__)
86 #define RHI_BREADCRUMB_EVENT_GAMETHREAD_STR_DEPRECATED( StaticName, Format, ...) RHI_BREADCRUMB_EVENT_GAMETHREAD_PRIVATE_IMPL(RHI_GPU_STAT_ARGS_NONE, true, TEXT(StaticName), Format , ##__VA_ARGS__)
90 #define RHI_BREADCRUMB_EVENT_GAMETHREAD(...) do { } while(0)
91 #define RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD(...) do { } while(0)
92 #define RHI_BREADCRUMB_EVENT_GAMETHREAD_F(...) do { } while(0)
93 #define RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD_F(...) do { } while(0)
94 #define RHI_BREADCRUMB_EVENT_GAMETHREAD_STR_DEPRECATED(...) do { } while(0)
100#define SCOPED_DRAW_EVENT(RHICmdList, Name) RHI_BREADCRUMB_EVENT(RHICmdList, #Name);
101#define SCOPED_DRAW_EVENTF(RHICmdList, Name, Format, ...) RHI_BREADCRUMB_EVENT_F_STR_DEPRECATED(RHICmdList, #Name, Format, ##__VA_ARGS__);
102#define SCOPED_CONDITIONAL_DRAW_EVENT(RHICmdList, Name, Condition) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, #Name);
103#define SCOPED_CONDITIONAL_DRAW_EVENTF(RHICmdList, Name, Condition, Format, ...) RHI_BREADCRUMB_EVENT_F_CONDITIONAL_STR_DEPRECATED(RHICmdList, Condition, #Name, Format, ##__VA_ARGS__);
106#define SCOPED_DRAW_EVENT_GAMETHREAD(Name) UE_DEPRECATED_MACRO(5.6, "SCOPED_DRAW_EVENT_GAMETHREAD has been deprecated. Use RHI_BREADCRUMB_EVENT_GAMETHREAD instead." ) RHI_BREADCRUMB_EVENT_GAMETHREAD(#Name);
107#define SCOPED_DRAW_EVENTF_GAMETHREAD(Name, Format, ...) UE_DEPRECATED_MACRO(5.6, "SCOPED_DRAW_EVENTF_GAMETHREAD has been deprecated. Use RHI_BREADCRUMB_EVENT_GAMETHREAD_F instead." ) RHI_BREADCRUMB_EVENT_GAMETHREAD_STR_DEPRECATED(#Name, Format, ##__VA_ARGS__);
108#define SCOPED_CONDITIONAL_DRAW_EVENT_GAMETHREAD(Name, Condition) UE_DEPRECATED_MACRO(5.6, "SCOPED_CONDITIONAL_DRAW_EVENT_GAMETHREAD has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD(Condition, #Name);
109#define SCOPED_CONDITIONAL_DRAW_EVENTF_GAMETHREAD(Name, Condition, Format, ...) UE_DEPRECATED_MACRO(5.6, "SCOPED_CONDITIONAL_DRAW_EVENTF_GAMETHREAD has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD_F instead.") RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD_F(Condition, #Name, Format, ##__VA_ARGS__);
112#define BEGIN_DRAW_EVENTF(RHICmdList, Name, Event, Format, ...) UE_DEPRECATED_MACRO(5.5, "BEGIN_DRAW_EVENTF has been deprecated. Equivalent functionality can be implemented by constructing / destructing an instance of FRHIBreadcrumbEventManual." )
113#define STOP_DRAW_EVENT(Event) UE_DEPRECATED_MACRO(5.5, "STOP_DRAW_EVENT has been deprecated. Equivalent functionality can be implemented by constructing / destructing an instance of FRHIBreadcrumbEventManual." )
114#define STOP_DRAW_EVENT_GAMETHREAD(...) UE_DEPRECATED_MACRO(5.5, "STOP_DRAW_EVENT_GAMETHREAD has been deprecated. Equivalent functionality can be implemented by constructing / destructing an instance of FRHIBreadcrumbScope_GameThread." )
115#define BEGIN_DRAW_EVENTF_GAMETHREAD(...) UE_DEPRECATED_MACRO(5.5, "BEGIN_DRAW_EVENTF_GAMETHREAD has been deprecated. Equivalent functionality can be implemented by constructing / destructing an instance of FRHIBreadcrumbScope_GameThread." )
116#define BEGIN_DRAW_EVENTF_COLOR_GAMETHREAD(...) UE_DEPRECATED_MACRO(5.5, "BEGIN_DRAW_EVENTF_COLOR_GAMETHREAD has been deprecated. Equivalent functionality can be implemented by constructing / destructing an instance of FRHIBreadcrumbScope_GameThread.")
117#define SCOPED_DRAW_EVENT_COLOR(RHICmdList, Color, Name) UE_DEPRECATED_MACRO(5.5, "SCOPED_DRAW_EVENT_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT instead." ) RHI_BREADCRUMB_EVENT(RHICmdList, #Name)
118#define SCOPED_GPU_EVENT(RHICmdList, Name) UE_DEPRECATED_MACRO(5.5, "SCOPED_GPU_EVENT has been deprecated. Use RHI_BREADCRUMB_EVENT instead." ) RHI_BREADCRUMB_EVENT(RHICmdList, #Name)
119#define SCOPED_GPU_EVENT_COLOR(RHICmdList, Color, Name) UE_DEPRECATED_MACRO(5.5, "SCOPED_GPU_EVENT_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT instead." ) RHI_BREADCRUMB_EVENT(RHICmdList, #Name)
120#define SCOPED_COMPUTE_EVENT(RHICmdList, Name) UE_DEPRECATED_MACRO(5.5, "SCOPED_COMPUTE_EVENT has been deprecated. Use RHI_BREADCRUMB_EVENT instead." ) RHI_BREADCRUMB_EVENT(RHICmdList, #Name)
121#define SCOPED_COMPUTE_EVENT_COLOR(RHICmdList, Color, Name) UE_DEPRECATED_MACRO(5.5, "SCOPED_COMPUTE_EVENT_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT instead." ) RHI_BREADCRUMB_EVENT(RHICmdList, #Name)
122#define SCOPED_DRAW_EVENTF_COLOR(RHICmdList, Color, Name, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_DRAW_EVENTF_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT instead." ) RHI_BREADCRUMB_EVENT(RHICmdList, Format, ##__VA_ARGS__)
123#define SCOPED_GPU_EVENTF(RHICmdList, Name, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_GPU_EVENTF has been deprecated. Use RHI_BREADCRUMB_EVENT instead." ) RHI_BREADCRUMB_EVENT(RHICmdList, Format, ##__VA_ARGS__)
124#define SCOPED_GPU_EVENTF_COLOR(RHICmdList, Color, Name, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_GPU_EVENTF_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT instead." ) RHI_BREADCRUMB_EVENT(RHICmdList, Format, ##__VA_ARGS__)
125#define SCOPED_COMPUTE_EVENTF(RHICmdList, Name, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_COMPUTE_EVENTF has been deprecated. Use RHI_BREADCRUMB_EVENT instead." ) RHI_BREADCRUMB_EVENT(RHICmdList, Format, ##__VA_ARGS__)
126#define SCOPED_COMPUTE_EVENTF_COLOR(RHICmdList, Color, Name, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_COMPUTE_EVENTF_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT instead." ) RHI_BREADCRUMB_EVENT(RHICmdList, Format, ##__VA_ARGS__)
127#define SCOPED_CONDITIONAL_DRAW_EVENT_COLOR(RHICmdList, Name, Color, Condition) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_DRAW_EVENT_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, #Name)
128#define SCOPED_CONDITIONAL_GPU_EVENT(RHICmdList, Name, Condition) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_GPU_EVENT has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, #Name)
129#define SCOPED_CONDITIONAL_GPU_EVENT_COLOR(RHICmdList, Name, Color, Condition) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_GPU_EVENT_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, #Name)
130#define SCOPED_CONDITIONAL_COMPUTE_EVENT(RHICmdList, Name, Condition) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_COMPUTE_EVENT has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, #Name)
131#define SCOPED_CONDITIONAL_COMPUTE_EVENT_COLOR(RHICmdList, Name, Color, Condition) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_COMPUTE_EVENT_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, #Name)
132#define SCOPED_CONDITIONAL_DRAW_EVENTF_COLOR(RHICmdList, Color, Name, Condition, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_DRAW_EVENTF_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, Format, ##__VA_ARGS__)
133#define SCOPED_CONDITIONAL_GPU_EVENTF(RHICmdList, Name, Condition, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_GPU_EVENTF has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, Format, ##__VA_ARGS__)
134#define SCOPED_CONDITIONAL_GPU_EVENTF_COLOR(RHICmdList, Color, Name, Condition, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_GPU_EVENTF_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, Format, ##__VA_ARGS__)
135#define SCOPED_CONDITIONAL_COMPUTE_EVENTF(RHICmdList, Name, Condition, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_COMPUTE_EVENTF has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, Format, ##__VA_ARGS__)
136#define SCOPED_CONDITIONAL_COMPUTE_EVENTF_COLOR(RHICmdList, Color, Name, Condition, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_COMPUTE_EVENTF_COLOR has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL(RHICmdList, Condition, Format, ##__VA_ARGS__)
137#define BEGIN_DRAW_EVENTF_COLOR(RHICmdList, Color, Name, Event, Format, ...) UE_DEPRECATED_MACRO(5.5, "BEGIN_DRAW_EVENTF_COLOR has been deprecated. Use BEGIN_DRAW_EVENTF instead." ) BEGIN_DRAW_EVENTF(RHICmdList, Name, Event, Format, ##__VA_ARGS__)
138#define BEGIN_GPU_EVENTF(RHICmdList, Name, Event, Format, ...) UE_DEPRECATED_MACRO(5.5, "BEGIN_GPU_EVENTF has been deprecated. Use BEGIN_DRAW_EVENTF instead." ) BEGIN_DRAW_EVENTF(RHICmdList, Name, Event, Format, ##__VA_ARGS__)
139#define BEGIN_GPU_EVENTF_COLOR(RHICmdList, Color, Name, Event, Format, ...) UE_DEPRECATED_MACRO(5.5, "BEGIN_GPU_EVENTF_COLOR has been deprecated. Use BEGIN_DRAW_EVENTF instead." ) BEGIN_DRAW_EVENTF(RHICmdList, Name, Event, Format, ##__VA_ARGS__)
140#define STOP_GPU_EVENT(Event) UE_DEPRECATED_MACRO(5.5, "STOP_GPU_EVENT has been deprecated. Use STOP_DRAW_EVENT instead." ) STOP_DRAW_EVENT(Event)
141#define SCOPED_DRAW_EVENT_COLOR_GAMETHREAD(Color, Name) UE_DEPRECATED_MACRO(5.5, "SCOPED_DRAW_EVENT_COLOR_GAMETHREAD has been deprecated. Use RHI_BREADCRUMB_EVENT_GAMETHREAD instead." ) RHI_BREADCRUMB_EVENT_GAMETHREAD(#Name)
142#define SCOPED_DRAW_EVENTF_COLOR_GAMETHREAD(Color, Name, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_DRAW_EVENTF_COLOR_GAMETHREAD has been deprecated. Use RHI_BREADCRUMB_EVENT_GAMETHREAD instead." ) RHI_BREADCRUMB_EVENT_GAMETHREAD(Format, ##__VA_ARGS__)
143#define SCOPED_CONDITIONAL_DRAW_EVENT_COLOR_GAMETHREAD(Name, Color, Condition) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_DRAW_EVENT_COLOR_GAMETHREAD has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD instead." ) RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD(Condition, #Name)
144#define SCOPED_CONDITIONAL_DRAW_EVENTF_COLOR_GAMETHREAD(Color, Name, Condition, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_CONDITIONAL_DRAW_EVENTF_COLOR_GAMETHREAD has been deprecated. Use RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD instead.") RHI_BREADCRUMB_EVENT_CONDITIONAL_GAMETHREAD(Condition, Format, ##__VA_ARGS__)
145#define SCOPED_RHI_DRAW_EVENT(RHICmdContext, Name) UE_DEPRECATED_MACRO(5.5, "SCOPED_RHI_DRAW_EVENT has been deprecated. Use standard RHI breadcrumb events instead." )
146#define SCOPED_RHI_DRAW_EVENTF(RHICmdContext, Name, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_RHI_DRAW_EVENTF has been deprecated. Use standard RHI breadcrumb events instead." )
147#define SCOPED_RHI_CONDITIONAL_DRAW_EVENT(RHICmdContext, Name, Condition) UE_DEPRECATED_MACRO(5.5, "SCOPED_RHI_CONDITIONAL_DRAW_EVENT has been deprecated. Use standard RHI breadcrumb events instead." )
148#define SCOPED_RHI_CONDITIONAL_DRAW_EVENTF(RHICmdContext, Name, Condition, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_RHI_CONDITIONAL_DRAW_EVENTF has been deprecated. Use standard RHI breadcrumb events instead." )
149#define SCOPED_RHI_DRAW_EVENT_COLOR(RHICmdContext, Color, Name) UE_DEPRECATED_MACRO(5.5, "SCOPED_RHI_DRAW_EVENT_COLOR has been deprecated. Use standard RHI breadcrumb events instead." )
150#define SCOPED_RHI_DRAW_EVENTF_COLOR(RHICmdContext, Color, Name, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_RHI_DRAW_EVENTF_COLOR has been deprecated. Use standard RHI breadcrumb events instead." )
151#define SCOPED_RHI_CONDITIONAL_DRAW_EVENT_COLOR(RHICmdContext, Color, Name, Condition) UE_DEPRECATED_MACRO(5.5, "SCOPED_RHI_CONDITIONAL_DRAW_EVENT_COLOR has been deprecated. Use standard RHI breadcrumb events instead." )
152#define SCOPED_RHI_CONDITIONAL_DRAW_EVENTF_COLOR(RHICmdContext, Color, Name, Condition, Format, ...) UE_DEPRECATED_MACRO(5.5, "SCOPED_RHI_CONDITIONAL_DRAW_EVENTF_COLOR has been deprecated. Use standard RHI breadcrumb events instead.")
154#if RHI_NEW_GPU_PROFILER
158 #define DECLARE_GPU_STAT_NAME_TYPE(StatName, NameString) \
159 struct TRHIGPUStatNameProvider_##StatName \
161 static constexpr TCHAR const* GetDisplayName() \
165 static constexpr TCHAR const* GetStatName() \
167 return TEXT(#StatName); \
172 #define DECLARE_GPU_STAT_NAMED( StatName, NameString) DECLARE_GPU_STAT_NAME_TYPE(StatName, NameString); static UE::RHI::GPUProfiler::TGPUStat <TRHIGPUStatNameProvider_##StatName> GPUStat_##StatName
173 #define DECLARE_GPU_STAT_NAMED_EXTERN( StatName, NameString) DECLARE_GPU_STAT_NAME_TYPE(StatName, NameString); extern UE::RHI::GPUProfiler::TGPUStat <TRHIGPUStatNameProvider_##StatName> GPUStat_##StatName
174 #define DECLARE_GPU_DRAWCALL_STAT_NAMED( StatName, NameString) DECLARE_GPU_STAT_NAME_TYPE(StatName, NameString); static UE::RHI::GPUProfiler::TGPUStatWithDrawcallCategory<TRHIGPUStatNameProvider_##StatName> GPUStat_##StatName
175 #define DECLARE_GPU_DRAWCALL_STAT_NAMED_EXTERN(StatName, NameString) DECLARE_GPU_STAT_NAME_TYPE(StatName, NameString); extern UE::RHI::GPUProfiler::TGPUStatWithDrawcallCategory<TRHIGPUStatNameProvider_##StatName> GPUStat_##StatName
177 #define DECLARE_GPU_STAT( StatName) DECLARE_GPU_STAT_NAMED( StatName, TEXT(#StatName))
178 #define DECLARE_GPU_STAT_EXTERN( StatName) DECLARE_GPU_STAT_NAMED_EXTERN( StatName, TEXT(#StatName))
179 #define DECLARE_GPU_DRAWCALL_STAT( StatName) DECLARE_GPU_DRAWCALL_STAT_NAMED( StatName, TEXT(#StatName))
180 #define DECLARE_GPU_DRAWCALL_STAT_EXTERN(StatName) DECLARE_GPU_DRAWCALL_STAT_NAMED_EXTERN(StatName, TEXT(#StatName))
182 #define DEFINE_GPU_STAT( StatName) UE::RHI::GPUProfiler::TGPUStat <TRHIGPUStatNameProvider_##StatName> GPUStat_##StatName
183 #define DEFINE_GPU_DRAWCALL_STAT(StatName) UE::RHI::GPUProfiler::TGPUStatWithDrawcallCategory<TRHIGPUStatNameProvider_##StatName> GPUStat_##StatName
187 #define DECLARE_GPU_STAT_NAMED(...)
188 #define DECLARE_GPU_STAT_NAMED_EXTERN(...)
189 #define DECLARE_GPU_DRAWCALL_STAT_NAMED(...)
190 #define DECLARE_GPU_DRAWCALL_STAT_NAMED_EXTERN(...)
192 #define DECLARE_GPU_STAT(...)
193 #define DECLARE_GPU_STAT_EXTERN(...)
194 #define DECLARE_GPU_DRAWCALL_STAT(...)
195 #define DECLARE_GPU_DRAWCALL_STAT_EXTERN(...)
197 #define DEFINE_GPU_STAT(...)
198 #define DEFINE_GPU_DRAWCALL_STAT(...)
204 #define SCOPED_GPU_STAT_VERBOSE(...)
205 #define SCOPED_GPU_STAT(...)
206 #define GPU_STATS_BEGINFRAME(...)
207 #define GPU_STATS_ENDFRAME(...)
208 #define GPU_STATS_SUSPENDFRAME(...)
222 #define DECLARE_GPU_STAT(StatName) DECLARE_FLOAT_COUNTER_STAT(TEXT(#StatName) , Stat_GPU_##StatName, STATGROUP_GPU ); CSV_DEFINE_STAT(GPU,StatName); static FRHIDrawStatsCategory DrawcallCountCategory_##StatName;
223 #define DECLARE_GPU_STAT_NAMED(StatName, NameString) DECLARE_FLOAT_COUNTER_STAT(NameString , Stat_GPU_##StatName, STATGROUP_GPU ); CSV_DEFINE_STAT(GPU,StatName); static FRHIDrawStatsCategory DrawcallCountCategory_##StatName;
224 #define DECLARE_GPU_DRAWCALL_STAT(StatName) DECLARE_FLOAT_COUNTER_STAT(TEXT(#StatName) , Stat_GPU_##StatName, STATGROUP_GPU ); CSV_DEFINE_STAT(GPU,StatName); static FRHIDrawStatsCategory DrawcallCountCategory_##StatName((TCHAR*)TEXT(#StatName));
225 #define DECLARE_GPU_DRAWCALL_STAT_NAMED(StatName, NameString) DECLARE_FLOAT_COUNTER_STAT(NameString , Stat_GPU_##StatName, STATGROUP_GPU ); CSV_DEFINE_STAT(GPU,StatName); static FRHIDrawStatsCategory DrawcallCountCategory_##StatName((TCHAR*)TEXT(#StatName));
226 #define DECLARE_GPU_DRAWCALL_STAT_EXTERN(StatName) DECLARE_FLOAT_COUNTER_STAT_EXTERN(TEXT(#StatName), Stat_GPU_##StatName, STATGROUP_GPU, ); CSV_DECLARE_STAT_EXTERN(GPU,StatName); extern FRHIDrawStatsCategory DrawcallCountCategory_##StatName;
227 #define DECLARE_GPU_DRAWCALL_STAT_NAMED_EXTERN(StatName, NameString) DECLARE_FLOAT_COUNTER_STAT_EXTERN(NameString , Stat_GPU_##StatName, STATGROUP_GPU, ); CSV_DECLARE_STAT_EXTERN(GPU,StatName); extern FRHIDrawStatsCategory DrawcallCountCategory_##StatName;
230 #define DECLARE_GPU_STAT_NAMED_EXTERN(StatName, NameString) DECLARE_FLOAT_COUNTER_STAT_EXTERN(NameString, Stat_GPU_##StatName, STATGROUP_GPU, ); CSV_DECLARE_STAT_EXTERN(GPU,StatName); extern FRHIDrawStatsCategory DrawcallCountCategory_##StatName;
231 #define DEFINE_GPU_STAT(StatName) DEFINE_STAT(Stat_GPU_##StatName); CSV_DEFINE_STAT(GPU,StatName); FRHIDrawStatsCategory DrawcallCountCategory_##StatName;
232 #define DEFINE_GPU_DRAWCALL_STAT(StatName) DEFINE_STAT(Stat_GPU_##StatName); CSV_DEFINE_STAT(GPU,StatName); FRHIDrawStatsCategory DrawcallCountCategory_##StatName((TCHAR*)TEXT(#StatName));
234 #define SCOPED_GPU_STAT_VERBOSE(RHICmdList, StatName, Description) \
235 FScopedGPUStatEvent PREPROCESSOR_JOIN(GPUStatEvent_##StatName,__LINE__)( \
237 , CSV_STAT_FNAME(StatName) \
238 , GET_STATID(Stat_GPU_##StatName) \
241 FScopedDrawStatCategory PREPROCESSOR_JOIN(DrawCallScope_##StatName, __LINE__)( \
242 RHICmdList, DrawcallCountCategory_##StatName \
245 #define SCOPED_GPU_STAT(RHICmdList, StatName) SCOPED_GPU_STAT_VERBOSE(RHICmdList, StatName, nullptr)
247 #define GPU_STATS_BEGINFRAME(RHICmdList) FRealtimeGPUProfiler::Get()->BeginFrame(RHICmdList);
248 #define GPU_STATS_ENDFRAME(RHICmdList) FRealtimeGPUProfiler::Get()->EndFrame(RHICmdList);
249 #define GPU_STATS_SUSPENDFRAME() FRealtimeGPUProfiler::Get()->SuspendFrame();
253 #define DECLARE_GPU_STAT(StatName)
254 #define DECLARE_GPU_STAT_NAMED(StatName, NameString)
255 #define DECLARE_GPU_DRAWCALL_STAT(StatName)
256 #define DECLARE_GPU_DRAWCALL_STAT_NAMED(StatName, NameString)
257 #define DECLARE_GPU_DRAWCALL_STAT_EXTERN(StatName)
258 #define DECLARE_GPU_DRAWCALL_STAT_NAMED_EXTERN(StatName, NameString)
260 #define DECLARE_GPU_STAT_NAMED_EXTERN(StatName, NameString)
261 #define DEFINE_GPU_STAT(StatName)
262 #define DEFINE_GPU_DRAWCALL_STAT(StatName)
264 #define SCOPED_GPU_STAT_VERBOSE(RHICmdList, StatName, Description)
265 #define SCOPED_GPU_STAT(RHICmdList, StatName)
267 #define GPU_STATS_BEGINFRAME(RHICmdList)
268 #define GPU_STATS_ENDFRAME(RHICmdList)
269 #define GPU_STATS_SUSPENDFRAME()
293 operator bool()
const {
return Query !=
nullptr; }
301#if GPUPROFILERTRACE_ENABLED
306 static const uint64 HistoryCount = 64;
360#if GPUPROFILERTRACE_ENABLED
376 bool bLocked =
false;
378#if GPUPROFILERTRACE_ENABLED
#define check(expr)
Definition AssertionMacros.h:314
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define CSV_DECLARE_CATEGORY_MODULE_EXTERN(Module_API, CategoryName)
Definition CsvProfiler.h:80
const bool
Definition NetworkReplayStreaming.h:178
RENDERCORE_API bool AreGPUStatsEnabled()
#define ENQUEUE_RENDER_COMMAND(Type)
Definition RenderingThread.h:1167
CORE_API bool IsInGameThread()
Definition ThreadingBase.cpp:185
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition NameTypes.h:617
Definition RHICommandList.h:455
Definition RHICommandList.h:3819
Definition RHIResources.h:2444
Definition UnrealString.h.inl:34
Definition StaticArray.h:26
Definition UniquePtr.h:107
@ Description
Definition PathFollowingComponent.h:177
UE::FRecursiveMutex Mutex
Definition MeshPaintVirtualTexture.cpp:164
FORCEINLINE T * Get(const FObjectPtr &ObjectPtr)
Definition ObjectPtr.h:426
Definition RHIStats.h:110
Definition Optional.h:131
Definition LightweightStats.h:416