UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MacPlatformMisc.cpp File Reference
#include "Mac/MacPlatformMisc.h"
#include "Misc/App.h"
#include "HAL/ExceptionHandling.h"
#include "Misc/SecureHash.h"
#include "Misc/VarargsHelper.h"
#include "Mac/CocoaThread.h"
#include "Misc/EngineVersion.h"
#include "Mac/MacMallocZone.h"
#include "Apple/ApplePlatformSymbolication.h"
#include "Mac/MacPlatformCrashContext.h"
#include "GenericPlatform/GenericPlatformDriver.h"
#include "HAL/ThreadHeartBeat.h"
#include "HAL/PlatformOutputDevices.h"
#include "HAL/IConsoleManager.h"
#include "HAL/FileManager.h"
#include "HAL/ThreadManager.h"
#include "Misc/OutputDeviceError.h"
#include "Misc/OutputDeviceRedirector.h"
#include "Misc/StringBuilder.h"
#include "Misc/FeedbackContext.h"
#include "Misc/CoreDelegates.h"
#include "Internationalization/Internationalization.h"
#include "Internationalization/Culture.h"
#include "Modules/ModuleManager.h"
#include "GenericPlatform/GenericPlatformChunkInstall.h"
#include "BuildSettings.h"
#include "PLCrashReporter.h"
#include "Apple/PreAppleSystemHeaders.h"
#include <dlfcn.h>
#include <AppKit/AppKit.h>
#include <IOKit/IOKitLib.h>
#include <IOKit/kext/KextManager.h>
#include <IOKit/network/IOEthernetInterface.h>
#include <IOKit/network/IONetworkInterface.h>
#include <IOKit/network/IOEthernetController.h>
#include <IOKit/ps/IOPowerSources.h>
#include <IOKit/ps/IOPSKeys.h>
#include <IOKit/pwr_mgt/IOPMLib.h>
#include <SystemConfiguration/SystemConfiguration.h>
#include <mach-o/dyld.h>
#include <libproc.h>
#include <notify.h>
#include <uuid/uuid.h>
#include <spawn.h>
#include "Apple/PostAppleSystemHeaders.h"

Classes

struct  FMacApplicationInfo
 
class  FMacPlatformGPUManager
 

Macros

#define MAC_GRAPHICS_SETTINGS   TEXT("/Script/MacTargetPlatform.MacTargetSettings")
 
#define MAC_GRAPHICS_INI   GEngineIni
 
#define kIOMainPortDefault   kIOMasterPortDefault
 
#define PLATFORM_MAC_IOSERVICE_MATCHING_NAME_ARM64   "AppleARMIODevice"
 
#define PLATFORM_MAC_IOSERVICE_MATCHING_NAME_X86   "IOPCIDevice"
 
#define PLATFORM_MAC_CLASS_CODE_NAME_ARM64   "device_type"
 
#define PLATFORM_MAC_CLASS_CODE_NAME_X86   "class-code"
 
#define PLATFORM_MAC_MAKE_FOURCC(ch0, ch1, ch2, ch3)
 

Typedefs

typedef NSArray *(* MTLCopyAllDevices) (void)
 

Functions

void ReportAssert (const TCHAR *ErrorMessage, void *ErrorProgramCounter)
 
void ReportGPUCrash (const TCHAR *ErrorMessage, void *ErrorProgramCounter)
 
void ReportEnsure (const TCHAR *ErrorMessage, void *ErrorProgramCounter)
 
