diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index f087c54e..be136bd6 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -65,6 +65,7 @@ public class AsusACPI public const uint GPUXG = 0x00090019; public const uint GPUMux = 0x00090016; + public const uint GPUMuxVivo = 0x00090026; public const uint BatteryLimit = 0x00120057; public const uint ScreenOverdrive = 0x00050019; diff --git a/app/Gpu/GPUModeControl.cs b/app/Gpu/GPUModeControl.cs index 7eea41bc..6dcfb83e 100644 --- a/app/Gpu/GPUModeControl.cs +++ b/app/Gpu/GPUModeControl.cs @@ -24,9 +24,13 @@ namespace GHelper.Gpu int eco = Program.acpi.DeviceGet(AsusACPI.GPUEco); int mux = Program.acpi.DeviceGet(AsusACPI.GPUMux); + if (mux < 0) mux = Program.acpi.DeviceGet(AsusACPI.GPUMuxVivo); + Logger.WriteLine("Eco flag : " + eco); Logger.WriteLine("Mux flag : " + mux); + settings.VisualiseGPUButtons(eco >= 0, mux >= 0); + if (mux == 0) { gpuMode = AsusACPI.GPUModeUltimate; @@ -38,9 +42,6 @@ namespace GHelper.Gpu else gpuMode = AsusACPI.GPUModeStandard; - // Ultimate mode not supported - if (mux != 1) settings.HideUltimateMode(); - // GPU mode not supported if (eco < 0 && mux < 0) { @@ -73,12 +74,15 @@ namespace GHelper.Gpu var restart = false; var changed = false; + int status; + if (CurrentGPU == AsusACPI.GPUModeUltimate) { DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertUltimateOff, Properties.Strings.AlertUltimateTitle, MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { - Program.acpi.DeviceSet(AsusACPI.GPUMux, 1, "GPUMux"); + status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 1, "GPUMux"); + if (status != 1) Program.acpi.DeviceSet(AsusACPI.GPUMuxVivo, 1, "GPUMuxVivo"); restart = true; changed = true; } @@ -93,7 +97,8 @@ namespace GHelper.Gpu Program.acpi.SetGPUEco(0); Thread.Sleep(100); } - Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux"); + status = Program.acpi.DeviceSet(AsusACPI.GPUMux, 0, "GPUMux"); + if (status != 1) Program.acpi.DeviceSet(AsusACPI.GPUMuxVivo, 0, "GPUMuxVivo"); restart = true; changed = true; } diff --git a/app/Settings.cs b/app/Settings.cs index 4f2f745f..bad49cd6 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -1025,13 +1025,26 @@ namespace GHelper } - public void HideUltimateMode() + public void VisualiseGPUButtons(bool eco = true, bool ultimate = true) { - tableGPU.Controls.Remove(buttonUltimate); - tablePerf.ColumnCount = 0; - tableGPU.ColumnCount = 0; - tableScreen.ColumnCount = 0; - menuUltimate.Visible = false; + if (!eco) + { + menuEco.Visible = buttonEco.Visible = false; + menuOptimized.Visible = buttonOptimized.Visible = false; + buttonStopGPU.Visible = true; + tableGPU.ColumnCount = 3; + tableScreen.ColumnCount = 3; + } else + { + buttonStopGPU.Visible = false; + } + + if (!ultimate) + { + menuUltimate.Visible = buttonUltimate.Visible = false; + tableGPU.ColumnCount = 3; + tableScreen.ColumnCount = 3; + } } public void HideGPUModes(bool gpuExists) @@ -1042,15 +1055,17 @@ namespace GHelper buttonStandard.Visible = false; buttonUltimate.Visible = false; buttonOptimized.Visible = false; - buttonStopGPU.Visible = true; + tableGPU.ColumnCount = 0; + SetContextMenu(); panelGPU.Visible = gpuExists; } + public void LockGPUModes(string text = null) { Invoke(delegate