mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
GPU boost / temp limits control
This commit is contained in:
@@ -49,9 +49,9 @@ public class ASUSWmi
|
||||
public const int PPT_CPUB0 = 0x001200B0; // CPU PPT on 2022 (PPT_LIMIT_APU)
|
||||
public const int PPT_CPUB1 = 0x001200B1; // Total PPT on 2022 (PPT_LIMIT_SLOW)
|
||||
|
||||
public const int PPT_APUC0 = 0x001200C0; // does nothing on G14 2022
|
||||
public const int PPT_GPUC0 = 0x001200C0; // NVIDIA GPU Boost
|
||||
public const int PPT_APUC1 = 0x001200C1; // Actual Power Limit (PPT_LIMIT_FAST) AND Sustained Power Limit (STAPM_LIMIT)
|
||||
public const int PPT_APUC2 = 0x001200C2; // does nothing on G14 2022
|
||||
public const int PPT_GPUC2 = 0x001200C2; // NVIDIA GPU Temp Target (75.. 87 C)
|
||||
|
||||
public const int TUF_KB_BRIGHTNESS = 0x00050021;
|
||||
public const int TUF_KB = 0x00100056;
|
||||
@@ -74,6 +74,12 @@ public class ASUSWmi
|
||||
public const int MinCPU = 5;
|
||||
public const int DefaultCPU = 80;
|
||||
|
||||
public const int MinGPUBoost = 5;
|
||||
public const int MaxGPUBoost = 25;
|
||||
|
||||
public const int MinGPUTemp = 75;
|
||||
public const int MaxGPUTemp = 87;
|
||||
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
|
||||
private static extern IntPtr CreateFile(
|
||||
|
||||
170
app/Fans.Designer.cs
generated
170
app/Fans.Designer.cs
generated
@@ -31,12 +31,12 @@ namespace GHelper
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
ChartArea chartArea1 = new ChartArea();
|
||||
Title title1 = new Title();
|
||||
ChartArea chartArea2 = new ChartArea();
|
||||
Title title2 = new Title();
|
||||
ChartArea chartArea3 = new ChartArea();
|
||||
Title title3 = new Title();
|
||||
ChartArea chartArea13 = new ChartArea();
|
||||
Title title13 = new Title();
|
||||
ChartArea chartArea14 = new ChartArea();
|
||||
Title title14 = new Title();
|
||||
ChartArea chartArea15 = new ChartArea();
|
||||
Title title15 = new Title();
|
||||
panelFans = new Panel();
|
||||
labelFansResult = new Label();
|
||||
labelTip = new Label();
|
||||
@@ -78,6 +78,14 @@ namespace GHelper
|
||||
panelTitleGPU = new Panel();
|
||||
pictureGPU = new PictureBox();
|
||||
labelGPU = new Label();
|
||||
panelGPUBoost = new Panel();
|
||||
labelGPUBoost = new Label();
|
||||
labelGPUBoostTitle = new Label();
|
||||
trackGPUBoost = new TrackBar();
|
||||
panelGPUTemp = new Panel();
|
||||
labelGPUTemp = new Label();
|
||||
labelGPUTempTitle = new Label();
|
||||
trackGPUTemp = new TrackBar();
|
||||
panelFans.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)picturePerf).BeginInit();
|
||||
tableFanCharts.SuspendLayout();
|
||||
@@ -100,6 +108,10 @@ namespace GHelper
|
||||
((System.ComponentModel.ISupportInitialize)trackGPUCore).BeginInit();
|
||||
panelTitleGPU.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
|
||||
panelGPUBoost.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)trackGPUBoost).BeginInit();
|
||||
panelGPUTemp.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)trackGPUTemp).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// panelFans
|
||||
@@ -199,8 +211,8 @@ namespace GHelper
|
||||
//
|
||||
// chartGPU
|
||||
//
|
||||
chartArea1.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea1);
|
||||
chartArea13.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea13);
|
||||
chartGPU.Dock = DockStyle.Fill;
|
||||
chartGPU.Location = new Point(2, 350);
|
||||
chartGPU.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -208,13 +220,13 @@ namespace GHelper
|
||||
chartGPU.Size = new Size(760, 320);
|
||||
chartGPU.TabIndex = 17;
|
||||
chartGPU.Text = "chartGPU";
|
||||
title1.Name = "Title1";
|
||||
chartGPU.Titles.Add(title1);
|
||||
title13.Name = "Title1";
|
||||
chartGPU.Titles.Add(title13);
|
||||
//
|
||||
// chartCPU
|
||||
//
|
||||
chartArea2.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea2);
|
||||
chartArea14.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea14);
|
||||
chartCPU.Dock = DockStyle.Fill;
|
||||
chartCPU.Location = new Point(2, 10);
|
||||
chartCPU.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -222,13 +234,13 @@ namespace GHelper
|
||||
chartCPU.Size = new Size(760, 320);
|
||||
chartCPU.TabIndex = 14;
|
||||
chartCPU.Text = "chartCPU";
|
||||
title2.Name = "Title1";
|
||||
chartCPU.Titles.Add(title2);
|
||||
title14.Name = "Title1";
|
||||
chartCPU.Titles.Add(title14);
|
||||
//
|
||||
// chartMid
|
||||
//
|
||||
chartArea3.Name = "ChartArea3";
|
||||
chartMid.ChartAreas.Add(chartArea3);
|
||||
chartArea15.Name = "ChartArea3";
|
||||
chartMid.ChartAreas.Add(chartArea15);
|
||||
chartMid.Dock = DockStyle.Fill;
|
||||
chartMid.Location = new Point(2, 690);
|
||||
chartMid.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -236,8 +248,8 @@ namespace GHelper
|
||||
chartMid.Size = new Size(760, 322);
|
||||
chartMid.TabIndex = 14;
|
||||
chartMid.Text = "chartMid";
|
||||
title3.Name = "Title3";
|
||||
chartMid.Titles.Add(title3);
|
||||
title15.Name = "Title3";
|
||||
chartMid.Titles.Add(title15);
|
||||
chartMid.Visible = false;
|
||||
//
|
||||
// labelFans
|
||||
@@ -304,16 +316,16 @@ namespace GHelper
|
||||
panelPower.Controls.Add(panelTotal);
|
||||
panelPower.Controls.Add(panelTitleCPU);
|
||||
panelPower.Dock = DockStyle.Fill;
|
||||
panelPower.Location = new Point(10, 345);
|
||||
panelPower.Location = new Point(10, 634);
|
||||
panelPower.Name = "panelPower";
|
||||
panelPower.Size = new Size(523, 844);
|
||||
panelPower.Size = new Size(523, 555);
|
||||
panelPower.TabIndex = 43;
|
||||
//
|
||||
// panelApplyPower
|
||||
//
|
||||
panelApplyPower.Controls.Add(checkApplyPower);
|
||||
panelApplyPower.Dock = DockStyle.Bottom;
|
||||
panelApplyPower.Location = new Point(0, 752);
|
||||
panelApplyPower.Location = new Point(0, 463);
|
||||
panelApplyPower.Name = "panelApplyPower";
|
||||
panelApplyPower.Padding = new Padding(10);
|
||||
panelApplyPower.Size = new Size(523, 92);
|
||||
@@ -482,13 +494,15 @@ namespace GHelper
|
||||
// panelGPU
|
||||
//
|
||||
panelGPU.AutoSize = true;
|
||||
panelGPU.Controls.Add(panelGPUTemp);
|
||||
panelGPU.Controls.Add(panelGPUBoost);
|
||||
panelGPU.Controls.Add(panelGPUMemory);
|
||||
panelGPU.Controls.Add(panelGPUCore);
|
||||
panelGPU.Controls.Add(panelTitleGPU);
|
||||
panelGPU.Dock = DockStyle.Top;
|
||||
panelGPU.Location = new Point(10, 0);
|
||||
panelGPU.Name = "panelGPU";
|
||||
panelGPU.Size = new Size(523, 345);
|
||||
panelGPU.Size = new Size(523, 634);
|
||||
panelGPU.TabIndex = 44;
|
||||
//
|
||||
// panelGPUMemory
|
||||
@@ -532,7 +546,7 @@ namespace GHelper
|
||||
trackGPUMemory.Margin = new Padding(4, 2, 4, 2);
|
||||
trackGPUMemory.Maximum = 300;
|
||||
trackGPUMemory.Name = "trackGPUMemory";
|
||||
trackGPUMemory.Size = new Size(513, 90);
|
||||
trackGPUMemory.Size = new Size(502, 90);
|
||||
trackGPUMemory.SmallChange = 10;
|
||||
trackGPUMemory.TabIndex = 42;
|
||||
trackGPUMemory.TickFrequency = 50;
|
||||
@@ -571,7 +585,7 @@ namespace GHelper
|
||||
trackGPUCore.Maximum = 300;
|
||||
trackGPUCore.Name = "trackGPUCore";
|
||||
trackGPUCore.RightToLeft = RightToLeft.No;
|
||||
trackGPUCore.Size = new Size(513, 90);
|
||||
trackGPUCore.Size = new Size(502, 90);
|
||||
trackGPUCore.SmallChange = 10;
|
||||
trackGPUCore.TabIndex = 18;
|
||||
trackGPUCore.TickFrequency = 50;
|
||||
@@ -622,6 +636,100 @@ namespace GHelper
|
||||
labelGPU.TabIndex = 40;
|
||||
labelGPU.Text = "GPU Settings";
|
||||
//
|
||||
// panelGPUBoost
|
||||
//
|
||||
panelGPUBoost.AutoSize = true;
|
||||
panelGPUBoost.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelGPUBoost.Controls.Add(labelGPUBoost);
|
||||
panelGPUBoost.Controls.Add(labelGPUBoostTitle);
|
||||
panelGPUBoost.Controls.Add(trackGPUBoost);
|
||||
panelGPUBoost.Dock = DockStyle.Top;
|
||||
panelGPUBoost.Location = new Point(0, 345);
|
||||
panelGPUBoost.Name = "panelGPUBoost";
|
||||
panelGPUBoost.Size = new Size(523, 140);
|
||||
panelGPUBoost.TabIndex = 46;
|
||||
//
|
||||
// labelGPUBoost
|
||||
//
|
||||
labelGPUBoost.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
labelGPUBoost.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelGPUBoost.Location = new Point(374, 14);
|
||||
labelGPUBoost.Name = "labelGPUBoost";
|
||||
labelGPUBoost.Size = new Size(130, 32);
|
||||
labelGPUBoost.TabIndex = 44;
|
||||
labelGPUBoost.Text = "25W";
|
||||
labelGPUBoost.TextAlign = ContentAlignment.TopRight;
|
||||
//
|
||||
// labelGPUBoostTitle
|
||||
//
|
||||
labelGPUBoostTitle.AutoSize = true;
|
||||
labelGPUBoostTitle.Location = new Point(10, 14);
|
||||
labelGPUBoostTitle.Name = "labelGPUBoostTitle";
|
||||
labelGPUBoostTitle.Size = new Size(174, 32);
|
||||
labelGPUBoostTitle.TabIndex = 43;
|
||||
labelGPUBoostTitle.Text = "Dynamic Boost";
|
||||
//
|
||||
// trackGPUBoost
|
||||
//
|
||||
trackGPUBoost.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
trackGPUBoost.Location = new Point(6, 48);
|
||||
trackGPUBoost.Margin = new Padding(4, 2, 4, 2);
|
||||
trackGPUBoost.Maximum = 25;
|
||||
trackGPUBoost.Minimum = 5;
|
||||
trackGPUBoost.Name = "trackGPUBoost";
|
||||
trackGPUBoost.Size = new Size(502, 90);
|
||||
trackGPUBoost.TabIndex = 42;
|
||||
trackGPUBoost.TickFrequency = 5;
|
||||
trackGPUBoost.TickStyle = TickStyle.TopLeft;
|
||||
trackGPUBoost.Value = 25;
|
||||
//
|
||||
// panelGPUTemp
|
||||
//
|
||||
panelGPUTemp.AutoSize = true;
|
||||
panelGPUTemp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelGPUTemp.Controls.Add(labelGPUTemp);
|
||||
panelGPUTemp.Controls.Add(labelGPUTempTitle);
|
||||
panelGPUTemp.Controls.Add(trackGPUTemp);
|
||||
panelGPUTemp.Dock = DockStyle.Top;
|
||||
panelGPUTemp.Location = new Point(0, 485);
|
||||
panelGPUTemp.Name = "panelGPUTemp";
|
||||
panelGPUTemp.Size = new Size(523, 149);
|
||||
panelGPUTemp.TabIndex = 47;
|
||||
//
|
||||
// labelGPUTemp
|
||||
//
|
||||
labelGPUTemp.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
labelGPUTemp.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelGPUTemp.Location = new Point(378, 14);
|
||||
labelGPUTemp.Name = "labelGPUTemp";
|
||||
labelGPUTemp.Size = new Size(130, 32);
|
||||
labelGPUTemp.TabIndex = 44;
|
||||
labelGPUTemp.Text = "87C";
|
||||
labelGPUTemp.TextAlign = ContentAlignment.TopRight;
|
||||
//
|
||||
// labelGPUTempTitle
|
||||
//
|
||||
labelGPUTempTitle.AutoSize = true;
|
||||
labelGPUTempTitle.Location = new Point(10, 14);
|
||||
labelGPUTempTitle.Name = "labelGPUTempTitle";
|
||||
labelGPUTempTitle.Size = new Size(173, 32);
|
||||
labelGPUTempTitle.TabIndex = 43;
|
||||
labelGPUTempTitle.Text = "Thermal Target";
|
||||
//
|
||||
// trackGPUTemp
|
||||
//
|
||||
trackGPUTemp.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
trackGPUTemp.Location = new Point(6, 57);
|
||||
trackGPUTemp.Margin = new Padding(4, 2, 4, 2);
|
||||
trackGPUTemp.Maximum = 87;
|
||||
trackGPUTemp.Minimum = 75;
|
||||
trackGPUTemp.Name = "trackGPUTemp";
|
||||
trackGPUTemp.Size = new Size(502, 90);
|
||||
trackGPUTemp.TabIndex = 42;
|
||||
trackGPUTemp.TickFrequency = 5;
|
||||
trackGPUTemp.TickStyle = TickStyle.TopLeft;
|
||||
trackGPUTemp.Value = 87;
|
||||
//
|
||||
// Fans
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(192F, 192F);
|
||||
@@ -674,6 +782,12 @@ namespace GHelper
|
||||
panelTitleGPU.ResumeLayout(false);
|
||||
panelTitleGPU.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
|
||||
panelGPUBoost.ResumeLayout(false);
|
||||
panelGPUBoost.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)trackGPUBoost).EndInit();
|
||||
panelGPUTemp.ResumeLayout(false);
|
||||
panelGPUTemp.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)trackGPUTemp).EndInit();
|
||||
ResumeLayout(false);
|
||||
}
|
||||
|
||||
@@ -719,5 +833,13 @@ namespace GHelper
|
||||
private Label labelGPU;
|
||||
private Panel panelApplyPower;
|
||||
private RCheckBox checkApplyPower;
|
||||
private Panel panelGPUBoost;
|
||||
private Label labelGPUBoost;
|
||||
private Label labelGPUBoostTitle;
|
||||
private TrackBar trackGPUBoost;
|
||||
private Panel panelGPUTemp;
|
||||
private Label labelGPUTemp;
|
||||
private Label labelGPUTempTitle;
|
||||
private TrackBar trackGPUTemp;
|
||||
}
|
||||
}
|
||||
56
app/Fans.cs
56
app/Fans.cs
@@ -79,12 +79,23 @@ namespace GHelper
|
||||
trackGPUMemory.Minimum = NvidiaGpuControl.MinMemoryOffset;
|
||||
trackGPUMemory.Maximum = NvidiaGpuControl.MaxMemoryOffset;
|
||||
|
||||
trackGPUBoost.Minimum = ASUSWmi.MinGPUBoost;
|
||||
trackGPUBoost.Maximum = ASUSWmi.MaxGPUBoost;
|
||||
|
||||
trackGPUTemp.Minimum = ASUSWmi.MinGPUTemp;
|
||||
trackGPUTemp.Maximum = ASUSWmi.MaxGPUTemp;
|
||||
|
||||
trackGPUCore.Scroll += trackGPU_Scroll;
|
||||
trackGPUMemory.Scroll += trackGPU_Scroll;
|
||||
trackGPUBoost.Scroll += trackGPU_Scroll;
|
||||
trackGPUTemp.Scroll += trackGPU_Scroll;
|
||||
|
||||
trackGPUCore.MouseUp += TrackGPU_MouseUp;
|
||||
trackGPUMemory.MouseUp += TrackGPU_MouseUp;
|
||||
|
||||
trackGPUBoost.MouseUp += TrackGPUBoost_MouseUp;
|
||||
trackGPUTemp.MouseUp += TrackGPUBoost_MouseUp;
|
||||
|
||||
//labelInfo.MaximumSize = new Size(280, 0);
|
||||
labelInfo.Text = Properties.Strings.PPTExperimental;
|
||||
labelFansResult.Visible = false;
|
||||
@@ -101,12 +112,19 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
private void TrackGPUBoost_MouseUp(object? sender, MouseEventArgs e)
|
||||
{
|
||||
Program.config.setConfig("gpu_boost", trackGPUBoost.Value);
|
||||
Program.config.setConfig("gpu_temp", trackGPUTemp.Value);
|
||||
Program.settingsForm.SetGPUPower();
|
||||
}
|
||||
|
||||
private void TrackGPU_MouseUp(object? sender, MouseEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Program.config.setConfig("GPUCore", trackGPUCore.Value);
|
||||
Program.config.setConfig("GPUMemory", trackGPUMemory.Value);
|
||||
Program.config.setConfig("gpu_core", trackGPUCore.Value);
|
||||
Program.config.setConfig("gpu_memory", trackGPUMemory.Value);
|
||||
|
||||
int status = Program.nvControl.SetClocks(trackGPUCore.Value, trackGPUMemory.Value);
|
||||
if (status == -1) Program.RunAsAdmin("gpu");
|
||||
@@ -135,41 +153,37 @@ namespace GHelper
|
||||
trackGPUCore.Value = Math.Max(Math.Min(core, NvidiaGpuControl.MaxCoreOffset), NvidiaGpuControl.MinCoreOffset);
|
||||
trackGPUMemory.Value = Math.Max(Math.Min(memory, NvidiaGpuControl.MaxMemoryOffset), NvidiaGpuControl.MinMemoryOffset);
|
||||
|
||||
VisualiseGPUClocks();
|
||||
int gpu_boost = Program.config.getConfig("gpu_boost");
|
||||
int gpu_temp = Program.config.getConfig("gpu_temp");
|
||||
|
||||
if (gpu_boost < 0) gpu_boost = ASUSWmi.MaxGPUBoost;
|
||||
if (gpu_temp < 0) gpu_temp = ASUSWmi.MaxGPUTemp;
|
||||
|
||||
trackGPUBoost.Value = Math.Max(Math.Min(gpu_boost, ASUSWmi.MaxGPUBoost), ASUSWmi.MinGPUBoost);
|
||||
trackGPUTemp.Value = Math.Max(Math.Min(gpu_temp, ASUSWmi.MaxGPUTemp), ASUSWmi.MinGPUTemp);
|
||||
|
||||
VisualiseGPUSettings();
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine(ex);
|
||||
Logger.WriteLine(ex.ToString());
|
||||
panelGPU.Visible = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ButtonResetGPU_Click(object? sender, EventArgs e)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
trackGPUCore.Value = 0;
|
||||
trackGPUMemory.Value = 0;
|
||||
VisualiseGPUClocks();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private void VisualiseGPUClocks()
|
||||
private void VisualiseGPUSettings()
|
||||
{
|
||||
labelGPUCore.Text = $"{trackGPUCore.Value} MHz";
|
||||
labelGPUMemory.Text = $"{trackGPUMemory.Value} MHz";
|
||||
labelGPUBoost.Text = $"{trackGPUBoost.Value}W";
|
||||
labelGPUTemp.Text = $"{trackGPUTemp.Value}°C";
|
||||
}
|
||||
|
||||
private void trackGPU_Scroll(object? sender, EventArgs e)
|
||||
{
|
||||
VisualiseGPUClocks();
|
||||
VisualiseGPUSettings();
|
||||
}
|
||||
|
||||
static string ChartPercToRPM(int percentage, string unit = "")
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.57</AssemblyVersion>
|
||||
<AssemblyVersion>0.58</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -48,15 +48,15 @@ public class NvidiaGpuControl : IGpuControl
|
||||
public void GetClocks(out int core, out int memory)
|
||||
{
|
||||
PhysicalGPU internalGpu = _internalGpu!;
|
||||
PerformanceStates20InfoV3 states = (PerformanceStates20InfoV3)GPUApi.GetPerformanceStates20(internalGpu.Handle);
|
||||
PerformanceStates20InfoV1 states = (PerformanceStates20InfoV1)GPUApi.GetPerformanceStates20(internalGpu.Handle);
|
||||
core = states.Clocks[PerformanceStateId.P0_3DPerformance][0].FrequencyDeltaInkHz.DeltaValue / 1000;
|
||||
memory = states.Clocks[PerformanceStateId.P0_3DPerformance][1].FrequencyDeltaInkHz.DeltaValue / 1000;
|
||||
}
|
||||
|
||||
public int SetClocksFromConfig()
|
||||
{
|
||||
int core = Program.config.getConfig("GPUCore");
|
||||
int memory = Program.config.getConfig("GPUMemory");
|
||||
int core = Program.config.getConfig("gpu_core");
|
||||
int memory = Program.config.getConfig("gpu_memory");
|
||||
int status = SetClocks(core, memory);
|
||||
return status;
|
||||
}
|
||||
@@ -68,7 +68,7 @@ public class NvidiaGpuControl : IGpuControl
|
||||
if (memory < MinMemoryOffset || memory > MaxMemoryOffset) return 0;
|
||||
|
||||
PhysicalGPU internalGpu = _internalGpu!;
|
||||
PerformanceStates20InfoV3 states = (PerformanceStates20InfoV3)GPUApi.GetPerformanceStates20(internalGpu.Handle);
|
||||
PerformanceStates20InfoV1 states = (PerformanceStates20InfoV1)GPUApi.GetPerformanceStates20(internalGpu.Handle);
|
||||
|
||||
states._NumberOfPerformanceStates = 1;
|
||||
states._NumberOfClocks = 2;
|
||||
@@ -96,8 +96,9 @@ public class NvidiaGpuControl : IGpuControl
|
||||
.GetPhysicalGPUs()
|
||||
.FirstOrDefault(gpu => gpu.SystemType == SystemType.Laptop);
|
||||
}
|
||||
catch
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -430,9 +430,9 @@ namespace NvAPIWrapper.Native.Delegates
|
||||
public delegate Status NvAPI_GPU_GetPStates20(
|
||||
[In] PhysicalGPUHandle physicalGpu,
|
||||
[Accepts(
|
||||
typeof(PerformanceStates20InfoV3),
|
||||
typeof(PerformanceStates20InfoV1),
|
||||
typeof(PerformanceStates20InfoV2),
|
||||
typeof(PerformanceStates20InfoV1)
|
||||
typeof(PerformanceStates20InfoV3)
|
||||
)]
|
||||
[In]
|
||||
ValueTypeReference performanceStatesInfo);
|
||||
|
||||
@@ -1043,6 +1043,26 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
public void SetGPUPower()
|
||||
{
|
||||
|
||||
int gpu_boost = Program.config.getConfig("gpu_boost");
|
||||
int gpu_temp = Program.config.getConfig("gpu_temp");
|
||||
|
||||
if (gpu_boost < ASUSWmi.MinGPUBoost || gpu_boost > ASUSWmi.MaxGPUBoost ) return;
|
||||
if (gpu_temp < ASUSWmi.MinGPUTemp || gpu_temp > ASUSWmi.MaxGPUTemp) return;
|
||||
|
||||
if (Program.wmi.DeviceGet(ASUSWmi.PPT_GPUC0) >= 0)
|
||||
{
|
||||
Program.wmi.DeviceSet(ASUSWmi.PPT_GPUC0, gpu_boost, "PowerLimit C0");
|
||||
}
|
||||
|
||||
if (Program.wmi.DeviceGet(ASUSWmi.PPT_GPUC2) >= 0)
|
||||
{
|
||||
Program.wmi.DeviceSet(ASUSWmi.PPT_GPUC2, gpu_temp, "PowerLimit C2");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void LabelFansResult(string text)
|
||||
{
|
||||
|
||||
5
app/global.json
Normal file
5
app/global.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sdk": {
|
||||
"version": "7.0.203"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user