void ReportHang (const TCHAR *ErrorMessage, const uint64 *StackFrames, int32 NumStackFrames, uint32 HungThreadId)
 
 DECLARE_STATS_GROUP (TEXT("Driver Monitor"), STATGROUP_DriverMonitor, STATCAT_Advanced)
 
 DECLARE_STATS_GROUP (TEXT("Driver Monitor (AMD specific)"), STATGROUP_DriverMonitorAMD, STATCAT_Advanced)
 
 DECLARE_STATS_GROUP (TEXT("Driver Monitor (Intel specific)"), STATGROUP_DriverMonitorIntel, STATCAT_Advanced)
 
 DECLARE_STATS_GROUP (TEXT("Driver Monitor (Nvidia specific)"), STATGROUP_DriverMonitorNvidia, STATCAT_Advanced)
 
 DECLARE_FLOAT_COUNTER_STAT (TEXT("Device Utilization %"), STAT_DriverMonitorDeviceUtilisation, STATGROUP_DriverMonitor)
 
 DECLARE_FLOAT_COUNTER_STAT (TEXT("Device Utilization % at cur p-state"), STAT_DM_I_DeviceUtilisationAtPState, STATGROUP_DriverMonitorIntel)
 
 DECLARE_FLOAT_COUNTER_STAT (TEXT("Device Unit 0 Utilization %"), STAT_DM_I_Device0Utilisation, STATGROUP_DriverMonitorIntel)
 
 DECLARE_FLOAT_COUNTER_STAT (TEXT("Device Unit 1 Utilization %"), STAT_DM_I_Device1Utilisation, STATGROUP_DriverMonitorIntel)
 
 DECLARE_FLOAT_COUNTER_STAT (TEXT("Device Unit 2 Utilization %"), STAT_DM_I_Device2Utilisation, STATGROUP_DriverMonitorIntel)
 
 DECLARE_FLOAT_COUNTER_STAT (TEXT("Device Unit 3 Utilization %"), STAT_DM_I_Device3Utilisation, STATGROUP_DriverMonitorIntel)
 
 DECLARE_MEMORY_STAT (TEXT("VRAM Used Bytes"), STAT_DriverMonitorVRAMUsedBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("VRAM Free Bytes"), STAT_DriverMonitorVRAMFreeBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("VRAM Largest Free Bytes"), STAT_DriverMonitorVRAMLargestFreeBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("In Use Vid Mem Bytes"), STAT_DriverMonitorInUseVidMemBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("In Use Sys Mem Bytes"), STAT_DriverMonitorInUseSysMemBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("DMA Used Bytes"), STAT_DriverMonitorgartUsedBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("DMA Free Bytes"), STAT_DriverMonitorgartFreeBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("DMA Bytes"), STAT_DriverMonitorgartSizeBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("DMA Data Mapped"), STAT_DriverMonitorgartMapInBytesPerSample, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("DMA Data Unmapped"), STAT_DriverMonitorgartMapOutBytesPerSample, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("Texture Page-off Bytes"), STAT_DriverMonitortexturePageOutBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("Texture Read-off Bytes"), STAT_DriverMonitortextureReadOutBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("Texture Volunteer Unload Bytes"), STAT_DriverMonitortextureVolunteerUnloadBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("AGP Texture Creation Bytes"), STAT_DriverMonitoragpTextureCreationBytes, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("AGP Texture Creation Count"), STAT_DriverMonitoragpTextureCreationCount, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("AGP Ref Texture Creation Bytes"), STAT_DriverMonitoragprefTextureCreationBytes, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("AGP Ref Texture Creation Count"), STAT_DriverMonitoragprefTextureCreationCount, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("IOSurface Page-In Bytes"), STAT_DriverMonitorioSurfacePageInBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("IOSurface Page-Out Bytes"), STAT_DriverMonitorioSurfacePageOutBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("IOSurface Read-Out Bytes"), STAT_DriverMonitorioSurfaceReadOutBytes, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("IOSurface Texture Creation Count"), STAT_DriverMonitoriosurfaceTextureCreationCount, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("IOSurface Texture Creation Bytes"), STAT_DriverMonitoriosurfaceTextureCreationBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("OOL Texture Page-In Bytes"), STAT_DriverMonitoroolTexturePageInBytes, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("OOL Texture Creation Count"), STAT_DriverMonitoroolTextureCreationCount, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("OOL Texture Creation Bytes"), STAT_DriverMonitoroolTextureCreationBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("orphanedNonReusableSysMemoryBytes"), STAT_DriverMonitororphanedNonReusableSysMemoryBytes, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("orphanedNonReusableSysMemoryCount"), STAT_DriverMonitororphanedNonReusableSysMemoryCount, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("orphanedReusableSysMemoryBytes"), STAT_DriverMonitororphanedReusableSysMemoryBytes, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("orphanedReusableSysMemoryCount"), STAT_DriverMonitororphanedReusableSysMemoryCount, STATGROUP_DriverMonitor)
 
 DECLARE_FLOAT_COUNTER_STAT (TEXT("orphanedReusableSysMemoryHitRate"), STAT_DriverMonitororphanedReusableSysMemoryHitRate, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("orphanedNonReusableVidMemoryBytes"), STAT_DriverMonitororphanedNonReusableVidMemoryBytes, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("orphanedNonReusableVidMemoryCount"), STAT_DriverMonitororphanedNonReusableVidMemoryCount, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("orphanedReusableVidMemoryBytes"), STAT_DriverMonitororphanedReusableVidMemoryBytes, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("orphanedReusableVidMemoryCount"), STAT_DriverMonitororphanedReusableVidMemoryCount, STATGROUP_DriverMonitor)
 
 DECLARE_FLOAT_COUNTER_STAT (TEXT("orphanedReusableVidMemoryHitRate"), STAT_DriverMonitororphanedReusableVidMemoryHitRate, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("stdTextureCreationBytes"), STAT_DriverMonitorstdTextureCreationBytes, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("stdTextureCreationCount"), STAT_DriverMonitorstdTextureCreationCount, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("stdTexturePageInBytes"), STAT_DriverMonitorstdTexturePageInBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("surfaceBufferPageInBytes"), STAT_DriverMonitorsurfaceBufferPageInBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("surfaceBufferPageOutBytes"), STAT_DriverMonitorsurfaceBufferPageOutBytes, STATGROUP_DriverMonitor)
 
 DECLARE_MEMORY_STAT (TEXT("surfaceBufferReadOutBytes"), STAT_DriverMonitorsurfaceBufferReadOutBytes, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("surfaceTextureCreationCount"), STAT_DriverMonitorsurfaceTextureCreationCount, STATGROUP_DriverMonitor)
 
 DECLARE_CYCLE_STAT (TEXT("CPU Wait For GPU"), STAT_DriverMonitorCPUWaitForGPU, STATGROUP_DriverMonitor)
 
 DECLARE_CYCLE_STAT (TEXT("CPU Wait to Submit Commands"), STAT_DriverMonitorCPUWaitToSubmit, STATGROUP_DriverMonitor)
 
 DECLARE_CYCLE_STAT (TEXT("CPU Wait to perform Surface Read"), STAT_DriverMonitorCPUWaitToSurfaceRead, STATGROUP_DriverMonitor)
 
 DECLARE_CYCLE_STAT (TEXT("CPU Wait to perform Surface Resize"), STAT_DriverMonitorCPUWaitToSurfaceResize, STATGROUP_DriverMonitor)
 
 DECLARE_CYCLE_STAT (TEXT("CPU Wait to perform Surface Write"), STAT_DriverMonitorCPUWaitToSurfaceWrite, STATGROUP_DriverMonitor)
 
 DECLARE_CYCLE_STAT (TEXT("CPU Wait to perform VRAM Surface page-off"), STAT_DriverMonitorCPUWaitToSurfacePageOff, STATGROUP_DriverMonitor)
 
 DECLARE_CYCLE_STAT (TEXT("CPU Wait to perform VRAM Surface page-on"), STAT_DriverMonitorCPUWaitToSurfacePageOn, STATGROUP_DriverMonitor)
 
 DECLARE_CYCLE_STAT (TEXT("CPU Wait to reclaim Surface GART Backing Store"), STAT_DriverMonitorCPUWaitToReclaimSurfaceGART, STATGROUP_DriverMonitor)
 
 DECLARE_CYCLE_STAT (TEXT("CPU Wait to perform VRAM Eviction"), STAT_DriverMonitorCPUWaitToVRAMEvict, STATGROUP_DriverMonitor)
 
 DECLARE_CYCLE_STAT (TEXT("CPU Wait to free Data Buffer"), STAT_DriverMonitorCPUWaitToFreeDataBuffer, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("surfaceCount"), STAT_DriverMonitorSurfaceCount, STATGROUP_DriverMonitor)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("textureCount"), STAT_DriverMonitorTextureCount, STATGROUP_DriverMonitor)
 
 DECLARE_FLOAT_COUNTER_STAT (TEXT("GPU Core Utilization"), STAT_DM_NV_GPUCoreUtilization, STATGROUP_DriverMonitorNvidia)
 
 DECLARE_FLOAT_COUNTER_STAT (TEXT("GPU Memory Utilization"), STAT_DM_NV_GPUMemoryUtilization, STATGROUP_DriverMonitorNvidia)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel C0 | Commands Completed"), STAT_DM_AMD_HWChannelC0Complete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel C0 | Commands Submitted"), STAT_DM_AMD_HWChannelC0Submit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel C1 | Commands Completed"), STAT_DM_AMD_HWChannelC1Complete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel C1 | Commands Submitted"), STAT_DM_AMD_HWChannelC1Submit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel DMA0 | Commands Completed"), STAT_DM_AMD_HWChannelDMA0Complete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel DMA0 | Commands Submitted"), STAT_DM_AMD_HWChannelDMA0Submit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel DMA1 | Commands Completed"), STAT_DM_AMD_HWChannelDMA1Complete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel DMA1 | Commands Submitted"), STAT_DM_AMD_HWChannelDMA1Submit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel GFX | Commands Completed"), STAT_DM_AMD_HWChannelGFXComplete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel GFX | Commands Submitted"), STAT_DM_AMD_HWChannelGFXSubmit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel SPU | Commands Completed"), STAT_DM_AMD_HWChannelSPUComplete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel SPU | Commands Submitted"), STAT_DM_AMD_HWChannelSPUSubmit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel UVD | Commands Completed"), STAT_DM_AMD_HWChannelUVDComplete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel UVD | Commands Submitted"), STAT_DM_AMD_HWChannelUVDSubmit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel VCE | Commands Completed"), STAT_DM_AMD_HWChannelVCEComplete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel VCE | Commands Submitted"), STAT_DM_AMD_HWChannelVCESubmit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel VCELLQ | Commands Completed"), STAT_DM_AMD_HWChannelVCELLQComplete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel VCELLQ | Commands Submitted"), STAT_DM_AMD_HWChannelVCELLQSubmit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel KIQ | Commands Completed"), STAT_DM_AMD_HWChannelKIQComplete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel KIQ | Commands Submitted"), STAT_DM_AMD_HWChannelKIQSubmit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel SAMU GPCOM | Commands Completed"), STAT_DM_AMD_HWChannelSAMUGPUCOMComplete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel SAMU GPCOM | Commands Submitted"), STAT_DM_AMD_HWChannelSAMUGPUCOMSubmit, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel SAMU RBI | Commands Completed"), STAT_DM_AMD_HWChannelSAMURBIComplete, STATGROUP_DriverMonitorAMD)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("HWChannel SAMU RBI | Commands Submitted"), STAT_DM_AMD_HWChannelSAMURBISubmit, STATGROUP_DriverMonitorAMD)
 
