Compare commits

...

5 Commits
v0.79 ... 0.80

Author SHA1 Message Date
Serge
57ffcb8c7f Added manual mode config flag 2023-06-06 22:54:08 +02:00
Serge
5425bd0128 Color Profiles 2023-06-06 22:06:45 +02:00
Serge
328cd8f9f1 Minor refactoring 2023-06-06 13:17:13 +02:00
Serge
38739ca8f6 CPU power limits 2023-06-06 11:38:11 +02:00
Serge
a3e235e886 Added PPT fix for M16, G17 (2023) and F15 (2022) 2023-06-06 10:59:49 +02:00
9 changed files with 343 additions and 257 deletions

View File

@@ -227,6 +227,12 @@ public static class AppConfig
return getConfig(name + "_" + mode); return getConfig(name + "_" + mode);
} }
public static bool isConfigPerf(string name)
{
int mode = getConfig("performance_mode");
return getConfig(name + "_" + mode) == 1;
}
public static void setConfigPerf(string name, int value) public static void setConfigPerf(string name, int value)
{ {
int mode = getConfig("performance_mode"); int mode = getConfig("performance_mode");

View File

@@ -360,17 +360,9 @@ namespace GHelper
{ {
if (sender is null) return; if (sender is null) return;
CheckBox chk = (CheckBox)sender; CheckBox chk = (CheckBox)sender;
AppConfig.setConfigPerf("auto_apply_power", chk.Checked ? 1 : 0);
if (chk.Checked) AppConfig.setConfigPerf("auto_apply_power", chk.Checked ? 1 : 0);
{ Program.settingsForm.SetPerformanceMode();
Program.settingsForm.AutoPower();
}
else
{
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "PerfMode");
Program.settingsForm.AutoFans();
}
} }
@@ -380,16 +372,8 @@ namespace GHelper
CheckBox chk = (CheckBox)sender; CheckBox chk = (CheckBox)sender;
AppConfig.setConfigPerf("auto_apply", chk.Checked ? 1 : 0); AppConfig.setConfigPerf("auto_apply", chk.Checked ? 1 : 0);
Program.settingsForm.SetPerformanceMode();
if (chk.Checked)
{
Program.settingsForm.AutoFans();
}
else
{
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "PerfMode");
Program.settingsForm.AutoPower();
}
} }
@@ -440,7 +424,7 @@ namespace GHelper
int limit_cpu; int limit_cpu;
int limit_fast; int limit_fast;
bool apply = AppConfig.getConfigPerf("auto_apply_power") == 1; bool apply = AppConfig.isConfigPerf("auto_apply_power");
if (changed) if (changed)
{ {
@@ -621,9 +605,13 @@ namespace GHelper
AppConfig.setConfigPerf("auto_apply", 0); AppConfig.setConfigPerf("auto_apply", 0);
AppConfig.setConfigPerf("auto_apply_power", 0); AppConfig.setConfigPerf("auto_apply_power", 0);
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "PerfMode"); Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "Mode");
if (Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
if (Program.acpi.IsXGConnected())
AsusUSB.ResetXGM();
if (gpuVisible)
{
trackGPUCore.Value = 0; trackGPUCore.Value = 0;
trackGPUMemory.Value = 0; trackGPUMemory.Value = 0;
trackGPUBoost.Value = AsusACPI.MaxGPUBoost; trackGPUBoost.Value = AsusACPI.MaxGPUBoost;
@@ -633,12 +621,14 @@ namespace GHelper
AppConfig.setConfigPerf("gpu_temp", trackGPUTemp.Value); AppConfig.setConfigPerf("gpu_temp", trackGPUTemp.Value);
AppConfig.setConfigPerf("gpu_core", trackGPUCore.Value); AppConfig.setConfigPerf("gpu_core", trackGPUCore.Value);
AppConfig.setConfigPerf("gpu_memory", trackGPUMemory.Value); AppConfig.setConfigPerf("gpu_memory", trackGPUMemory.Value);
VisualiseGPUSettings();
VisualiseGPUSettings();
Program.settingsForm.SetGPUClocks(true); Program.settingsForm.SetGPUClocks(true);
Program.settingsForm.SetGPUPower(); Program.settingsForm.SetGPUPower();
} }
}
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e) private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
{ {
curPoint = null; curPoint = null;

View File

@@ -16,7 +16,7 @@
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly> <ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks> <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.79</AssemblyVersion> <AssemblyVersion>0.80</AssemblyVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -588,6 +588,42 @@ public class NativeMethods
return dm; return dm;
} }
public enum COLORPROFILETYPE
{
CPT_ICC,
CPT_DMP,
CPT_CAMP,
CPT_GMMP
}
public enum COLORPROFILESUBTYPE
{
CPST_PERCEPTUAL,
CPST_RELATIVE_COLORIMETRIC,
CPST_SATURATION,
CPST_ABSOLUTE_COLORIMETRIC,
CPST_NONE,
CPST_RGB_WORKING_SPACE,
CPST_CUSTOM_WORKING_SPACE,
CPST_STANDARD_DISPLAY_COLOR_MODE,
CPST_EXTENDED_DISPLAY_COLOR_MODE
}
public enum WCS_PROFILE_MANAGEMENT_SCOPE
{
WCS_PROFILE_MANAGEMENT_SCOPE_SYSTEM_WIDE,
WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER
}
[DllImport("mscms.dll", CharSet = CharSet.Unicode)]
public static extern bool WcsSetDefaultColorProfile(
WCS_PROFILE_MANAGEMENT_SCOPE scope,
string pDeviceName,
COLORPROFILETYPE cptColorProfileType,
COLORPROFILESUBTYPE cpstColorProfileSubType,
uint dwProfileID,
string pProfileName
);
public const int ENUM_CURRENT_SETTINGS = -1; public const int ENUM_CURRENT_SETTINGS = -1;
public const string defaultDevice = "\\\\.\\DISPLAY1"; public const string defaultDevice = "\\\\.\\DISPLAY1";

