UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MacPlatformMisc.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================================
4 MacPlatformMisc.h: Mac platform misc functions
5==============================================================================================*/
6
7#pragma once
11
16{
17 static void PlatformPreInit();
18 static void PlatformInit();
19 static void PlatformTearDown();
20
22 {
23 return MAC_MAX_PATH;
24 }
25
26 static const TCHAR* GetPathVarDelimiter()
27 {
28 return TEXT(":");
29 }
30
32
33 static void RequestExit(bool Force, const TCHAR* CallSite = nullptr);
35 static bool CommandLineCommands();
36 static int32 NumberOfCores();
38 static void NormalizePath(FString& InPath);
40 static FString GetPrimaryGPUBrand();
41 static struct FGPUDriverInfo GetGPUDriverInfo(const FString& DeviceDescription, bool bVerbose = true);
42 static void GetOSVersions( FString& out_OSVersionLabel, FString& out_OSSubVersionLabel );
43 static FString GetOSVersion();
44 static NSOperatingSystemVersion GetNSOperatingSystemVersion();
45 static bool HasPlatformFeature(const TCHAR* FeatureName);
48 static FString GetBonjourName();
49
56
62 static FString GetCPUVendor();
63
69 static FString GetCPUBrand();
70
85 static uint32 GetCPUInfo();
86
87 static bool HasNonoptionalCPUFeatures() { return true; }
89
91
92 static void SetCrashHandler(void (* CrashHandler)(const FGenericCrashContext& Context));
93
96
100 static bool IsRunningOnBattery();
101
103
107 static int32 VersionCompare(const NSOperatingSystemVersion& VersionA, const NSOperatingSystemVersion& VersionB);
108
112 static int32 MacOSXVersionCompare(uint8 Major, uint8 Minor, uint8 Revision);
113
117 static FString GetOperatingSystemId();
118
119 static FString GetXcodePath();
120
124 static int32 XCodeVersionCompare(uint8 Major, uint8 Minor, uint8 Revision);
125
126 static bool IsSupportedXcodeVersionInstalled();
127
128#if WITH_EDITOR
130#endif // WITH_EDITOR
131
133
135 template<typename T>
137 {
138 public:
139 virtual ~FGPUDescriptorCommon();
140
142
143 TMap<FString, float> GetPerformanceStatistics() const;
144
145 protected:
149
150 void CopyFrom(FGPUDescriptorCommon const& Other);
151
152 public:
153 NSString* GPUName = nil;
154 NSString* GPUMetalBundle = nil;
155 NSString* GPUOpenGLBundle = nil;
156 NSString* GPUBundleID = nil;
157 uint32 GPUVendorId = 0;
158 uint32 GPUDeviceId = 0;
159 uint32 GPUMemoryMB = 0;
160 uint32 GPUIndex = 0;
161
162 bool GPUHeadless = false;
163 };
164
165#if PLATFORM_MAC_X86
167 typedef class FGPUDescriptorX86_64 : public FGPUDescriptorCommon<FGPUDescriptorX86_64>
168 {
170
171 public:
172 FGPUDescriptorX86_64() = default;
174
175 virtual ~FGPUDescriptorX86_64();
176
177 protected:
180
181 public:
183 uint32 PCIDevice; // This is really an io_registry_entry_t which is a mach port name
184
186
187#elif PLATFORM_MAC_ARM64
188 typedef class FGPUDescriptorARM64 : public FGPUDescriptorCommon<FGPUDescriptorARM64>
189 {
190 friend class FGPUDescriptorCommon<FGPUDescriptorARM64>;
191
192 public:
193 FGPUDescriptorARM64() = default;
195
196 virtual ~FGPUDescriptorARM64();
197
198 protected:
199 void CopyFromImpl(FGPUDescriptorCommon const& Other);
201
202 public:
203 uint64 RegistryID = 0;
204
206
207#else
208 #error "Undefined Mac platform"
209#endif
210
212 {
213 Added,
214 RemovalRequested,
215 Removed
216 };
217
219 static void GPUChangeNotification(uint64_t DeviceRegistryID, EMacGPUNotification Notification);
220
222 static TArray<FGPUDescriptor> const& GetGPUDescriptors();
223
225 static int32 GetExplicitRendererIndex();
226
228 static void UpdateDriverMonitorStatistics(int32 DeviceIndex);
229
230 static int GetDefaultStackSize();
231
233 static void PostInitMacAppInfoUpdate();
234
235 static CGDisplayModeRef GetSupportedDisplayMode(CGDirectDisplayID DisplayID, uint32 Width, uint32 Height);
236
243};
244
246
#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 UE_FORCEINLINE_HINT
Definition Platform.h:723
#define PLATFORM_ENABLE_POPCNT_INTRINSIC
Definition Platform.h:244
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
@ Major
Major version increments introduce breaking API changes.
@ Minor
Minor version increments add additional functionality without breaking existing APIs.
EDisplayColorGamut
Definition GenericPlatformMisc.h:518
EDisplayOutputFormat
Definition GenericPlatformMisc.h:499
EMacModifierKeys
Definition MacPlatformMisc.h:248
@ MMK_LeftAlt
Definition MacPlatformMisc.h:253
@ MMK_RightCommand
Definition MacPlatformMisc.h:249
@ MMK_CapsLock
Definition MacPlatformMisc.h:252
@ MMK_RightControl
Definition MacPlatformMisc.h:257
@ MMK_RightAlt
Definition MacPlatformMisc.h:256
@ MMK_LeftControl
Definition MacPlatformMisc.h:254
@ MMK_LeftShift
Definition MacPlatformMisc.h:251
@ MMK_RightShift
Definition MacPlatformMisc.h:255
@ MMK_LeftCommand
Definition MacPlatformMisc.h:250
FMacPlatformMisc FPlatformMisc
Definition MacPlatformMisc.h:245
#define MAC_MAX_PATH
Definition MacPlatform.h:71
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MacPlatformMisc.h:137
FGPUDescriptorCommon(FGPUDescriptorCommon &&Other)=delete
FGPUDescriptorCommon(FGPUDescriptorCommon const &Other)=delete
Definition Text.h:385
Definition GenericPlatformChunkInstall.h:129
Definition Array.h:670
Definition UnrealString.h.inl:34
Type
Definition GenericPlatformMisc.h:306
Type
Definition GenericPlatformMisc.h:325
Definition ApplePlatformMisc.h:56
static void PlatformInit()
static int32 NumberOfCores()
Definition ApplePlatformMisc.cpp:129
Definition GenericPlatformDriver.h:156
Definition GenericPlatformCrashContext.h:395
static CORE_API FString GetOperatingSystemId()
Definition GenericPlatformMisc.cpp:1975
static bool CommandLineCommands()
Definition GenericPlatformMisc.h:1107
static CORE_API TArray< uint8 > GetMacAddress()
Definition GenericPlatformMisc.cpp:555
static bool HasPlatformFeature(const TCHAR *FeatureName)
Definition GenericPlatformMisc.h:1639
static void SetCrashHandler(void(*CrashHandler)(const FGenericCrashContext &Context))
Definition GenericPlatformMisc.h:589
static CORE_API bool IsRunningOnBattery()
Definition GenericPlatformMisc.cpp:1854
static CORE_API FString GetPrimaryGPUBrand()
Definition GenericPlatformMisc.cpp:696
static CORE_API FText GetFileManagerName()
Definition GenericPlatformMisc.cpp:1849
static CORE_API EAppReturnType::Type MessageBoxExt(EAppMsgType::Type MsgType, const TCHAR *Text, const TCHAR *Caption)
Definition GenericPlatformMisc.cpp:1105
static CORE_API FString GetCPUVendor()
Definition GenericPlatformMisc.cpp:644
static CORE_API void PlatformPreInit()
Definition GenericPlatformMisc.cpp:1970
static CORE_API int32 NumberOfCoresIncludingHyperthreads()
Definition GenericPlatformMisc.cpp:1646
static CORE_API IPlatformChunkInstall * GetPlatformChunkInstall()
Definition GenericPlatformMisc.cpp:1294
static void SetGracefulTerminationHandler()
Definition GenericPlatformMisc.h:583
static CORE_API const TCHAR * GetNullRHIShaderFormat()
Definition GenericPlatformMisc.cpp:1282
static CORE_API void RequestExit(bool Force, const TCHAR *CallSite=nullptr)
Definition GenericPlatformMisc.cpp:978
static CORE_API FString GetOSVersion()
Definition GenericPlatformMisc.cpp:732
static CORE_API bool HasSeparateChannelForDebugOutput()
Definition GenericPlatformMisc.cpp:973
static CORE_API void GetOSVersions(FString &out_OSVersionLabel, FString &out_OSSubVersionLabel)
Definition GenericPlatformMisc.cpp:724
static CORE_API bool GetDiskTotalAndFreeSpace(const FString &InPath, uint64 &TotalNumberOfBytes, uint64 &NumberOfFreeBytes)
Definition GenericPlatformMisc.cpp:737
static CORE_API uint32 GetCPUInfo()
Definition GenericPlatformMisc.cpp:673
static void PlatformTearDown()
Definition GenericPlatformMisc.h:580
static CORE_API FString GetCPUBrand()
Definition GenericPlatformMisc.cpp:650
static void NormalizePath(FString &InPath)
Definition GenericPlatformMisc.h:1136
Definition MacPlatformMisc.h:16
EMacGPUNotification
Definition MacPlatformMisc.h:212
static UE_FORCEINLINE_HINT constexpr int32 GetMaxPathLength()
Definition MacPlatformMisc.h:21
static void ChooseHDRDeviceAndColorGamut(uint32 DeviceId, uint32 DisplayNitLevel, EDisplayOutputFormat &OutputDevice, EDisplayColorGamut &ColorGamut)
Definition MacPlatformMisc.h:237
static const TCHAR * GetPathVarDelimiter()
Definition MacPlatformMisc.h:26
static bool NeedsNonoptionalCPUFeaturesCheck()
Definition MacPlatformMisc.h:88
static bool HasNonoptionalCPUFeatures()
Definition MacPlatformMisc.h:87
static void MergeDefaultArgumentsIntoCommandLine(FString &CommandLine, FString DefaultArguments)