template<typename T >
GetMacGPUStat (TMap< FString, float > const &Stats, FString StatName)
 

Variables

CORE_API bool GIsGPUCrashed
 
CORE_API FMacMallocCrashHandlerGCrashMalloc = nullptr
 
CORE_API TFunction< EAppReturnType::Type(EAppMsgType::Type MsgType, const TCHAR *Text, const TCHAR *Caption)> MessageBoxExtCallback
 
void(* GCrashHandlerPointer )(const FGenericCrashContext &Context) = NULL
 
thread_local const TCHARGCrashErrorMessage = nullptr
 
thread_local voidGCrashErrorProgramCounter = nullptr
 
thread_local ECrashContextType GCrashErrorType = ECrashContextType::Crash
 
thread_local uint8GCrashContextMemory [sizeof(FMacCrashContext)]
 

Macro Definition Documentation

◆ kIOMainPortDefault

#define kIOMainPortDefault   kIOMasterPortDefault

◆ MAC_GRAPHICS_INI

#define MAC_GRAPHICS_INI   GEngineIni

◆ MAC_GRAPHICS_SETTINGS

#define MAC_GRAPHICS_SETTINGS   TEXT("/Script/MacTargetPlatform.MacTargetSettings")

◆ PLATFORM_MAC_CLASS_CODE_NAME_ARM64

