Undervolting

This commit is contained in:
Serge
2023-06-17 10:32:30 +02:00
parent 05aae069b4
commit 0b030da41b
21 changed files with 2987 additions and 322 deletions

View File

@@ -1,8 +1,10 @@
using CustomControls;
using GHelper.Gpu;
using Ryzen;
using System;
using System.Diagnostics;
using System.Net.Sockets;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace GHelper
@@ -31,13 +33,12 @@ namespace GHelper
InitializeComponent();
float dpi = ControlHelper.GetDpiScale(this).Value;
comboModes.Size = new Size((int)dpi*150, (int)dpi * 18);
comboModes.ClientSize = new Size((int)dpi * 150, (int)dpi * 18);
//float dpi = ControlHelper.GetDpiScale(this).Value;
//comboModes.Size = new Size(comboModes.Width, (int)dpi * 18);
comboModes.ClientSize = new Size(comboModes.Width, comboModes.Height - 4);
Text = Properties.Strings.FansAndPower;
labelPowerLimits.Text = Properties.Strings.PowerLimits;
labelInfo.Text = Properties.Strings.PPTExperimental;
checkApplyPower.Text = Properties.Strings.ApplyPowerLimits;
labelFans.Text = Properties.Strings.FanCurves;
@@ -129,16 +130,10 @@ namespace GHelper
trackGPUTemp.MouseUp += TrackGPU_MouseUp;
//labelInfo.MaximumSize = new Size(280, 0);
labelInfo.Text = Properties.Strings.PPTExperimental;
labelFansResult.Visible = false;
FillModes();
InitMode();
InitFans();
InitPower();
InitBoost();
InitGPU(true);
InitAll();
comboBoost.SelectedValueChanged += ComboBoost_Changed;
@@ -152,6 +147,132 @@ namespace GHelper
buttonRemove.Click += ButtonRemove_Click;
buttonRename.Click += ButtonRename_Click;
trackUV.Minimum = -30;
trackUV.Maximum = 0;
trackUViGPU.Minimum = -20;
trackUViGPU.Maximum = 0;
trackUV.Scroll += TrackUV_Scroll;
trackUViGPU.Scroll += TrackUV_Scroll;
buttonApplyAdvanced.Click += ButtonApplyAdvanced_Click;
buttonCPU.BorderColor = colorStandard;
buttonGPU.BorderColor = colorTurbo;
buttonAdvanced.BorderColor = Color.Gray;
buttonCPU.Click += ButtonCPU_Click;
buttonGPU.Click += ButtonGPU_Click;
buttonAdvanced.Click += ButtonAdvanced_Click;
checkApplyUV.Click += CheckApplyUV_Click;
ToggleNavigation(0);
}
private void CheckApplyUV_Click(object? sender, EventArgs e)
{
AppConfig.SetMode("auto_uv", checkApplyUV.Checked ? 1 : 0);
}
public void InitAll()
{
InitMode();
InitFans();
InitPower();
InitBoost();
InitUV();
InitGPU();
}
public void ToggleNavigation(int index = 0)
{
SuspendLayout();
buttonCPU.Activated = false;
buttonGPU.Activated = false;
buttonAdvanced.Activated = false;
panelPower.Visible = false;
panelGPU.Visible = false;
panelAdvanced.Visible = false;
switch (index)
{
case 1:
buttonGPU.Activated = true;
panelGPU.Visible = true;
break;
case 2:
buttonAdvanced.Activated = true;
panelAdvanced.Visible = true;
break;
default:
buttonCPU.Activated = true;
panelPower.Visible = true;
break;
}
ResumeLayout(false);
PerformLayout();
}
private void ButtonAdvanced_Click(object? sender, EventArgs e)
{
ToggleNavigation(2);
}
private void ButtonGPU_Click(object? sender, EventArgs e)
{
ToggleNavigation(1);
}
private void ButtonCPU_Click(object? sender, EventArgs e)
{
ToggleNavigation(0);
}
private void ButtonApplyAdvanced_Click(object? sender, EventArgs e)
{
Program.settingsForm.SetUV(true);
checkApplyUV.Enabled = true;
}
public void InitUV()
{
//if (!ProcessHelper.IsUserAdministrator()) return;
int cpuUV = Math.Max(trackUV.Minimum, Math.Min(trackUV.Maximum, AppConfig.GetMode("cpu_uv", 0)));
int igpuUV = Math.Max(trackUViGPU.Minimum, Math.Min(trackUViGPU.Maximum, AppConfig.GetMode("igpu_uv", 0)));
checkApplyUV.Enabled = checkApplyUV.Checked = AppConfig.IsMode("auto_uv");
trackUV.Value = cpuUV;
labelUV.Text = trackUV.Value.ToString();
trackUViGPU.Value = igpuUV;
labelUViGPU.Text = trackUViGPU.Value.ToString();
buttonAdvanced.Visible = Undervolter.IsAMD();
}
private void TrackUV_Scroll(object? sender, EventArgs e)
{
AppConfig.SetMode("auto_uv", 0);
checkApplyUV.Enabled = checkApplyUV.Checked = false;
labelUV.Text = trackUV.Value.ToString();
labelUViGPU.Text = trackUViGPU.Value.ToString();
AppConfig.SetMode("cpu_uv", trackUV.Value);
AppConfig.SetMode("igpu_uv", trackUViGPU.Value);
}
private void ComboModes_KeyPress(object? sender, KeyPressEventArgs e)
@@ -235,12 +356,12 @@ namespace GHelper
Program.settingsForm.SetGPUClocks(true);
}
public void InitGPU(bool readClocks = false)
public void InitGPU()
{
if (Program.acpi.DeviceGet(AsusACPI.GPUEco) == 1)
{
gpuVisible = panelGPU.Visible = false;
gpuVisible = buttonGPU.Visible = false;
return;
}
@@ -252,13 +373,13 @@ namespace GHelper
}
else
{
gpuVisible = panelGPU.Visible = false;
gpuVisible = buttonGPU.Visible = false;
return;
}
try
{
gpuVisible = panelGPU.Visible = true;
gpuVisible = buttonGPU.Visible = true;
int gpu_boost = AppConfig.GetMode("gpu_boost");
int gpu_temp = AppConfig.GetMode("gpu_temp");
@@ -306,7 +427,7 @@ namespace GHelper
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
gpuVisible = panelGPU.Visible = false;
gpuVisible = buttonGPU.Visible = false;
}
}
@@ -691,6 +812,11 @@ namespace GHelper
if (Program.acpi.IsXGConnected())
AsusUSB.ResetXGM();
trackUV.Value = 0;
trackUViGPU.Value = 0;
AppConfig.SetMode("cpu_uv", 0);
AppConfig.SetMode("igpu_uv", 0);
if (gpuVisible)
{
trackGPUCore.Value = 0;