Eco mode GPU fix

This commit is contained in:
Serge
2023-08-09 18:43:19 +02:00
parent 7d5bd42f53
commit ea61e428da
4 changed files with 44 additions and 12 deletions

View File

@@ -356,5 +356,9 @@ public static class AppConfig
return ContainsModel("FX507") || ContainsModel("FX517") || ContainsModel("FX707"); return ContainsModel("FX507") || ContainsModel("FX517") || ContainsModel("FX707");
} }
public static bool IsGPUFix()
{
return ContainsModel("GA402X") && (Get("gpu_fix") != 0);
}
} }

38
app/Extra.Designer.cs generated
View File

@@ -109,6 +109,7 @@ namespace GHelper
checkUSBC = new CheckBox(); checkUSBC = new CheckBox();
checkVariBright = new CheckBox(); checkVariBright = new CheckBox();
checkGpuApps = new CheckBox(); checkGpuApps = new CheckBox();
checkGPUFix = new CheckBox();
checkFnLock = new CheckBox(); checkFnLock = new CheckBox();
panelPower = new Panel(); panelPower = new Panel();
numericHibernateAfter = new NumericUpDown(); numericHibernateAfter = new NumericUpDown();
@@ -146,7 +147,7 @@ namespace GHelper
panelServices.Controls.Add(labelServices); panelServices.Controls.Add(labelServices);
panelServices.Controls.Add(buttonServices); panelServices.Controls.Add(buttonServices);
panelServices.Dock = DockStyle.Top; panelServices.Dock = DockStyle.Top;
panelServices.Location = new Point(15, 1341); panelServices.Location = new Point(15, 1383);
panelServices.Name = "panelServices"; panelServices.Name = "panelServices";
panelServices.Size = new Size(983, 75); panelServices.Size = new Size(983, 75);
panelServices.TabIndex = 5; panelServices.TabIndex = 5;
@@ -1068,19 +1069,20 @@ namespace GHelper
panelSettings.Controls.Add(checkUSBC); panelSettings.Controls.Add(checkUSBC);
panelSettings.Controls.Add(checkVariBright); panelSettings.Controls.Add(checkVariBright);
panelSettings.Controls.Add(checkGpuApps); panelSettings.Controls.Add(checkGpuApps);
panelSettings.Controls.Add(checkGPUFix);
panelSettings.Controls.Add(checkFnLock); panelSettings.Controls.Add(checkFnLock);
panelSettings.Dock = DockStyle.Top; panelSettings.Dock = DockStyle.Top;
panelSettings.Location = new Point(15, 921); panelSettings.Location = new Point(15, 921);
panelSettings.Name = "panelSettings"; panelSettings.Name = "panelSettings";
panelSettings.Padding = new Padding(20, 5, 11, 5); panelSettings.Padding = new Padding(20, 5, 11, 5);
panelSettings.Size = new Size(983, 346); panelSettings.Size = new Size(983, 388);
panelSettings.TabIndex = 3; panelSettings.TabIndex = 3;
// //
// checkAutoToggleClamshellMode // checkAutoToggleClamshellMode
// //
checkAutoToggleClamshellMode.AutoSize = true; checkAutoToggleClamshellMode.AutoSize = true;
checkAutoToggleClamshellMode.Dock = DockStyle.Top; checkAutoToggleClamshellMode.Dock = DockStyle.Top;
checkAutoToggleClamshellMode.Location = new Point(20, 299); checkAutoToggleClamshellMode.Location = new Point(20, 341);
checkAutoToggleClamshellMode.Name = "checkAutoToggleClamshellMode"; checkAutoToggleClamshellMode.Name = "checkAutoToggleClamshellMode";
checkAutoToggleClamshellMode.Padding = new Padding(3); checkAutoToggleClamshellMode.Padding = new Padding(3);
checkAutoToggleClamshellMode.Size = new Size(952, 42); checkAutoToggleClamshellMode.Size = new Size(952, 42);
@@ -1092,7 +1094,7 @@ namespace GHelper
// //
checkAutoApplyWindowsPowerMode.AutoSize = true; checkAutoApplyWindowsPowerMode.AutoSize = true;
checkAutoApplyWindowsPowerMode.Dock = DockStyle.Top; checkAutoApplyWindowsPowerMode.Dock = DockStyle.Top;
checkAutoApplyWindowsPowerMode.Location = new Point(20, 257); checkAutoApplyWindowsPowerMode.Location = new Point(20, 299);
checkAutoApplyWindowsPowerMode.Margin = new Padding(4, 3, 4, 3); checkAutoApplyWindowsPowerMode.Margin = new Padding(4, 3, 4, 3);
checkAutoApplyWindowsPowerMode.Name = "checkAutoApplyWindowsPowerMode"; checkAutoApplyWindowsPowerMode.Name = "checkAutoApplyWindowsPowerMode";
checkAutoApplyWindowsPowerMode.Padding = new Padding(3); checkAutoApplyWindowsPowerMode.Padding = new Padding(3);
@@ -1105,7 +1107,7 @@ namespace GHelper
// //
checkTopmost.AutoSize = true; checkTopmost.AutoSize = true;
checkTopmost.Dock = DockStyle.Top; checkTopmost.Dock = DockStyle.Top;
checkTopmost.Location = new Point(20, 215); checkTopmost.Location = new Point(20, 257);
checkTopmost.Margin = new Padding(4, 3, 4, 3); checkTopmost.Margin = new Padding(4, 3, 4, 3);
checkTopmost.Name = "checkTopmost"; checkTopmost.Name = "checkTopmost";
checkTopmost.Padding = new Padding(3); checkTopmost.Padding = new Padding(3);
@@ -1118,7 +1120,7 @@ namespace GHelper
// //
checkNoOverdrive.AutoSize = true; checkNoOverdrive.AutoSize = true;
checkNoOverdrive.Dock = DockStyle.Top; checkNoOverdrive.Dock = DockStyle.Top;
checkNoOverdrive.Location = new Point(20, 173); checkNoOverdrive.Location = new Point(20, 215);
checkNoOverdrive.Margin = new Padding(4, 3, 4, 3); checkNoOverdrive.Margin = new Padding(4, 3, 4, 3);
checkNoOverdrive.Name = "checkNoOverdrive"; checkNoOverdrive.Name = "checkNoOverdrive";
checkNoOverdrive.Padding = new Padding(3); checkNoOverdrive.Padding = new Padding(3);
@@ -1131,7 +1133,7 @@ namespace GHelper
// //
checkUSBC.AutoSize = true; checkUSBC.AutoSize = true;
checkUSBC.Dock = DockStyle.Top; checkUSBC.Dock = DockStyle.Top;
checkUSBC.Location = new Point(20, 131); checkUSBC.Location = new Point(20, 173);
checkUSBC.Margin = new Padding(4, 3, 4, 3); checkUSBC.Margin = new Padding(4, 3, 4, 3);
checkUSBC.Name = "checkUSBC"; checkUSBC.Name = "checkUSBC";
checkUSBC.Padding = new Padding(3); checkUSBC.Padding = new Padding(3);
@@ -1144,7 +1146,7 @@ namespace GHelper
// //
checkVariBright.AutoSize = true; checkVariBright.AutoSize = true;
checkVariBright.Dock = DockStyle.Top; checkVariBright.Dock = DockStyle.Top;
checkVariBright.Location = new Point(20, 89); checkVariBright.Location = new Point(20, 131);
checkVariBright.Margin = new Padding(4, 3, 4, 3); checkVariBright.Margin = new Padding(4, 3, 4, 3);
checkVariBright.Name = "checkVariBright"; checkVariBright.Name = "checkVariBright";
checkVariBright.Padding = new Padding(3); checkVariBright.Padding = new Padding(3);
@@ -1157,7 +1159,7 @@ namespace GHelper
// //
checkGpuApps.AutoSize = true; checkGpuApps.AutoSize = true;
checkGpuApps.Dock = DockStyle.Top; checkGpuApps.Dock = DockStyle.Top;
checkGpuApps.Location = new Point(20, 47); checkGpuApps.Location = new Point(20, 89);
checkGpuApps.Margin = new Padding(4, 3, 4, 3); checkGpuApps.Margin = new Padding(4, 3, 4, 3);
checkGpuApps.Name = "checkGpuApps"; checkGpuApps.Name = "checkGpuApps";
checkGpuApps.Padding = new Padding(3); checkGpuApps.Padding = new Padding(3);
@@ -1166,6 +1168,19 @@ namespace GHelper
checkGpuApps.Text = "Stop all apps using GPU when switching to Eco"; checkGpuApps.Text = "Stop all apps using GPU when switching to Eco";
checkGpuApps.UseVisualStyleBackColor = true; checkGpuApps.UseVisualStyleBackColor = true;
// //
// checkGPUFix
//
checkGPUFix.AutoSize = true;
checkGPUFix.Dock = DockStyle.Top;
checkGPUFix.Location = new Point(20, 47);
checkGPUFix.Margin = new Padding(4, 3, 4, 3);
checkGPUFix.Name = "checkGPUFix";
checkGPUFix.Padding = new Padding(3);
checkGPUFix.Size = new Size(952, 42);
checkGPUFix.TabIndex = 9;
checkGPUFix.Text = "Enable GPU on shutdown (prevents issue with Eco mode)";
checkGPUFix.UseVisualStyleBackColor = true;
//
// checkFnLock // checkFnLock
// //
checkFnLock.AutoSize = true; checkFnLock.AutoSize = true;
@@ -1186,7 +1201,7 @@ namespace GHelper
panelPower.Controls.Add(labelHibernateAfter); panelPower.Controls.Add(labelHibernateAfter);
panelPower.Controls.Add(pictureHibernate); panelPower.Controls.Add(pictureHibernate);
panelPower.Dock = DockStyle.Top; panelPower.Dock = DockStyle.Top;
panelPower.Location = new Point(15, 1267); panelPower.Location = new Point(15, 1309);
panelPower.Name = "panelPower"; panelPower.Name = "panelPower";
panelPower.Size = new Size(983, 74); panelPower.Size = new Size(983, 74);
panelPower.TabIndex = 4; panelPower.TabIndex = 4;
@@ -1229,7 +1244,7 @@ namespace GHelper
AutoScaleMode = AutoScaleMode.Dpi; AutoScaleMode = AutoScaleMode.Dpi;
AutoSize = true; AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink; AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(1013, 1431); ClientSize = new Size(1013, 1467);
Controls.Add(panelServices); Controls.Add(panelServices);
Controls.Add(panelPower); Controls.Add(panelPower);
Controls.Add(panelSettings); Controls.Add(panelSettings);
@@ -1370,5 +1385,6 @@ namespace GHelper
private PictureBox pictureHibernate; private PictureBox pictureHibernate;
private Label labelHibernateAfter; private Label labelHibernateAfter;
private NumericUpDown numericHibernateAfter; private NumericUpDown numericHibernateAfter;
private CheckBox checkGPUFix;
} }
} }