#define PLATFORM_MAC_CLASS_CODE_NAME_ARM64   "device_type"

◆ PLATFORM_MAC_CLASS_CODE_NAME_X86

#define PLATFORM_MAC_CLASS_CODE_NAME_X86   "class-code"

◆ PLATFORM_MAC_IOSERVICE_MATCHING_NAME_ARM64

#define PLATFORM_MAC_IOSERVICE_MATCHING_NAME_ARM64   "AppleARMIODevice"

◆ PLATFORM_MAC_IOSERVICE_MATCHING_NAME_X86

#define PLATFORM_MAC_IOSERVICE_MATCHING_NAME_X86   "IOPCIDevice"

◆ PLATFORM_MAC_MAKE_FOURCC

#define PLATFORM_MAC_MAKE_FOURCC (   ch0,
  ch1,
  ch2,
  ch3 
)
Value:
((uint32_t)(uint8_t)(ch0) | ((uint32_t)(uint8_t)(ch1) << 8 ) | \
((uint32_t)(uint8_t)(ch2) << 16) | ((uint32_t)(uint8_t)(ch3) << 24 ))
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127

Typedef Documentation

◆ MTLCopyAllDevices

typedef NSArray *(* MTLCopyAllDevices) (void)

Function Documentation

◆ DECLARE_CYCLE_STAT() [1/10]