View File

@@ -201,6 +201,9 @@
<data name="BatteryChargeLimit" xml:space="preserve"> <data name="BatteryChargeLimit" xml:space="preserve">
<value>Ліміт заряду батареї</value> <value>Ліміт заряду батареї</value>
</data> </data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Оновлення BIOS та драйверів</value>
</data>
<data name="Boot" xml:space="preserve"> <data name="Boot" xml:space="preserve">
<value>Старт</value> <value>Старт</value>
</data> </data>
@@ -228,6 +231,9 @@
<data name="DownloadUpdate" xml:space="preserve"> <data name="DownloadUpdate" xml:space="preserve">
<value>Завантажити</value> <value>Завантажити</value>
</data> </data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Драйвери та програми</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve"> <data name="EcoGPUTooltip" xml:space="preserve">
<value>Вимикає dGPU, щоб зберегти заряд</value> <value>Вимикає dGPU, щоб зберегти заряд</value>
</data> </data>
@@ -408,6 +414,9 @@
<data name="ToggleAura" xml:space="preserve"> <data name="ToggleAura" xml:space="preserve">
<value>Аура</value> <value>Аура</value>
</data> </data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve"> <data name="ToggleMiniled" xml:space="preserve">
<value>Міні-лед (якщо є)</value> <value>Міні-лед (якщо є)</value>
</data> </data>
@@ -429,6 +438,9 @@
<data name="UltimateMode" xml:space="preserve"> <data name="UltimateMode" xml:space="preserve">
<value>Ультімейт</value> <value>Ультімейт</value>
</data> </data>
<data name="Updates" xml:space="preserve">
<value>Оновлення</value>
</data>
<data name="VersionLabel" xml:space="preserve"> <data name="VersionLabel" xml:space="preserve">
<value>Версія</value> <value>Версія</value>
</data> </data>

View File