View File

@@ -322,11 +322,20 @@ namespace GHelper
pictureLog.Click += PictureLog_Click; pictureLog.Click += PictureLog_Click;
checkGPUFix.Visible = AppConfig.ContainsModel("GA402X");
checkGPUFix.Checked = AppConfig.Get("gpu_fix") != 0;
checkGPUFix.CheckedChanged += CheckGPUFix_CheckedChanged;
InitVariBright(); InitVariBright();
InitServices(); InitServices();
InitHibernate(); InitHibernate();
} }
private void CheckGPUFix_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.Set("gpu_fix", (checkGPUFix.Checked ? 1 : 0));
}
private void InitHibernate() private void InitHibernate()
{ {
try try

View File

@@ -131,6 +131,8 @@ namespace GHelper.Gpu
if (eco == 1) if (eco == 1)
{ {
/*
if (NvidiaSmi.GetDisplayActiveStatus()) if (NvidiaSmi.GetDisplayActiveStatus())
{ {
DialogResult dialogResult = MessageBox.Show(Properties.Strings.EnableOptimusText, Properties.Strings.EnableOptimusTitle, MessageBoxButtons.YesNo); DialogResult dialogResult = MessageBox.Show(Properties.Strings.EnableOptimusText, Properties.Strings.EnableOptimusTitle, MessageBoxButtons.YesNo);
@@ -140,6 +142,7 @@ namespace GHelper.Gpu
return; return;
} }
} }
*/
HardwareControl.KillGPUApps(); HardwareControl.KillGPUApps();
} }
@@ -321,7 +324,7 @@ namespace GHelper.Gpu
// https://github.com/seerge/g-helper/pull/855 // https://github.com/seerge/g-helper/pull/855
public void StandardModeFix() public void StandardModeFix()
{ {
if (!AppConfig.Is("gpu_fix")) return; // No config entry if (!AppConfig.IsGPUFix()) return; // No config entry
if (Program.acpi.DeviceGet(AsusACPI.GPUMux) == 0) return; // Ultimate mode if (Program.acpi.DeviceGet(AsusACPI.GPUMux) == 0) return; // Ultimate mode
Logger.WriteLine("Forcing Standard Mode on shutdown / hibernation"); Logger.WriteLine("Forcing Standard Mode on shutdown / hibernation");