using NvAPIWrapper.Native.GPU;
using NvAPIWrapper.Native.GPU.Structures;
namespace NvAPIWrapper.GPU
{
///
/// Contains information about the PCI-e connection
///
public class PCIeInformation
{
internal PCIeInformation(PrivatePCIeInfoV2.PCIePerformanceStateInfo stateInfo)
{
TransferRateInMTps = stateInfo.TransferRateInMTps;
Generation = stateInfo.Generation;
Lanes = stateInfo.Lanes;
Version = stateInfo.Version;
}
///
/// Gets the PCI-e generation
///
public PCIeGeneration Generation { get; }
///
/// Gets the PCI-e down stream lanes
///
public uint Lanes { get; }
///
/// Gets the PCIe transfer rate in Mega Transfers per Second
///
public uint TransferRateInMTps { get; }
///
/// Gets the PCI-e version
///
public PCIeGeneration Version { get; }
///
public override string ToString()
{
var v = "Unknown";
switch (Version)
{
case PCIeGeneration.PCIe1:
v = "PCIe 1.0";
break;
case PCIeGeneration.PCIe1Minor1:
v = "PCIe 1.1";
break;
case PCIeGeneration.PCIe2:
v = "PCIe 2.0";
break;
case PCIeGeneration.PCIe3:
v = "PCIe 3.0";
break;
}
return $"{v} x{Lanes} - {TransferRateInMTps} MTps";
}
}
}