@@ -201,6 +201,9 @@
<data name="BatteryChargeLimit" xml:space="preserve"> <data name="BatteryChargeLimit" xml:space="preserve">
<value>電池充電上限</value> <value>電池充電上限</value>
</data> </data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS與驅動程式更新 Updates</value>
</data>
<data name="Boot" xml:space="preserve"> <data name="Boot" xml:space="preserve">
<value>開機時</value> <value>開機時</value>
</data> </data>
@@ -228,6 +231,9 @@
<data name="DownloadUpdate" xml:space="preserve"> <data name="DownloadUpdate" xml:space="preserve">
<value>下載更新</value> <value>下載更新</value>
</data> </data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>驅動程式與軟體</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve"> <data name="EcoGPUTooltip" xml:space="preserve">
<value>禁用獨顯以節省電池電量</value> <value>禁用獨顯以節省電池電量</value>
</data> </data>
@@ -247,10 +253,10 @@
<value>風扇曲線</value> <value>風扇曲線</value>
</data> </data>
<data name="FanProfileCPU" xml:space="preserve"> <data name="FanProfileCPU" xml:space="preserve">
<value>CPU 風扇設置文件</value> <value>CPU 風扇設定檔</value>
</data> </data>
<data name="FanProfileGPU" xml:space="preserve"> <data name="FanProfileGPU" xml:space="preserve">
<value>GPU 風扇設置文件</value> <value>GPU 風扇設定檔</value>
</data> </data>
<data name="FanProfileMid" xml:space="preserve"> <data name="FanProfileMid" xml:space="preserve">
<value>中等風扇設置</value> <value>中等風扇設置</value>
@@ -268,7 +274,7 @@
<value>自定義設置</value> <value>自定義設置</value>
</data> </data>
<data name="FnLock" xml:space="preserve"> <data name="FnLock" xml:space="preserve">
<value>使用Fn+F1~F12功能時不須按下Fn鍵</value> <value>使用Fn+F1~F12功能時按下Fn鍵</value>
</data> </data>
<data name="GPUBoost" xml:space="preserve"> <data name="GPUBoost" xml:space="preserve">
<value>Dynamic Boost</value> <value>Dynamic Boost</value>
@@ -331,7 +337,7 @@
<value>Logo</value> <value>Logo</value>
</data> </data>
<data name="MatrixAudio" xml:space="preserve"> <data name="MatrixAudio" xml:space="preserve">
<value>Audio Visualizer</value> <value>音效視覺化</value>
</data> </data>
<data name="MatrixBanner" xml:space="preserve"> <data name="MatrixBanner" xml:space="preserve">
<value>横幅</value> <value>横幅</value>
@@ -400,7 +406,7 @@
<value>功率限制 (PPT)</value> <value>功率限制 (PPT)</value>
</data> </data>
<data name="PPTExperimental" xml:space="preserve"> <data name="PPTExperimental" xml:space="preserve">
<value>功率限制 (PPT) 是實驗性功能。 謹慎使用風險自負</value> <value>功率限制是實驗性功能。謹慎使用,風險自負!</value>
</data> </data>
<data name="PrintScreen" xml:space="preserve"> <data name="PrintScreen" xml:space="preserve">
<value>截圖</value> <value>截圖</value>
@@ -438,6 +444,9 @@
<data name="ToggleAura" xml:space="preserve"> <data name="ToggleAura" xml:space="preserve">
<value>切換Aura</value> <value>切換Aura</value>
</data> </data>
<data name="ToggleFnLock" xml:space="preserve">
<value>免按Fn鍵使用Fn+F1~F12功能</value>
</data>
<data name="ToggleMiniled" xml:space="preserve"> <data name="ToggleMiniled" xml:space="preserve">
<value>切換Miniled(若有支援)</value> <value>切換Miniled(若有支援)</value>
</data> </data>
@@ -459,6 +468,9 @@
<data name="UltimateMode" xml:space="preserve"> <data name="UltimateMode" xml:space="preserve">
<value>獨顯直連</value> <value>獨顯直連</value>
</data> </data>
<data name="Updates" xml:space="preserve">
<value>更新驅動</value>
</data>
<data name="VersionLabel" xml:space="preserve"> <data name="VersionLabel" xml:space="preserve">
<value>版本</value> <value>版本</value>
</data> </data>

