mirror of
https://github.com/openhardwaremonitor/openhardwaremonitor
synced 2025-09-01 23:05:19 +00:00
Added more details to the AMD GPU report.
This commit is contained in:
@@ -199,11 +199,11 @@ namespace OpenHardwareMonitor.Hardware.ATI {
|
|||||||
r.AppendLine(adapterIndex.ToString(CultureInfo.InvariantCulture));
|
r.AppendLine(adapterIndex.ToString(CultureInfo.InvariantCulture));
|
||||||
r.AppendLine();
|
r.AppendLine();
|
||||||
|
|
||||||
r.AppendLine("ADL Overdrive");
|
r.AppendLine("Overdrive Caps");
|
||||||
r.AppendLine();
|
r.AppendLine();
|
||||||
|
try {
|
||||||
int status = ADL.ADL_Overdrive_Caps(adapterIndex,
|
int status = ADL.ADL_Overdrive_Caps(adapterIndex,
|
||||||
out int supported, out int enabled, out int version);
|
out int supported, out int enabled, out int version);
|
||||||
|
|
||||||
r.Append(" Status: ");
|
r.Append(" Status: ");
|
||||||
r.AppendLine(status == ADL.ADL_OK ? "OK" :
|
r.AppendLine(status == ADL.ADL_OK ? "OK" :
|
||||||
status.ToString(CultureInfo.InvariantCulture));
|
status.ToString(CultureInfo.InvariantCulture));
|
||||||
@@ -213,53 +213,137 @@ namespace OpenHardwareMonitor.Hardware.ATI {
|
|||||||
r.AppendLine(enabled.ToString(CultureInfo.InvariantCulture));
|
r.AppendLine(enabled.ToString(CultureInfo.InvariantCulture));
|
||||||
r.Append(" Version: ");
|
r.Append(" Version: ");
|
||||||
r.AppendLine(version.ToString(CultureInfo.InvariantCulture));
|
r.AppendLine(version.ToString(CultureInfo.InvariantCulture));
|
||||||
|
} catch (Exception e) {
|
||||||
|
r.AppendLine(" Status: " + e.Message);
|
||||||
|
}
|
||||||
r.AppendLine();
|
r.AppendLine();
|
||||||
|
|
||||||
if (context != IntPtr.Zero && overdriveVersion >= 6) {
|
r.AppendLine("Overdrive5 Temperature");
|
||||||
r.AppendLine("Overdrive6 CurrentPower:");
|
|
||||||
r.AppendLine();
|
r.AppendLine();
|
||||||
|
try {
|
||||||
|
var adlt = new ADLTemperature();
|
||||||
|
var status = ADL.ADL_Overdrive5_Temperature_Get(adapterIndex, 0,
|
||||||
|
ref adlt);
|
||||||
|
r.Append(" Status: ");
|
||||||
|
r.AppendLine(status == ADL.ADL_OK ? "OK" :
|
||||||
|
status.ToString(CultureInfo.InvariantCulture));
|
||||||
|
r.AppendFormat(" Value: {0}{1}",
|
||||||
|
0.001f * adlt.Temperature, Environment.NewLine);
|
||||||
|
} catch (Exception e) {
|
||||||
|
r.AppendLine(" Status: " + e.Message);
|
||||||
|
}
|
||||||
|
r.AppendLine();
|
||||||
|
|
||||||
|
r.AppendLine("Overdrive5 FanSpeed");
|
||||||
|
r.AppendLine();
|
||||||
|
try {
|
||||||
|
var adlf = new ADLFanSpeedValue();
|
||||||
|
adlf.SpeedType = ADL.ADL_DL_FANCTRL_SPEED_TYPE_RPM;
|
||||||
|
var status = ADL.ADL_Overdrive5_FanSpeed_Get(adapterIndex, 0, ref adlf);
|
||||||
|
r.Append(" Status RPM: ");
|
||||||
|
r.AppendLine(status == ADL.ADL_OK ? "OK" :
|
||||||
|
status.ToString(CultureInfo.InvariantCulture));
|
||||||
|
r.AppendFormat(" Value RPM: {0}{1}",
|
||||||
|
adlf.FanSpeed, Environment.NewLine);
|
||||||
|
adlf.SpeedType = ADL.ADL_DL_FANCTRL_SPEED_TYPE_PERCENT;
|
||||||
|
status = ADL.ADL_Overdrive5_FanSpeed_Get(adapterIndex, 0, ref adlf);
|
||||||
|
r.Append(" Status Percent: ");
|
||||||
|
r.AppendLine(status == ADL.ADL_OK ? "OK" :
|
||||||
|
status.ToString(CultureInfo.InvariantCulture));
|
||||||
|
r.AppendFormat(" Value Percent: {0}{1}",
|
||||||
|
adlf.FanSpeed, Environment.NewLine);
|
||||||
|
} catch (Exception e) {
|
||||||
|
r.AppendLine(" Status: " + e.Message);
|
||||||
|
}
|
||||||
|
r.AppendLine();
|
||||||
|
|
||||||
|
r.AppendLine("Overdrive5 CurrentActivity");
|
||||||
|
r.AppendLine();
|
||||||
|
try {
|
||||||
|
var adlp = new ADLPMActivity();
|
||||||
|
var status = ADL.ADL_Overdrive5_CurrentActivity_Get(adapterIndex,
|
||||||
|
ref adlp);
|
||||||
|
r.Append(" Status: ");
|
||||||
|
r.AppendLine(status == ADL.ADL_OK ? "OK" :
|
||||||
|
status.ToString(CultureInfo.InvariantCulture));
|
||||||
|
r.AppendFormat(" EngineClock: {0}{1}",
|
||||||
|
0.01f * adlp.EngineClock, Environment.NewLine);
|
||||||
|
r.AppendFormat(" MemoryClock: {0}{1}",
|
||||||
|
0.01f * adlp.MemoryClock, Environment.NewLine);
|
||||||
|
r.AppendFormat(" Vddc: {0}{1}",
|
||||||
|
0.001f * adlp.Vddc, Environment.NewLine);
|
||||||
|
r.AppendFormat(" ActivityPercent: {0}{1}",
|
||||||
|
adlp.ActivityPercent, Environment.NewLine);
|
||||||
|
r.AppendFormat(" CurrentPerformanceLevel: {0}{1}",
|
||||||
|
adlp.CurrentPerformanceLevel, Environment.NewLine);
|
||||||
|
r.AppendFormat(" CurrentBusSpeed: {0}{1}",
|
||||||
|
adlp.CurrentBusSpeed, Environment.NewLine);
|
||||||
|
r.AppendFormat(" CurrentBusLanes: {0}{1}",
|
||||||
|
adlp.CurrentBusLanes, Environment.NewLine);
|
||||||
|
r.AppendFormat(" MaximumBusLanes: {0}{1}",
|
||||||
|
adlp.MaximumBusLanes, Environment.NewLine);
|
||||||
|
} catch (Exception e) {
|
||||||
|
r.AppendLine(" Status: " + e.Message);
|
||||||
|
}
|
||||||
|
r.AppendLine();
|
||||||
|
|
||||||
|
if (context != IntPtr.Zero) {
|
||||||
|
r.AppendLine("Overdrive6 CurrentPower");
|
||||||
|
r.AppendLine();
|
||||||
|
try {
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
var pt = ((ADLODNCurrentPowerType)i).ToString();
|
var pt = ((ADLODNCurrentPowerType)i).ToString();
|
||||||
var ps = ADL.ADL2_Overdrive6_CurrentPower_Get(
|
var status = ADL.ADL2_Overdrive6_CurrentPower_Get(
|
||||||
context, adapterIndex, (ADLODNCurrentPowerType)i,
|
context, adapterIndex, (ADLODNCurrentPowerType)i,
|
||||||
out int power);
|
out int power);
|
||||||
if (ps == ADL.ADL_OK) {
|
if (status == ADL.ADL_OK) {
|
||||||
r.AppendFormat(" Power[{0}].Value: {1}{2}", pt,
|
r.AppendFormat(" Power[{0}].Value: {1}{2}", pt,
|
||||||
power * (1.0f / 0xFF), Environment.NewLine);
|
power * (1.0f / 0xFF), Environment.NewLine);
|
||||||
} else {
|
} else {
|
||||||
r.AppendFormat(" Power[{0}].Status: {1}{2}", pt,
|
r.AppendFormat(" Power[{0}].Status: {1}{2}", pt,
|
||||||
ps, Environment.NewLine);
|
status, Environment.NewLine);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (EntryPointNotFoundException) {
|
||||||
|
r.AppendLine(" Status: Entry point not found");
|
||||||
|
} catch (Exception e) {
|
||||||
|
r.AppendLine(" Status: " + e.Message);
|
||||||
|
}
|
||||||
r.AppendLine();
|
r.AppendLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context != IntPtr.Zero && overdriveVersion >= 7) {
|
if (context != IntPtr.Zero) {
|
||||||
r.AppendLine("OverdriveN Temperature:");
|
r.AppendLine("OverdriveN Temperature");
|
||||||
r.AppendLine();
|
r.AppendLine();
|
||||||
|
try {
|
||||||
for (int i = 1; i < 8; i++) {
|
for (int i = 1; i < 8; i++) {
|
||||||
var tt = ((ADLODNTemperatureType)i).ToString();
|
var tt = ((ADLODNTemperatureType)i).ToString();
|
||||||
var ts = ADL.ADL2_OverdriveN_Temperature_Get(
|
var status = ADL.ADL2_OverdriveN_Temperature_Get(
|
||||||
context, adapterIndex, (ADLODNTemperatureType)i,
|
context, adapterIndex, (ADLODNTemperatureType)i,
|
||||||
out int temperature);
|
out int temperature);
|
||||||
if (ts == ADL.ADL_OK) {
|
if (status == ADL.ADL_OK) {
|
||||||
r.AppendFormat(" Temperature[{0}].Value: {1}{2}", tt,
|
r.AppendFormat(" Temperature[{0}].Value: {1}{2}", tt,
|
||||||
0.001f * temperature, Environment.NewLine);
|
0.001f * temperature, Environment.NewLine);
|
||||||
} else {
|
} else {
|
||||||
r.AppendFormat(" Temperature[{0}].Status: {1}{2}", tt,
|
r.AppendFormat(" Temperature[{0}].Status: {1}{2}", tt,
|
||||||
ts, Environment.NewLine);
|
status, Environment.NewLine);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (EntryPointNotFoundException) {
|
||||||
|
r.AppendLine(" Status: Entry point not found");
|
||||||
|
} catch (Exception e) {
|
||||||
|
r.AppendLine(" Status: " + e.Message);
|
||||||
|
}
|
||||||
r.AppendLine();
|
r.AppendLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context != IntPtr.Zero && overdriveVersion >= 8) {
|
if (context != IntPtr.Zero) {
|
||||||
r.AppendLine("Performance Metrics:");
|
r.AppendLine("Performance Metrics");
|
||||||
r.AppendLine();
|
r.AppendLine();
|
||||||
var ps = ADL.ADL2_New_QueryPMLogData_Get(context, adapterIndex,
|
try {
|
||||||
|
var status = ADL.ADL2_New_QueryPMLogData_Get(context, adapterIndex,
|
||||||
out var data);
|
out var data);
|
||||||
|
if (status == ADL.ADL_OK) {
|
||||||
if (ps == ADL.ADL_OK) {
|
|
||||||
for (int i = 0; i < data.Sensors.Length; i++) {
|
for (int i = 0; i < data.Sensors.Length; i++) {
|
||||||
if (data.Sensors[i].Supported) {
|
if (data.Sensors[i].Supported) {
|
||||||
var st = ((ADLSensorType)i).ToString();
|
var st = ((ADLSensorType)i).ToString();
|
||||||
@@ -269,8 +353,14 @@ namespace OpenHardwareMonitor.Hardware.ATI {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
r.Append(" Status: ");
|
r.Append(" Status: ");
|
||||||
r.AppendLine(ps.ToString(CultureInfo.InvariantCulture));
|
r.AppendLine(status.ToString(CultureInfo.InvariantCulture));
|
||||||
}
|
}
|
||||||
|
} catch (EntryPointNotFoundException) {
|
||||||
|
r.AppendLine(" Status: Entry point not found");
|
||||||
|
} catch (Exception e) {
|
||||||
|
r.AppendLine(" Status: " + e.Message);
|
||||||
|
}
|
||||||
|
|
||||||
r.AppendLine();
|
r.AppendLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -327,7 +417,8 @@ namespace OpenHardwareMonitor.Hardware.ATI {
|
|||||||
} else {
|
} else {
|
||||||
ADLTemperature adlt = new ADLTemperature();
|
ADLTemperature adlt = new ADLTemperature();
|
||||||
if (ADL.ADL_Overdrive5_Temperature_Get(adapterIndex, 0, ref adlt)
|
if (ADL.ADL_Overdrive5_Temperature_Get(adapterIndex, 0, ref adlt)
|
||||||
== ADL.ADL_OK) {
|
== ADL.ADL_OK)
|
||||||
|
{
|
||||||
temperatureCore.Value = 0.001f * adlt.Temperature;
|
temperatureCore.Value = 0.001f * adlt.Temperature;
|
||||||
ActivateSensor(temperatureCore);
|
ActivateSensor(temperatureCore);
|
||||||
} else {
|
} else {
|
||||||
@@ -345,7 +436,8 @@ namespace OpenHardwareMonitor.Hardware.ATI {
|
|||||||
ADLFanSpeedValue adlf = new ADLFanSpeedValue();
|
ADLFanSpeedValue adlf = new ADLFanSpeedValue();
|
||||||
adlf.SpeedType = ADL.ADL_DL_FANCTRL_SPEED_TYPE_RPM;
|
adlf.SpeedType = ADL.ADL_DL_FANCTRL_SPEED_TYPE_RPM;
|
||||||
if (ADL.ADL_Overdrive5_FanSpeed_Get(adapterIndex, 0, ref adlf)
|
if (ADL.ADL_Overdrive5_FanSpeed_Get(adapterIndex, 0, ref adlf)
|
||||||
== ADL.ADL_OK) {
|
== ADL.ADL_OK)
|
||||||
|
{
|
||||||
fan.Value = adlf.FanSpeed;
|
fan.Value = adlf.FanSpeed;
|
||||||
ActivateSensor(fan);
|
ActivateSensor(fan);
|
||||||
} else {
|
} else {
|
||||||
@@ -355,7 +447,8 @@ namespace OpenHardwareMonitor.Hardware.ATI {
|
|||||||
adlf = new ADLFanSpeedValue();
|
adlf = new ADLFanSpeedValue();
|
||||||
adlf.SpeedType = ADL.ADL_DL_FANCTRL_SPEED_TYPE_PERCENT;
|
adlf.SpeedType = ADL.ADL_DL_FANCTRL_SPEED_TYPE_PERCENT;
|
||||||
if (ADL.ADL_Overdrive5_FanSpeed_Get(adapterIndex, 0, ref adlf)
|
if (ADL.ADL_Overdrive5_FanSpeed_Get(adapterIndex, 0, ref adlf)
|
||||||
== ADL.ADL_OK) {
|
== ADL.ADL_OK)
|
||||||
|
{
|
||||||
controlSensor.Value = adlf.FanSpeed;
|
controlSensor.Value = adlf.FanSpeed;
|
||||||
ActivateSensor(controlSensor);
|
ActivateSensor(controlSensor);
|
||||||
} else {
|
} else {
|
||||||
@@ -364,7 +457,8 @@ namespace OpenHardwareMonitor.Hardware.ATI {
|
|||||||
|
|
||||||
ADLPMActivity adlp = new ADLPMActivity();
|
ADLPMActivity adlp = new ADLPMActivity();
|
||||||
if (ADL.ADL_Overdrive5_CurrentActivity_Get(adapterIndex, ref adlp)
|
if (ADL.ADL_Overdrive5_CurrentActivity_Get(adapterIndex, ref adlp)
|
||||||
== ADL.ADL_OK) {
|
== ADL.ADL_OK)
|
||||||
|
{
|
||||||
if (adlp.EngineClock > 0) {
|
if (adlp.EngineClock > 0) {
|
||||||
coreClock.Value = 0.01f * adlp.EngineClock;
|
coreClock.Value = 0.01f * adlp.EngineClock;
|
||||||
ActivateSensor(coreClock);
|
ActivateSensor(coreClock);
|
||||||
|
@@ -10,5 +10,5 @@
|
|||||||
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
[assembly: AssemblyVersion("0.9.2.0")]
|
[assembly: AssemblyVersion("0.9.2.1")]
|
||||||
[assembly: AssemblyInformationalVersion("0.9.2.0")]
|
[assembly: AssemblyInformationalVersion("0.9.2.1 Alpha")]
|
Reference in New Issue
Block a user