UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MetalProfiler.h File Reference
#include "MetalRHIPrivate.h"
#include "MetalCounterSampler.h"
#include "GPUProfiler.h"
#include "RHIBreadcrumbs.h"

Go to the source code of this file.

Classes

struct  FMetalCommandBufferTiming
 
class  FMetalCommandBufferTimer
 
class  FMetalEventNode
 
class  FMetalEventNodeFrame
 
class  FMetalGPUTiming
 
struct  IMetalStatsScope
 
struct  FMetalCPUStats
 
struct  FMetalDisplayStats
 
struct  FMetalCommandBufferStats
 
struct  FMetalGPUProfiler
 
class  FMetalProfiler
 
struct  FScopedMetalCPUStats
 

Enumerations

enum  EMTLFenceType { EMTLFenceTypeWait , EMTLFenceTypeUpdate }
 

Functions

 DECLARE_DELEGATE_OneParam (FMetalCommandBufferCompletionHandler, MTL::CommandBuffer *)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("MakeDrawable time"), STAT_MetalMakeDrawableTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Draw call time"), STAT_MetalDrawCallTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("PrepareDraw time"), STAT_MetalPrepareDrawTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("SwitchToNone time"), STAT_MetalSwitchToNoneTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("SwitchToRender time"), STAT_MetalSwitchToRenderTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("SwitchToCompute time"), STAT_MetalSwitchToComputeTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("SwitchToBlit time"), STAT_MetalSwitchToBlitTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("PrepareToRender time"), STAT_MetalPrepareToRenderTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("PrepareToDispatch time"), STAT_MetalPrepareToDispatchTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("CommitRenderResourceTables time"), STAT_MetalCommitRenderResourceTablesTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("SetRenderState time"), STAT_MetalSetRenderStateTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("SetRenderPipelineState time"), STAT_MetalSetRenderPipelineStateTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("PipelineState time"), STAT_MetalPipelineStateTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Buffer Page-Off time"), STAT_MetalBufferPageOffTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Texture Page-Off time"), STAT_MetalTexturePageOffTime, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Uniform Memory Allocated Per-Frame"), STAT_MetalUniformMemAlloc, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Uniform Memory Freed Per-Frame"), STAT_MetalUniformMemFreed, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Vertex Memory Allocated Per-Frame"), STAT_MetalVertexMemAlloc, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Vertex Memory Freed Per-Frame"), STAT_MetalVertexMemFreed, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Index Memory Allocated Per-Frame"), STAT_MetalIndexMemAlloc, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Index Memory Freed Per-Frame"), STAT_MetalIndexMemFreed, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Texture Memory Updated Per-Frame"), STAT_MetalTextureMemUpdate, STATGROUP_MetalRHI,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Buffer Memory"), STAT_MetalBufferMemory, STATGROUP_MetalRHI,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Texture Memory"), STAT_MetalTextureMemory, STATGROUP_MetalRHI,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Heap Memory"), STAT_MetalHeapMemory, STATGROUP_MetalRHI,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Unused Buffer Memory"), STAT_MetalBufferUnusedMemory, STATGROUP_MetalRHI,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Unused Texture Memory"), STAT_MetalTextureUnusedMemory, STATGROUP_MetalRHI,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Uniform Memory In Flight"), STAT_MetalUniformMemoryInFlight, STATGROUP_MetalRHI,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Allocated Uniform Pool Memory"), STAT_MetalUniformAllocatedMemory, STATGROUP_MetalRHI,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Uniform Memory Per Frame"), STAT_MetalUniformBytesPerFrame, STATGROUP_MetalRHI,)
 
 DECLARE_MEMORY_STAT_EXTERN (TEXT("Allocated Frame Temp Memory"), STAT_MetalTempAllocatorAllocatedMemory, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Buffer Count"), STAT_MetalBufferCount, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Texture Count"), STAT_MetalTextureCount, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Heap Count"), STAT_MetalHeapCount, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN (TEXT("Fence Count"), STAT_MetalFenceCount, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Texture Page-On time"), STAT_MetalTexturePageOnTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("GPU Work time"), STAT_MetalGPUWorkTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("GPU Idle time"), STAT_MetalGPUIdleTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("Present time"), STAT_MetalPresentTime, STATGROUP_MetalRHI,)
 
 DECLARE_CYCLE_STAT_EXTERN (TEXT("CustomPresent time"), STAT_MetalCustomPresentTime, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Number Command Buffers Created Per-Frame"), STAT_MetalCommandBufferCreatedPerFrame, STATGROUP_MetalRHI,)
 
 DECLARE_DWORD_COUNTER_STAT_EXTERN (TEXT("Number Command Buffers Committed Per-Frame"), STAT_MetalCommandBufferCommittedPerFrame, STATGROUP_MetalRHI,)
 

Enumeration Type Documentation

◆ EMTLFenceType

Enumerator
EMTLFenceTypeWait 
EMTLFenceTypeUpdate 

Function Documentation

◆ DECLARE_CYCLE_STAT_EXTERN() [1/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Buffer Page-Off time" ,
STAT_MetalBufferPageOffTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [2/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("CommitRenderResourceTables time" ,
STAT_MetalCommitRenderResourceTablesTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [3/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("CustomPresent time" ,
STAT_MetalCustomPresentTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [4/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Draw call time" ,
STAT_MetalDrawCallTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [5/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("GPU Idle time" ,
STAT_MetalGPUIdleTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [6/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("GPU Work time" ,
STAT_MetalGPUWorkTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [7/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("MakeDrawable time" ,
STAT_MetalMakeDrawableTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [8/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("PipelineState time" ,
STAT_MetalPipelineStateTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [9/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("PrepareDraw time" ,
STAT_MetalPrepareDrawTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [10/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("PrepareToDispatch time" ,
STAT_MetalPrepareToDispatchTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [11/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("PrepareToRender time" ,
STAT_MetalPrepareToRenderTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [12/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Present time" ,
STAT_MetalPresentTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [13/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("SetRenderPipelineState time" ,
STAT_MetalSetRenderPipelineStateTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [14/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("SetRenderState time" ,
STAT_MetalSetRenderStateTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [15/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("SwitchToBlit time" ,
STAT_MetalSwitchToBlitTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [16/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("SwitchToCompute time" ,
STAT_MetalSwitchToComputeTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [17/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("SwitchToNone time" ,
STAT_MetalSwitchToNoneTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [18/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("SwitchToRender time" ,
STAT_MetalSwitchToRenderTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [19/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Texture Page-Off time" ,
STAT_MetalTexturePageOffTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_CYCLE_STAT_EXTERN() [20/20]

DECLARE_CYCLE_STAT_EXTERN ( TEXT("Texture Page-On time" ,
STAT_MetalTexturePageOnTime  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DELEGATE_OneParam()

DECLARE_DELEGATE_OneParam ( FMetalCommandBufferCompletionHandler  ,
MTL::CommandBuffer *   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [1/4]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Buffer Count" ,
STAT_MetalBufferCount  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [2/4]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Fence Count" ,
STAT_MetalFenceCount  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [3/4]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Heap Count" ,
STAT_MetalHeapCount  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN() [4/4]

DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN ( TEXT("Texture Count" ,
STAT_MetalTextureCount  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [1/9]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Index Memory Allocated Per-Frame" ,
STAT_MetalIndexMemAlloc  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [2/9]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Index Memory Freed Per-Frame" ,
STAT_MetalIndexMemFreed  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [3/9]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Number Command Buffers Committed Per-Frame" ,
STAT_MetalCommandBufferCommittedPerFrame  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [4/9]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Number Command Buffers Created Per-Frame" ,
STAT_MetalCommandBufferCreatedPerFrame  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [5/9]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Texture Memory Updated Per-Frame" ,
STAT_MetalTextureMemUpdate  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [6/9]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Uniform Memory Allocated Per-Frame" ,
STAT_MetalUniformMemAlloc  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [7/9]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Uniform Memory Freed Per-Frame" ,
STAT_MetalUniformMemFreed  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [8/9]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Vertex Memory Allocated Per-Frame" ,
STAT_MetalVertexMemAlloc  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_DWORD_COUNTER_STAT_EXTERN() [9/9]

DECLARE_DWORD_COUNTER_STAT_EXTERN ( TEXT("Vertex Memory Freed Per-Frame" ,
STAT_MetalVertexMemFreed  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [1/9]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Allocated Frame Temp Memory" ,
STAT_MetalTempAllocatorAllocatedMemory  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [2/9]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Allocated Uniform Pool Memory" ,
STAT_MetalUniformAllocatedMemory  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [3/9]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Buffer Memory" ,
STAT_MetalBufferMemory  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [4/9]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Heap Memory" ,
STAT_MetalHeapMemory  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [5/9]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Texture Memory" ,
STAT_MetalTextureMemory  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [6/9]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Uniform Memory In Flight" ,
STAT_MetalUniformMemoryInFlight  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [7/9]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Uniform Memory Per Frame" ,
STAT_MetalUniformBytesPerFrame  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [8/9]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Unused Buffer Memory" ,
STAT_MetalBufferUnusedMemory  ,
STATGROUP_MetalRHI   
)

◆ DECLARE_MEMORY_STAT_EXTERN() [9/9]

DECLARE_MEMORY_STAT_EXTERN ( TEXT("Unused Texture Memory" ,
STAT_MetalTextureUnusedMemory  ,
STATGROUP_MetalRHI   
)