using UnityEngine;
namespace Byway.Quality
{
///
/// Hardware stats to identify performance index of device
///
public class HardwareStats
{
///
/// Name of device model
///
///
public string DeviceModel { get; internal set; }
///
/// Memory size of GPU in MegaBytes
/// Return zero on editor
///
public int GpuMemorySizeMb { get; internal set; }
///
/// Name of GPU
///
///
public string GpuName { get; internal set; }
///
/// Major series of GPU
///
public GpuMajorSeries GpuMajorSeries { get; internal set; }
///
/// Major series of GPU
///
public GpuMinorSeries GpuMinorSeries { get; internal set; }
///
/// Series number of GPU.
/// ex: Adreno 650 -> 650
///
public int GpuSeriesNumber { get; internal set; }
///
/// Name of SoC
/// Only available on Android12 or later
///
public string SocName { get; internal set; }
///
/// Memory size of system in MegaBytes
/// Return zero on editor
///
public int SystemMemorySizeMb { get; internal set; }
internal static HardwareStats CreateDefault()
{
return new HardwareStats
{
DeviceModel = SystemInfo.deviceModel,
GpuName = SystemInfo.graphicsDeviceName,
GpuMemorySizeMb = SystemInfo.graphicsMemorySize,
GpuMajorSeries = GpuMajorSeries.Unknown,
GpuMinorSeries = GpuMinorSeries.Unknown,
GpuSeriesNumber = 0,
SocName = "",
SystemMemorySizeMb = SystemInfo.systemMemorySize
};
}
}
public static class HardwareInfo
{
// singleton cache
private static HardwareStats _cachedHardwareStats;
///
/// Get hardware stats of running device
///
/// HardwareStats
public static HardwareStats GetHardwareStats()
{
if (_cachedHardwareStats != null)
return _cachedHardwareStats;
_cachedHardwareStats = HardwareStats.CreateDefault();
#if UNITY_EDITOR_OSX || UNITY_IOS
HardwareInfoIos.SetIosHardwareStats(_cachedHardwareStats);
#elif UNITY_ANDROID
HardwareInfoAndroid.SetAndroidHardwareStats(_cachedHardwareStats);
#endif
return _cachedHardwareStats;
}
}
}