View File

@@ -353,7 +353,7 @@ namespace GHelper
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM"); Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
await Task.Delay(TimeSpan.FromSeconds(15)); await Task.Delay(TimeSpan.FromSeconds(15));
if (AppConfig.getConfigPerf("auto_apply") == 1) if (AppConfig.isConfigPerf("auto_apply"))
AsusUSB.SetXGMFan(AppConfig.getFanConfig(AsusFan.XGM)); AsusUSB.SetXGMFan(AppConfig.getFanConfig(AsusFan.XGM));
} }
@@ -1139,7 +1139,7 @@ namespace GHelper
{ {
customFans = false; customFans = false;
if (AppConfig.getConfigPerf("auto_apply") == 1 || force) if (AppConfig.isConfigPerf("auto_apply") || force)
{ {
bool xgmFan = false; bool xgmFan = false;
@@ -1162,7 +1162,7 @@ namespace GHelper
{ {
int mode = AppConfig.getConfig("performance_mode"); int mode = AppConfig.getConfig("performance_mode");
Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode); Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode);
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "PerformanceMode"); Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "Reset Mode");
LabelFansResult("ASUS BIOS rejected fan curve"); LabelFansResult("ASUS BIOS rejected fan curve");
} }
else else
@@ -1171,8 +1171,8 @@ namespace GHelper
customFans = true; customFans = true;
} }
// fix for misbehaving bios on intell based TUF 2022 // force set PPTs for missbehaving bios on FX507/517 series
if ((AppConfig.ContainsModel("FX507") || AppConfig.ContainsModel("FX517") || xgmFan) && AppConfig.getConfigPerf("auto_apply_power") != 1) if ((AppConfig.ContainsModel("FX507") || AppConfig.ContainsModel("FX517") || xgmFan) && !AppConfig.isConfigPerf("auto_apply_power"))
{ {
Task.Run(async () => Task.Run(async () =>
{ {
@@ -1188,22 +1188,42 @@ namespace GHelper
} }
private static bool isManualModeRequired()
{
if (!AppConfig.isConfigPerf("auto_apply_power"))
return false;
return
AppConfig.isConfig("manual_mode") ||
AppConfig.ContainsModel("GU604") ||
AppConfig.ContainsModel("FX517") ||
AppConfig.ContainsModel("G733");
}
public void AutoPower(int delay = 0) public void AutoPower(int delay = 0)
{ {
// fix for misbehaving bios PPTs on G513
if (AppConfig.ContainsModel("G513") && AppConfig.getConfigPerf("auto_apply") != 1)
{
AutoFans(true);
delay = 500;
}
customPower = 0; customPower = 0;
bool applyPower = AppConfig.getConfigPerf("auto_apply_power") == 1; bool applyPower = AppConfig.isConfigPerf("auto_apply_power");
bool applyGPU = true; bool applyFans = AppConfig.isConfigPerf("auto_apply");
//bool applyGPU = true;
//if (applyPower) Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AsusACPI.PerformanceManual, "CustomMode"); if (applyPower)
{
// force fan curve for misbehaving bios PPTs on G513
if (AppConfig.ContainsModel("G513") && !applyFans)
{
delay = 500;
AutoFans(true);
}
// Fix for models that don't support PPT settings in all modes, setting a "manual" mode for them
if (isManualModeRequired() && !applyFans)
{
AutoFans(true);
}
}
if (delay > 0) if (delay > 0)
{ {
@@ -1229,8 +1249,8 @@ namespace GHelper
public void SetPerformanceMode(int PerformanceMode = -1, bool notify = false) public void SetPerformanceMode(int PerformanceMode = -1, bool notify = false)
{ {
if (PerformanceMode < 0) int oldMode = AppConfig.getConfig("performance_mode");
PerformanceMode = AppConfig.getConfig("performance_mode"); if (PerformanceMode < 0) PerformanceMode = oldMode;
buttonSilent.Activated = false; buttonSilent.Activated = false;
buttonBalanced.Activated = false; buttonBalanced.Activated = false;
@@ -1257,11 +1277,14 @@ namespace GHelper
menuBalanced.Checked = buttonBalanced.Activated; menuBalanced.Checked = buttonBalanced.Activated;
menuTurbo.Checked = buttonTurbo.Activated; menuTurbo.Checked = buttonTurbo.Activated;
int oldMode = AppConfig.getConfig("performance_mode");
AppConfig.setConfig("performance_" + (int)SystemInformation.PowerStatus.PowerLineStatus, PerformanceMode); AppConfig.setConfig("performance_" + (int)SystemInformation.PowerStatus.PowerLineStatus, PerformanceMode);
AppConfig.setConfig("performance_mode", PerformanceMode); AppConfig.setConfig("performance_mode", PerformanceMode);
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, PerformanceMode, "PerformanceMode"); if (isManualModeRequired())
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AsusACPI.PerformanceManual, "Manual Mode");
else
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, PerformanceMode, "Mode");
if (AppConfig.isConfig("xgm_fan") && Program.acpi.IsXGConnected()) AsusUSB.ResetXGM(); if (AppConfig.isConfig("xgm_fan") && Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
if (notify && (oldMode != PerformanceMode)) if (notify && (oldMode != PerformanceMode))

View File

@@ -106,7 +106,7 @@ namespace WinFormsSliderBar
private void RecalculateParameters() private void RecalculateParameters()
{ {
_radius = 0.4F * ClientSize.Height; _radius = 0.4F * ClientSize.Height;
_barSize = new SizeF(ClientSize.Width - 4 * _radius, ClientSize.Height * 0.15F); _barSize = new SizeF(ClientSize.Width - 2 * _radius, ClientSize.Height * 0.15F);
_barPos = new PointF(_radius, (ClientSize.Height - _barSize.Height) / 2); _barPos = new PointF(_radius, (ClientSize.Height - _barSize.Height) / 2);
_thumbPos = new PointF( _thumbPos = new PointF(
_barSize.Width / (Max - Min) * (Value - Min) + _barPos.X, _barSize.Width / (Max - Min) * (Value - Min) + _barPos.X,

View File

@@ -44,8 +44,10 @@ namespace GHelper
} }
private Dictionary<string, string> GetDeviceVersions() private Dictionary<string, string> GetDeviceVersions()
{ {
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("Select * from Win32_PnPSignedDriver"); using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("Select * from Win32_PnPSignedDriver"))
ManagementObjectCollection objCollection = objSearcher.Get(); {
using (ManagementObjectCollection objCollection = objSearcher.Get())
{
Dictionary<string, string> list = new(); Dictionary<string, string> list = new();
foreach (ManagementObject obj in objCollection) foreach (ManagementObject obj in objCollection)
@@ -56,12 +58,15 @@ namespace GHelper
return list; return list;
} }
}
}
private string GetBiosVersion() private string GetBiosVersion()
{ {
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS"); using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS"))
ManagementObjectCollection objCollection = objSearcher.Get(); {
using (ManagementObjectCollection objCollection = objSearcher.Get())
{
foreach (ManagementObject obj in objCollection) foreach (ManagementObject obj in objCollection)
if (obj["SMBIOSBIOSVersion"] is not null) if (obj["SMBIOSBIOSVersion"] is not null)
{ {
@@ -73,6 +78,8 @@ namespace GHelper
return ""; return "";
} }
}
}
public async void DriversAsync(string url, int type, TableLayoutPanel table) public async void DriversAsync(string url, int type, TableLayoutPanel table)
{ {