mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Clocks fixes
This commit is contained in:
@@ -3,6 +3,7 @@ using NvAPIWrapper.Native;
|
|||||||
using NvAPIWrapper.Native.GPU;
|
using NvAPIWrapper.Native.GPU;
|
||||||
using NvAPIWrapper.Native.GPU.Structures;
|
using NvAPIWrapper.Native.GPU.Structures;
|
||||||
using NvAPIWrapper.Native.Interfaces.GPU;
|
using NvAPIWrapper.Native.Interfaces.GPU;
|
||||||
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Management;
|
using System.Management;
|
||||||
using static NvAPIWrapper.Native.GPU.Structures.PerformanceStates20InfoV1;
|
using static NvAPIWrapper.Native.GPU.Structures.PerformanceStates20InfoV1;
|
||||||
@@ -47,23 +48,29 @@ public class NvidiaGpuControl : IGpuControl
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void GetClocks(out int core, out int memory, out string gpu)
|
public int GetClocks(out int core, out int memory, out string gpu)
|
||||||
{
|
{
|
||||||
PhysicalGPU internalGpu = _internalGpu!;
|
PhysicalGPU internalGpu = _internalGpu!;
|
||||||
|
|
||||||
gpu = internalGpu.FullName;
|
gpu = internalGpu.FullName;
|
||||||
|
|
||||||
Logger.WriteLine(internalGpu.FullName);
|
//Logger.WriteLine(internalGpu.FullName);
|
||||||
Logger.WriteLine(internalGpu.ArchitectInformation.ToString());
|
//Logger.WriteLine(internalGpu.ArchitectInformation.ToString());
|
||||||
|
|
||||||
IPerformanceStates20Info states = GPUApi.GetPerformanceStates20(internalGpu.Handle);
|
try
|
||||||
|
{
|
||||||
|
IPerformanceStates20Info states = GPUApi.GetPerformanceStates20(internalGpu.Handle);
|
||||||
|
core = states.Clocks[PerformanceStateId.P0_3DPerformance][0].FrequencyDeltaInkHz.DeltaValue / 1000;
|
||||||
|
memory = states.Clocks[PerformanceStateId.P0_3DPerformance][1].FrequencyDeltaInkHz.DeltaValue / 1000;
|
||||||
|
Logger.WriteLine($"GET GPU Clock offsets : {core}, {memory}");
|
||||||
|
return 0;
|
||||||
|
|
||||||
//Logger.WriteLine("IPerformanceStates20Info type : " + states.GetType());
|
} catch (Exception ex)
|
||||||
|
{
|
||||||
core = states.Clocks[PerformanceStateId.P0_3DPerformance][0].FrequencyDeltaInkHz.DeltaValue / 1000;
|
Logger.WriteLine(ex.Message);
|
||||||
memory = states.Clocks[PerformanceStateId.P0_3DPerformance][1].FrequencyDeltaInkHz.DeltaValue / 1000;
|
core = memory = 0;
|
||||||
|
return -1;
|
||||||
Logger.WriteLine($"GET GPU Clock offsets : {core}, {memory}");
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -368,7 +368,7 @@ namespace GHelper
|
|||||||
startInfo.Arguments = param;
|
startInfo.Arguments = param;
|
||||||
startInfo.Verb = "runas";
|
startInfo.Verb = "runas";
|
||||||
Process.Start(startInfo);
|
Process.Start(startInfo);
|
||||||
//Application.Exit();
|
Application.Exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1061,8 +1061,13 @@ namespace GHelper
|
|||||||
using NvidiaGpuControl nvControl = (NvidiaGpuControl)HardwareControl.GpuControl;
|
using NvidiaGpuControl nvControl = (NvidiaGpuControl)HardwareControl.GpuControl;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int status = nvControl.SetClocks(gpu_core, gpu_memory);
|
int getStatus = nvControl.GetClocks(out int current_core, out int current_memory, out string gpuName);
|
||||||
if (launchAsAdmin && status == -1) Program.RunAsAdmin("gpu");
|
if (getStatus == -1) return;
|
||||||
|
if (Math.Abs(gpu_core - current_core) < 5 && Math.Abs(gpu_memory - current_memory) < 5) return;
|
||||||
|
|
||||||
|
int setStatus = nvControl.SetClocks(gpu_core, gpu_memory);
|
||||||
|
if (launchAsAdmin && setStatus == -1) Program.RunAsAdmin("gpu");
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user