QualitySettingsPackage/Packages/com.bywaystudios.qualitytuner/Runtime/HardwareInfo.iOS.cs
2026-04-28 17:03:25 +08:00

49 lines
1.5 KiB
C#

using System;
using System.Text.RegularExpressions;
namespace Byway.Quality
{
internal static class HardwareInfoIos
{
public static void SetIosHardwareStats(HardwareStats stats)
{
// only works with iOS, iPadOS and macOS, including editor
#if UNITY_EDITOR && !UNITY_EDITOR_OSX
if (UnityEngine.Application.isEditor)
return;
#endif
stats.GpuMajorSeries = GpuMajorSeries.Apple;
stats.GpuMinorSeries = ParseGpuMinorSeries(stats.GpuName);
stats.GpuSeriesNumber = ParseAppleGpuSeriesNumber(stats.GpuName);
}
public static GpuMinorSeries ParseGpuMinorSeries(string gpuName)
{
// parse GPU series by StartsWith
if (gpuName.StartsWith("Apple A", StringComparison.Ordinal))
{
return gpuName.Contains("Pro") ? GpuMinorSeries.AppleAPro : GpuMinorSeries.AppleA;
}
if (gpuName.StartsWith("Apple M", StringComparison.Ordinal))
{
return GpuMinorSeries.AppleM;
}
return GpuMinorSeries.Unknown;
}
public static int ParseAppleGpuSeriesNumber(string gpuName)
{
// parse Apple GPU series number by regex
// ex: Apple A8 GPU, Apple A10 GPU, Apple M1
var match = Regex.Match(gpuName, @"Apple [AM](\d+)");
if (match.Success)
if (int.TryParse(match.Groups[1].Value, out var number))
return number;
return 0;
}
}
}