Added basic Nvidia NVML library support and power usage sensor (#60)

* Added basic Nvidia NVML library support and power usage sensor

* Added basic Nvidia NVML library support and power usage sensor

* Added Initialised check

* Made NvmlDevice internal

* Code formatting

* Move NvmlDevice and NvmlReturn to separate files

* Move code from NvidiaNVMLGPU class to NvidiaGPU class

* Replace call to SetDllDirectory with LoadLibrary/FreeLibrary and code formatting changes

* Made native methods private

* Fixed p/invoke definitions, removed unnecessary try/catch blocks. Code style cleanup
This commit is contained in:
Campbell
2019-01-27 10:34:04 +01:00
committed by Phyxion
parent 556d62917c
commit 98969ebc3e
6 changed files with 295 additions and 5 deletions
+5 -3
View File
@@ -15,9 +15,9 @@ using System.Text;
namespace OpenHardwareMonitor.Hardware.Nvidia {
internal class NvidiaGroup : IGroup {
private readonly List<Hardware> hardware = new List<Hardware>();
private readonly StringBuilder report = new StringBuilder();
private readonly NVML nvml = new NVML();
public NvidiaGroup(ISettings settings) {
if (!NVAPI.IsAvailable)
@@ -82,7 +82,7 @@ namespace OpenHardwareMonitor.Hardware.Nvidia {
for (int i = 0; i < count; i++) {
NvDisplayHandle displayHandle;
displayHandles.TryGetValue(handles[i], out displayHandle);
hardware.Add(new NvidiaGPU(i, handles[i], displayHandle, settings));
hardware.Add(new NvidiaGPU(i, handles[i], displayHandle, settings, nvml));
}
report.AppendLine();
@@ -96,7 +96,9 @@ namespace OpenHardwareMonitor.Hardware.Nvidia {
public void Close() {
foreach (Hardware gpu in hardware)
gpu.Close();
gpu.Close();
nvml.Close();
}
}
}