示例#1
0
        public AmdGpu(string name, int adapterIndex, int busNumber, int deviceNumber, ISettings settings)
            : base(name, new Identifier("gpu", adapterIndex.ToString(CultureInfo.InvariantCulture)), settings)
        {
            _adapterIndex = adapterIndex;
            BusNumber     = busNumber;
            DeviceNumber  = deviceNumber;

            _temperatureCore    = new Sensor("GPU Core", 0, SensorType.Temperature, this, settings);
            _temperatureHbm     = new Sensor("GPU HBM", 1, SensorType.Temperature, this, settings);
            _temperatureVddc    = new Sensor("GPU VDDC", 2, SensorType.Temperature, this, settings);
            _temperatureMvdd    = new Sensor("GPU MVDD", 3, SensorType.Temperature, this, settings);
            _temperatureHotSpot = new Sensor("GPU Hot Spot", 4, SensorType.Temperature, this, settings);
            _fan           = new Sensor("GPU Fan", 0, SensorType.Fan, this, settings);
            _coreClock     = new Sensor("GPU Core", 0, SensorType.Clock, this, settings);
            _memoryClock   = new Sensor("GPU Memory", 1, SensorType.Clock, this, settings);
            _coreVoltage   = new Sensor("GPU Core", 0, SensorType.Voltage, this, settings);
            _coreLoad      = new Sensor("GPU Core", 0, SensorType.Load, this, settings);
            _controlSensor = new Sensor("GPU Fan", 0, SensorType.Control, this, settings);

            int supported = 0;
            int enabled   = 0;
            int version   = 0;

            _isOverdriveNSupported = AtiAdlxx.ADL_Overdrive_Caps(1, ref supported, ref enabled, ref version) == AtiAdlxx.ADL_OK && version >= 7;

            AtiAdlxx.ADLFanSpeedInfo fanSpeedInfo = new AtiAdlxx.ADLFanSpeedInfo();
            if (AtiAdlxx.ADL_Overdrive5_FanSpeedInfo_Get(adapterIndex, 0, ref fanSpeedInfo) != AtiAdlxx.ADL_OK)
            {
                fanSpeedInfo.MaxPercent = 100;
                fanSpeedInfo.MinPercent = 0;
            }

            _fanControl = new Control(_controlSensor, settings, fanSpeedInfo.MinPercent, fanSpeedInfo.MaxPercent);
            _fanControl.ControlModeChanged          += ControlModeChanged;
            _fanControl.SoftwareControlValueChanged += SoftwareControlValueChanged;
            ControlModeChanged(_fanControl);
            _controlSensor.Control = _fanControl;
            Update();
        }
示例#2
0
        public AmdGpu(string name, int adapterIndex, int busNumber, int deviceNumber, ISettings settings)
            : base(name, new Identifier("gpu", adapterIndex.ToString(CultureInfo.InvariantCulture)), settings)
        {
            _adapterIndex = adapterIndex;
            BusNumber     = busNumber;
            DeviceNumber  = deviceNumber;

            _temperatureCore    = new Sensor("GPU Core", 0, SensorType.Temperature, this, settings);
            _temperatureMemory  = new Sensor("GPU Memory", 1, SensorType.Temperature, this, settings);
            _temperatureVddc    = new Sensor("GPU VR VDDC", 2, SensorType.Temperature, this, settings);
            _temperatureMvdd    = new Sensor("GPU VR MVDD", 3, SensorType.Temperature, this, settings);
            _temperatureLiquid  = new Sensor("GPU Liquid", 4, SensorType.Temperature, this, settings);
            _temperaturePlx     = new Sensor("GPU PLX", 5, SensorType.Temperature, this, settings);
            _temperatureHotSpot = new Sensor("GPU Hot Spot", 6, SensorType.Temperature, this, settings);

            _coreClock   = new Sensor("GPU Core", 0, SensorType.Clock, this, settings);
            _socClock    = new Sensor("GPU SoC", 1, SensorType.Clock, this, settings);
            _memoryClock = new Sensor("GPU Memory", 2, SensorType.Clock, this, settings);

            _fan = new Sensor("GPU Fan", 0, SensorType.Fan, this, settings);

            _coreVoltage   = new Sensor("GPU Core", 0, SensorType.Voltage, this, settings);
            _memoryVoltage = new Sensor("GPU Memory", 1, SensorType.Voltage, this, settings);

            _coreLoad = new Sensor("GPU Core", 0, SensorType.Load, this, settings);

            _controlSensor = new Sensor("GPU Fan", 0, SensorType.Control, this, settings);

            _powerCore   = new Sensor("GPU Core", 0, SensorType.Power, this, settings);
            _powerPpt    = new Sensor("GPU PPT", 1, SensorType.Power, this, settings);
            _powerSocket = new Sensor("GPU Socket", 2, SensorType.Power, this, settings);
            _powerTotal  = new Sensor("GPU Package", 3, SensorType.Power, this, settings);

            int supported = 0;
            int enabled   = 0;
            int version   = 0;

            if (AtiAdlxx.ADL_Overdrive_Caps(1, ref supported, ref enabled, ref version) == AtiAdlxx.ADL_OK)
            {
                _currentOverdriveApiLevel = version;
            }
            else
            {
                _currentOverdriveApiLevel = -1;
            }

            if (_currentOverdriveApiLevel >= 6)
            {
                if (AtiAdlxx.ADL2_Main_Control_Create(AtiAdlxx.Main_Memory_Alloc, adapterIndex, ref _context) == AtiAdlxx.ADL_OK)
                {
                    _context = IntPtr.Zero;
                }
            }

            AtiAdlxx.ADLFanSpeedInfo fanSpeedInfo = new AtiAdlxx.ADLFanSpeedInfo();
            if (AtiAdlxx.ADL_Overdrive5_FanSpeedInfo_Get(adapterIndex, 0, ref fanSpeedInfo) != AtiAdlxx.ADL_OK)
            {
                fanSpeedInfo.MaxPercent = 100;
                fanSpeedInfo.MinPercent = 0;
            }

            _fanControl = new Control(_controlSensor, settings, fanSpeedInfo.MinPercent, fanSpeedInfo.MaxPercent);
            _fanControl.ControlModeChanged          += ControlModeChanged;
            _fanControl.SoftwareControlValueChanged += SoftwareControlValueChanged;
            ControlModeChanged(_fanControl);
            _controlSensor.Control = _fanControl;
            Update();
        }