DECLARE_CYCLE_STAT ( TEXT("CPU Wait For GPU" ,
STAT_DriverMonitorCPUWaitForGPU  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_CYCLE_STAT() [2/10]

DECLARE_CYCLE_STAT ( TEXT("CPU Wait to free Data Buffer" ,
STAT_DriverMonitorCPUWaitToFreeDataBuffer  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_CYCLE_STAT() [3/10]

DECLARE_CYCLE_STAT ( TEXT("CPU Wait to perform Surface Read" ,
STAT_DriverMonitorCPUWaitToSurfaceRead  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_CYCLE_STAT() [4/10]

DECLARE_CYCLE_STAT ( TEXT("CPU Wait to perform Surface Resize" ,
STAT_DriverMonitorCPUWaitToSurfaceResize  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_CYCLE_STAT() [5/10]

DECLARE_CYCLE_STAT ( TEXT("CPU Wait to perform Surface Write" ,
STAT_DriverMonitorCPUWaitToSurfaceWrite  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_CYCLE_STAT() [6/10]

DECLARE_CYCLE_STAT ( TEXT("CPU Wait to perform VRAM Eviction" ,
STAT_DriverMonitorCPUWaitToVRAMEvict  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_CYCLE_STAT() [7/10]

DECLARE_CYCLE_STAT ( TEXT("CPU Wait to perform VRAM Surface page-off" ,
STAT_DriverMonitorCPUWaitToSurfacePageOff  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_CYCLE_STAT() [8/10]

DECLARE_CYCLE_STAT ( TEXT("CPU Wait to perform VRAM Surface page-on" ,
STAT_DriverMonitorCPUWaitToSurfacePageOn  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_CYCLE_STAT() [9/10]

◆ DECLARE_CYCLE_STAT() [10/10]

DECLARE_CYCLE_STAT ( TEXT("CPU Wait to Submit Commands" ,
STAT_DriverMonitorCPUWaitToSubmit  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_DWORD_COUNTER_STAT() [1/36]

◆ DECLARE_DWORD_COUNTER_STAT() [2/36]

◆ DECLARE_DWORD_COUNTER_STAT() [3/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel C0 | Commands Completed" ,
STAT_DM_AMD_HWChannelC0Complete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [4/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel C0 | Commands Submitted" ,
STAT_DM_AMD_HWChannelC0Submit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [5/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel C1 | Commands Completed" ,
STAT_DM_AMD_HWChannelC1Complete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [6/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel C1 | Commands Submitted" ,
STAT_DM_AMD_HWChannelC1Submit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [7/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel DMA0 | Commands Completed" ,
STAT_DM_AMD_HWChannelDMA0Complete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [8/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel DMA0 | Commands Submitted" ,
STAT_DM_AMD_HWChannelDMA0Submit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [9/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel DMA1 | Commands Completed" ,
STAT_DM_AMD_HWChannelDMA1Complete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [10/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel DMA1 | Commands Submitted" ,
STAT_DM_AMD_HWChannelDMA1Submit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [11/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel GFX | Commands Completed" ,
STAT_DM_AMD_HWChannelGFXComplete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [12/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel GFX | Commands Submitted" ,
STAT_DM_AMD_HWChannelGFXSubmit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [13/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel KIQ | Commands Completed" ,
STAT_DM_AMD_HWChannelKIQComplete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [14/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel KIQ | Commands Submitted" ,
STAT_DM_AMD_HWChannelKIQSubmit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [15/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel SAMU GPCOM | Commands Completed" ,
STAT_DM_AMD_HWChannelSAMUGPUCOMComplete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [16/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel SAMU GPCOM | Commands Submitted" ,
STAT_DM_AMD_HWChannelSAMUGPUCOMSubmit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [17/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel SAMU RBI | Commands Completed" ,
STAT_DM_AMD_HWChannelSAMURBIComplete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [18/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel SAMU RBI | Commands Submitted" ,
STAT_DM_AMD_HWChannelSAMURBISubmit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [19/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel SPU | Commands Completed" ,
STAT_DM_AMD_HWChannelSPUComplete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [20/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel SPU | Commands Submitted" ,
STAT_DM_AMD_HWChannelSPUSubmit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [21/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel UVD | Commands Completed" ,
STAT_DM_AMD_HWChannelUVDComplete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [22/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel UVD | Commands Submitted" ,
STAT_DM_AMD_HWChannelUVDSubmit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [23/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel VCE | Commands Completed" ,
STAT_DM_AMD_HWChannelVCEComplete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [24/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel VCE | Commands Submitted" ,
STAT_DM_AMD_HWChannelVCESubmit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [25/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel VCELLQ | Commands Completed" ,
STAT_DM_AMD_HWChannelVCELLQComplete  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [26/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("HWChannel VCELLQ | Commands Submitted" ,
STAT_DM_AMD_HWChannelVCELLQSubmit  ,
STATGROUP_DriverMonitorAMD   
)

◆ DECLARE_DWORD_COUNTER_STAT() [27/36]

◆ DECLARE_DWORD_COUNTER_STAT() [28/36]

◆ DECLARE_DWORD_COUNTER_STAT() [29/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("orphanedNonReusableSysMemoryCount")  ,
STAT_DriverMonitororphanedNonReusableSysMemoryCount  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_DWORD_COUNTER_STAT() [30/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("orphanedNonReusableVidMemoryCount")  ,
STAT_DriverMonitororphanedNonReusableVidMemoryCount  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_DWORD_COUNTER_STAT() [31/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("orphanedReusableSysMemoryCount")  ,
STAT_DriverMonitororphanedReusableSysMemoryCount  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_DWORD_COUNTER_STAT() [32/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("orphanedReusableVidMemoryCount")  ,
STAT_DriverMonitororphanedReusableVidMemoryCount  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_DWORD_COUNTER_STAT() [33/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("stdTextureCreationCount")  ,
STAT_DriverMonitorstdTextureCreationCount  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_DWORD_COUNTER_STAT() [34/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("surfaceCount")  ,
STAT_DriverMonitorSurfaceCount  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_DWORD_COUNTER_STAT() [35/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("surfaceTextureCreationCount")  ,
STAT_DriverMonitorsurfaceTextureCreationCount  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_DWORD_COUNTER_STAT() [36/36]

DECLARE_DWORD_COUNTER_STAT ( TEXT("textureCount")  ,
STAT_DriverMonitorTextureCount  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_FLOAT_COUNTER_STAT() [1/10]

DECLARE_FLOAT_COUNTER_STAT ( TEXT("Device Unit 0 Utilization %")  ,
STAT_DM_I_Device0Utilisation  ,
STATGROUP_DriverMonitorIntel   
)

◆ DECLARE_FLOAT_COUNTER_STAT() [2/10]

DECLARE_FLOAT_COUNTER_STAT ( TEXT("Device Unit 1 Utilization %")  ,
STAT_DM_I_Device1Utilisation  ,
STATGROUP_DriverMonitorIntel   
)

◆ DECLARE_FLOAT_COUNTER_STAT() [3/10]

DECLARE_FLOAT_COUNTER_STAT ( TEXT("Device Unit 2 Utilization %")  ,
STAT_DM_I_Device2Utilisation  ,
STATGROUP_DriverMonitorIntel   
)

◆ DECLARE_FLOAT_COUNTER_STAT() [4/10]

DECLARE_FLOAT_COUNTER_STAT ( TEXT("Device Unit 3 Utilization %")  ,
STAT_DM_I_Device3Utilisation  ,
STATGROUP_DriverMonitorIntel   
)

◆ DECLARE_FLOAT_COUNTER_STAT() [5/10]

DECLARE_FLOAT_COUNTER_STAT ( TEXT("Device Utilization % at cur p-state" ,
STAT_DM_I_DeviceUtilisationAtPState  ,
STATGROUP_DriverMonitorIntel   
)

◆ DECLARE_FLOAT_COUNTER_STAT() [6/10]

DECLARE_FLOAT_COUNTER_STAT ( TEXT("Device Utilization %")  ,
STAT_DriverMonitorDeviceUtilisation  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_FLOAT_COUNTER_STAT() [7/10]

DECLARE_FLOAT_COUNTER_STAT ( TEXT("GPU Core Utilization" ,
STAT_DM_NV_GPUCoreUtilization  ,
STATGROUP_DriverMonitorNvidia   
)

◆ DECLARE_FLOAT_COUNTER_STAT() [8/10]

DECLARE_FLOAT_COUNTER_STAT ( TEXT("GPU Memory Utilization" ,
STAT_DM_NV_GPUMemoryUtilization  ,
STATGROUP_DriverMonitorNvidia   
)

◆ DECLARE_FLOAT_COUNTER_STAT() [9/10]

DECLARE_FLOAT_COUNTER_STAT ( TEXT("orphanedReusableSysMemoryHitRate")  ,
STAT_DriverMonitororphanedReusableSysMemoryHitRate  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_FLOAT_COUNTER_STAT() [10/10]

DECLARE_FLOAT_COUNTER_STAT ( TEXT("orphanedReusableVidMemoryHitRate")  ,
STAT_DriverMonitororphanedReusableVidMemoryHitRate  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [1/30]

◆ DECLARE_MEMORY_STAT() [2/30]

◆ DECLARE_MEMORY_STAT() [3/30]

DECLARE_MEMORY_STAT ( TEXT("DMA Bytes" ,
STAT_DriverMonitorgartSizeBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [4/30]

DECLARE_MEMORY_STAT ( TEXT("DMA Data Mapped" ,
STAT_DriverMonitorgartMapInBytesPerSample  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [5/30]

DECLARE_MEMORY_STAT ( TEXT("DMA Data Unmapped" ,
STAT_DriverMonitorgartMapOutBytesPerSample  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [6/30]

DECLARE_MEMORY_STAT ( TEXT("DMA Free Bytes" ,
STAT_DriverMonitorgartFreeBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [7/30]

DECLARE_MEMORY_STAT ( TEXT("DMA Used Bytes" ,
STAT_DriverMonitorgartUsedBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [8/30]

DECLARE_MEMORY_STAT ( TEXT("In Use Sys Mem Bytes" ,
STAT_DriverMonitorInUseSysMemBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [9/30]

DECLARE_MEMORY_STAT ( TEXT("In Use Vid Mem Bytes" ,
STAT_DriverMonitorInUseVidMemBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [10/30]

DECLARE_MEMORY_STAT ( TEXT("IOSurface Page-In Bytes" ,
STAT_DriverMonitorioSurfacePageInBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [11/30]

DECLARE_MEMORY_STAT ( TEXT("IOSurface Page-Out Bytes" ,
STAT_DriverMonitorioSurfacePageOutBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [12/30]

DECLARE_MEMORY_STAT ( TEXT("IOSurface Read-Out Bytes" ,
STAT_DriverMonitorioSurfaceReadOutBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [13/30]

◆ DECLARE_MEMORY_STAT() [14/30]

◆ DECLARE_MEMORY_STAT() [15/30]

◆ DECLARE_MEMORY_STAT() [16/30]

DECLARE_MEMORY_STAT ( TEXT("orphanedNonReusableSysMemoryBytes")  ,
STAT_DriverMonitororphanedNonReusableSysMemoryBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [17/30]

DECLARE_MEMORY_STAT ( TEXT("orphanedNonReusableVidMemoryBytes")  ,
STAT_DriverMonitororphanedNonReusableVidMemoryBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [18/30]

DECLARE_MEMORY_STAT ( TEXT("orphanedReusableSysMemoryBytes")  ,
STAT_DriverMonitororphanedReusableSysMemoryBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [19/30]

DECLARE_MEMORY_STAT ( TEXT("orphanedReusableVidMemoryBytes")  ,
STAT_DriverMonitororphanedReusableVidMemoryBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [20/30]

DECLARE_MEMORY_STAT ( TEXT("stdTextureCreationBytes")  ,
STAT_DriverMonitorstdTextureCreationBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [21/30]

DECLARE_MEMORY_STAT ( TEXT("stdTexturePageInBytes")  ,
STAT_DriverMonitorstdTexturePageInBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [22/30]

DECLARE_MEMORY_STAT ( TEXT("surfaceBufferPageInBytes")  ,
STAT_DriverMonitorsurfaceBufferPageInBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [23/30]

DECLARE_MEMORY_STAT ( TEXT("surfaceBufferPageOutBytes")  ,
STAT_DriverMonitorsurfaceBufferPageOutBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [24/30]

DECLARE_MEMORY_STAT ( TEXT("surfaceBufferReadOutBytes")  ,
STAT_DriverMonitorsurfaceBufferReadOutBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [25/30]

DECLARE_MEMORY_STAT ( TEXT("Texture Page-off Bytes" ,
STAT_DriverMonitortexturePageOutBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [26/30]

DECLARE_MEMORY_STAT ( TEXT("Texture Read-off Bytes" ,
STAT_DriverMonitortextureReadOutBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [27/30]

◆ DECLARE_MEMORY_STAT() [28/30]

DECLARE_MEMORY_STAT ( TEXT("VRAM Free Bytes" ,
STAT_DriverMonitorVRAMFreeBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_MEMORY_STAT() [29/30]

◆ DECLARE_MEMORY_STAT() [30/30]

DECLARE_MEMORY_STAT ( TEXT("VRAM Used Bytes" ,
STAT_DriverMonitorVRAMUsedBytes  ,
STATGROUP_DriverMonitor   
)

◆ DECLARE_STATS_GROUP() [1/4]

DECLARE_STATS_GROUP ( TEXT("Driver Monitor (AMD specific)")  ,
STATGROUP_DriverMonitorAMD  ,
STATCAT_Advanced   
)

◆ DECLARE_STATS_GROUP() [2/4]

DECLARE_STATS_GROUP ( TEXT("Driver Monitor (Intel specific)")  ,
STATGROUP_DriverMonitorIntel  ,
STATCAT_Advanced   
)

◆ DECLARE_STATS_GROUP() [3/4]

DECLARE_STATS_GROUP ( TEXT("Driver Monitor (Nvidia specific)")  ,
STATGROUP_DriverMonitorNvidia  ,
STATCAT_Advanced   
)

◆ DECLARE_STATS_GROUP() [4/4]

DECLARE_STATS_GROUP ( TEXT("Driver Monitor" ,
STATGROUP_DriverMonitor  ,
STATCAT_Advanced   
)

◆ GetMacGPUStat()

template<typename T >
T GetMacGPUStat ( TMap< FString, float > const &  Stats,
FString  StatName 
)

◆ ReportAssert()

void ReportAssert ( const TCHAR ErrorMessage,
void ErrorProgramCounter 
)

◆ ReportEnsure()

void ReportEnsure ( const TCHAR ErrorMessage,
void ErrorProgramCounter 
)

◆ ReportGPUCrash()

void ReportGPUCrash ( const TCHAR ErrorMessage,
void ErrorProgramCounter 
)

◆ ReportHang()

void ReportHang ( const TCHAR ErrorMessage,
const uint64 StackFrames,
int32  NumStackFrames,
uint32  HungThreadId 
)

Variable Documentation

◆ GCrashContextMemory

thread_local uint8* GCrashContextMemory[sizeof(FMacCrashContext)]

◆ GCrashErrorMessage

thread_local const TCHAR* GCrashErrorMessage = nullptr

Message for the assert triggered on this thread

◆ GCrashErrorProgramCounter

thread_local void* GCrashErrorProgramCounter = nullptr

◆ GCrashErrorType

◆ GCrashHandlerPointer

void(* GCrashHandlerPointer) (const FGenericCrashContext &Context) ( const FGenericCrashContext Context) = NULL

Global pointer to crash handler

◆ GCrashMalloc

CORE_API FMacMallocCrashHandler* GCrashMalloc = nullptr

◆ GIsGPUCrashed

CORE_API bool GIsGPUCrashed
extern

◆ MessageBoxExtCallback