using System.Runtime.InteropServices;
using NvAPIWrapper.Native.Attributes;
using NvAPIWrapper.Native.General.Structures;
using NvAPIWrapper.Native.Interfaces;
namespace NvAPIWrapper.Native.GPU.Structures
{
///
/// Contains information regarding GPU clock boost masks
///
[StructLayout(LayoutKind.Sequential, Pack = 8)]
[StructureVersion(1)]
public struct PrivateClockBoostMasksV1 : IInitializable
{
internal const int MaxMasks = 4;
internal const int MaxUnknown1 = 8;
internal const int MaxClockBoostMasks = 103;
internal const int MaxUnknown2 = 916;
internal StructureVersion _Version;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = MaxMasks)]
internal readonly uint[] _Masks;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = MaxUnknown1)]
internal readonly uint[] _Unknown1;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = MaxClockBoostMasks)]
internal readonly ClockBoostMask[] _ClocksBoostMasks;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = MaxUnknown2)]
internal readonly uint[] _Unknown2;
///
/// Gets a list of clock boost masks
///
public ClockBoostMask[] ClockBoostMasks
{
get => _ClocksBoostMasks;
}
///
/// Contains information regarding a clock boost mask
///
[StructLayout(LayoutKind.Sequential, Pack = 8)]
public struct ClockBoostMask
{
internal readonly uint _Unknown;
internal readonly uint _Unknown2;
internal readonly uint _Unknown3;
internal readonly uint _Unknown4;
internal readonly int _MemoryDelta;
internal readonly int _GPUDelta;
///
/// Memory clock frequency delta
///
public int MemoryDelta
{
get => _MemoryDelta;
}
///
/// GPU clock frequency delta
///
public int GPUDelta
{
get => _GPUDelta;
}
}
}
}