From 4a0e9d2e416c29aa33ab66a00d282b11a73951a8 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Wed, 13 Dec 2023 17:16:44 +0100 Subject: [PATCH] Separated PL1/PL2 and SPL/SPPT https://github.com/seerge/g-helper/issues/1729 --- app/AsusACPI.cs | 1 + app/Fans.Designer.cs | 127 ++++++++++++++++++++++++++++++---------- app/Fans.cs | 31 ++++++++-- app/Mode/ModeControl.cs | 12 +++- app/Mode/Modes.cs | 2 +- 5 files changed, 134 insertions(+), 39 deletions(-) diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index b603672b..3db160d8 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -536,6 +536,7 @@ public class AsusACPI public bool IsAllAmdPPT() { + //return false; return DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0; } diff --git a/app/Fans.Designer.cs b/app/Fans.Designer.cs index f7c0ce60..315367a4 100644 --- a/app/Fans.Designer.cs +++ b/app/Fans.Designer.cs @@ -31,14 +31,14 @@ namespace GHelper /// 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 chartArea4 = new ChartArea(); - Title title4 = new Title(); + ChartArea chartArea17 = new ChartArea(); + Title title17 = new Title(); + ChartArea chartArea18 = new ChartArea(); + Title title18 = new Title(); + ChartArea chartArea19 = new ChartArea(); + Title title19 = new Title(); + ChartArea chartArea20 = new ChartArea(); + Title title20 = new Title(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans)); panelFans = new Panel(); labelTip = new Label(); @@ -141,6 +141,10 @@ namespace GHelper buttonAdvanced = new RButton(); buttonGPU = new RButton(); buttonCPU = new RButton(); + panelA3 = new Panel(); + labelA3 = new Label(); + labelLeftA3 = new Label(); + trackA3 = new TrackBar(); panelFans.SuspendLayout(); tableFanCharts.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit(); @@ -195,6 +199,8 @@ namespace GHelper ((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit(); panelNav.SuspendLayout(); tableNav.SuspendLayout(); + panelA3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)trackA3).BeginInit(); SuspendLayout(); // // panelFans @@ -251,8 +257,8 @@ namespace GHelper // // chartGPU // - chartArea1.Name = "ChartArea1"; - chartGPU.ChartAreas.Add(chartArea1); + chartArea17.Name = "ChartArea1"; + chartGPU.ChartAreas.Add(chartArea17); chartGPU.Dock = DockStyle.Fill; chartGPU.Location = new Point(12, 493); chartGPU.Margin = new Padding(2, 10, 2, 10); @@ -260,13 +266,13 @@ namespace GHelper chartGPU.Size = new Size(782, 463); chartGPU.TabIndex = 17; chartGPU.Text = "chartGPU"; - title1.Name = "Title1"; - chartGPU.Titles.Add(title1); + title17.Name = "Title1"; + chartGPU.Titles.Add(title17); // // chartCPU // - chartArea2.Name = "ChartArea1"; - chartCPU.ChartAreas.Add(chartArea2); + chartArea18.Name = "ChartArea1"; + chartCPU.ChartAreas.Add(chartArea18); chartCPU.Dock = DockStyle.Fill; chartCPU.Location = new Point(12, 10); chartCPU.Margin = new Padding(2, 10, 2, 10); @@ -274,13 +280,13 @@ namespace GHelper chartCPU.Size = new Size(782, 463); chartCPU.TabIndex = 14; chartCPU.Text = "chartCPU"; - title2.Name = "Title1"; - chartCPU.Titles.Add(title2); + title18.Name = "Title1"; + chartCPU.Titles.Add(title18); // // chartXGM // - chartArea3.Name = "ChartAreaXGM"; - chartXGM.ChartAreas.Add(chartArea3); + chartArea19.Name = "ChartAreaXGM"; + chartXGM.ChartAreas.Add(chartArea19); chartXGM.Dock = DockStyle.Fill; chartXGM.Location = new Point(12, 1459); chartXGM.Margin = new Padding(2, 10, 2, 10); @@ -288,14 +294,14 @@ namespace GHelper chartXGM.Size = new Size(782, 463); chartXGM.TabIndex = 14; chartXGM.Text = "chartXGM"; - title3.Name = "Title4"; - chartXGM.Titles.Add(title3); + title19.Name = "Title4"; + chartXGM.Titles.Add(title19); chartXGM.Visible = false; // // chartMid // - chartArea4.Name = "ChartArea3"; - chartMid.ChartAreas.Add(chartArea4); + chartArea20.Name = "ChartArea3"; + chartMid.ChartAreas.Add(chartArea20); chartMid.Dock = DockStyle.Fill; chartMid.Location = new Point(12, 976); chartMid.Margin = new Padding(2, 10, 2, 10); @@ -303,8 +309,8 @@ namespace GHelper chartMid.Size = new Size(782, 463); chartMid.TabIndex = 14; chartMid.Text = "chartMid"; - title4.Name = "Title3"; - chartMid.Titles.Add(title4); + title20.Name = "Title3"; + chartMid.Titles.Add(title20); chartMid.Visible = false; // // panelTitleFans @@ -523,7 +529,7 @@ namespace GHelper panelAdvanced.Controls.Add(panelTemperature); panelAdvanced.Controls.Add(panelTitleTemp); panelAdvanced.Dock = DockStyle.Top; - panelAdvanced.Location = new Point(10, 1520); + panelAdvanced.Location = new Point(10, 1644); panelAdvanced.Name = "panelAdvanced"; panelAdvanced.Size = new Size(520, 888); panelAdvanced.TabIndex = 14; @@ -814,6 +820,7 @@ namespace GHelper panelPower.Controls.Add(panelApplyPower); panelPower.Controls.Add(panelB0); panelPower.Controls.Add(panelC1); + panelPower.Controls.Add(panelA3); panelPower.Controls.Add(panelA0); panelPower.Controls.Add(panelTitleCPU); panelPower.Controls.Add(panelBoost); @@ -824,7 +831,7 @@ namespace GHelper panelPower.Location = new Point(10, 764); panelPower.Margin = new Padding(4); panelPower.Name = "panelPower"; - panelPower.Size = new Size(520, 756); + panelPower.Size = new Size(520, 880); panelPower.TabIndex = 43; // // panelApplyPower @@ -832,7 +839,7 @@ namespace GHelper panelApplyPower.AutoSize = true; panelApplyPower.Controls.Add(checkApplyPower); panelApplyPower.Dock = DockStyle.Top; - panelApplyPower.Location = new Point(0, 680); + panelApplyPower.Location = new Point(0, 804); panelApplyPower.Name = "panelApplyPower"; panelApplyPower.Padding = new Padding(15); panelApplyPower.Size = new Size(520, 76); @@ -859,7 +866,7 @@ namespace GHelper panelB0.Controls.Add(labelLeftB0); panelB0.Controls.Add(trackB0); panelB0.Dock = DockStyle.Top; - panelB0.Location = new Point(0, 556); + panelB0.Location = new Point(0, 680); panelB0.Margin = new Padding(4); panelB0.MaximumSize = new Size(0, 124); panelB0.Name = "panelB0"; @@ -908,7 +915,7 @@ namespace GHelper panelC1.Controls.Add(labelLeftC1); panelC1.Controls.Add(trackC1); panelC1.Dock = DockStyle.Top; - panelC1.Location = new Point(0, 432); + panelC1.Location = new Point(0, 556); panelC1.Margin = new Padding(4); panelC1.MaximumSize = new Size(0, 124); panelC1.Name = "panelC1"; @@ -972,7 +979,7 @@ namespace GHelper labelA0.Name = "labelA0"; labelA0.Size = new Size(116, 32); labelA0.TabIndex = 12; - labelA0.Text = "SPPT"; + labelA0.Text = "SPL"; labelA0.TextAlign = ContentAlignment.TopRight; // // labelLeftA0 @@ -981,9 +988,9 @@ namespace GHelper labelLeftA0.Location = new Point(10, 10); labelLeftA0.Margin = new Padding(4, 0, 4, 0); labelLeftA0.Name = "labelLeftA0"; - labelLeftA0.Size = new Size(66, 32); + labelLeftA0.Size = new Size(51, 32); labelLeftA0.TabIndex = 11; - labelLeftA0.Text = "SPPT"; + labelLeftA0.Text = "SPL"; // // trackA0 // @@ -1527,6 +1534,55 @@ namespace GHelper buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText; buttonCPU.UseVisualStyleBackColor = false; // + // panelA3 + // + panelA3.AutoSize = true; + panelA3.AutoSizeMode = AutoSizeMode.GrowAndShrink; + panelA3.Controls.Add(labelA3); + panelA3.Controls.Add(labelLeftA3); + panelA3.Controls.Add(trackA3); + panelA3.Dock = DockStyle.Top; + panelA3.Location = new Point(0, 432); + panelA3.Margin = new Padding(4); + panelA3.MaximumSize = new Size(0, 124); + panelA3.Name = "panelA3"; + panelA3.Size = new Size(520, 124); + panelA3.TabIndex = 51; + // + // labelA3 + // + labelA3.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); + labelA3.Location = new Point(396, 10); + labelA3.Margin = new Padding(4, 0, 4, 0); + labelA3.Name = "labelA3"; + labelA3.Size = new Size(116, 32); + labelA3.TabIndex = 12; + labelA3.Text = "SPPT"; + labelA3.TextAlign = ContentAlignment.TopRight; + // + // labelLeftA3 + // + labelLeftA3.AutoSize = true; + labelLeftA3.Location = new Point(10, 10); + labelLeftA3.Margin = new Padding(4, 0, 4, 0); + labelLeftA3.Name = "labelLeftA3"; + labelLeftA3.Size = new Size(66, 32); + labelLeftA3.TabIndex = 11; + labelLeftA3.Text = "SPPT"; + // + // trackA3 + // + trackA3.Location = new Point(6, 48); + trackA3.Margin = new Padding(4, 2, 4, 2); + trackA3.Maximum = 180; + trackA3.Minimum = 10; + trackA3.Name = "trackA3"; + trackA3.Size = new Size(508, 90); + trackA3.TabIndex = 10; + trackA3.TickFrequency = 5; + trackA3.TickStyle = TickStyle.TopLeft; + trackA3.Value = 125; + // // Fans // AutoScaleDimensions = new SizeF(192F, 192F); @@ -1623,6 +1679,9 @@ namespace GHelper ((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit(); panelNav.ResumeLayout(false); tableNav.ResumeLayout(false); + panelA3.ResumeLayout(false); + panelA3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)trackA3).EndInit(); ResumeLayout(false); PerformLayout(); } @@ -1730,5 +1789,9 @@ namespace GHelper private TrackBar trackGPUClockLimit; private Label labelGPUClockLimitTitle; private RButton buttonCalibrate; + private Panel panelA3; + private Label labelA3; + private Label labelLeftA3; + private TrackBar trackA3; } } \ No newline at end of file diff --git a/app/Fans.cs b/app/Fans.cs index 1d1e1f95..fec0faf1 100644 --- a/app/Fans.cs +++ b/app/Fans.cs @@ -106,6 +106,9 @@ namespace GHelper trackA0.Maximum = AsusACPI.MaxTotal; trackA0.Minimum = AsusACPI.MinTotal; + trackA3.Maximum = AsusACPI.MaxTotal; + trackA3.Minimum = AsusACPI.MinTotal; + trackB0.Maximum = AsusACPI.MaxCPU; trackB0.Minimum = AsusACPI.MinCPU; @@ -115,10 +118,12 @@ namespace GHelper trackC1.Scroll += TrackPower_Scroll; trackB0.Scroll += TrackPower_Scroll; trackA0.Scroll += TrackPower_Scroll; + trackA3.Scroll += TrackPower_Scroll; trackC1.MouseUp += TrackPower_MouseUp; trackB0.MouseUp += TrackPower_MouseUp; trackA0.MouseUp += TrackPower_MouseUp; + trackA3.MouseUp += TrackPower_MouseUp; checkApplyFans.Click += CheckApplyFans_Click; checkApplyPower.Click += CheckApplyPower_Click; @@ -800,19 +805,28 @@ namespace GHelper labelLeftA0.Text = "Platform (CPU + GPU)"; labelLeftB0.Text = "CPU"; panelC1.Visible = false; + panelA3.Visible = false; } else { if (RyzenControl.IsAMD()) - labelLeftA0.Text = "CPU Slow (SPL + sPPT)"; + { + labelLeftA0.Text = "CPU Sustained (SPL)"; + labelLeftA3.Text = "CPU Slow (sPPT)"; + labelLeftC1.Text = "CPU Fast (fPPT)"; + panelC1.Visible = modeC1; + } else - labelLeftA0.Text = "CPU (PL1 + PL2)"; + { + labelLeftA0.Text = "CPU Slow (PL1)"; + labelLeftA3.Text = "CPU Fast (PL2)"; + panelC1.Visible = false; + } - labelLeftC1.Text = "CPU Fast (fPPT)"; - panelC1.Visible = modeC1; } int limit_total; + int limit_slow; int limit_cpu; int limit_fast; @@ -821,12 +835,14 @@ namespace GHelper if (changed) { limit_total = trackA0.Value; + limit_slow = trackA3.Value; limit_cpu = trackB0.Value; limit_fast = trackC1.Value; } else { limit_total = AppConfig.GetMode("limit_total"); + limit_slow = AppConfig.GetMode("limit_slow"); limit_cpu = AppConfig.GetMode("limit_cpu"); limit_fast = AppConfig.GetMode("limit_fast"); } @@ -840,21 +856,28 @@ namespace GHelper if (limit_cpu < AsusACPI.MinCPU) limit_cpu = AsusACPI.MinCPU; if (limit_cpu > limit_total) limit_cpu = limit_total; + if (limit_slow < 0) limit_slow = limit_total; + if (limit_slow > AsusACPI.MaxTotal) limit_slow = AsusACPI.MaxTotal; + if (limit_slow < AsusACPI.MinTotal) limit_slow = AsusACPI.MinTotal; + if (limit_fast < 0) limit_fast = AsusACPI.DefaultTotal; if (limit_fast > AsusACPI.MaxTotal) limit_fast = AsusACPI.MaxTotal; if (limit_fast < AsusACPI.MinTotal) limit_fast = AsusACPI.MinTotal; trackA0.Value = limit_total; + trackA3.Value = limit_slow; trackB0.Value = limit_cpu; trackC1.Value = limit_fast; checkApplyPower.Checked = apply; labelA0.Text = trackA0.Value.ToString() + "W"; + labelA3.Text = trackA3.Value.ToString() + "W"; labelB0.Text = trackB0.Value.ToString() + "W"; labelC1.Text = trackC1.Value.ToString() + "W"; AppConfig.SetMode("limit_total", limit_total); + AppConfig.SetMode("limit_slow", limit_slow); AppConfig.SetMode("limit_cpu", limit_cpu); AppConfig.SetMode("limit_fast", limit_fast); diff --git a/app/Mode/ModeControl.cs b/app/Mode/ModeControl.cs index 94902184..0f84a20a 100644 --- a/app/Mode/ModeControl.cs +++ b/app/Mode/ModeControl.cs @@ -239,10 +239,15 @@ namespace GHelper.Mode public void SetPower(bool launchAsAdmin = false) { + bool allAMD = Program.acpi.IsAllAmdPPT(); + int limit_total = AppConfig.GetMode("limit_total"); int limit_cpu = AppConfig.GetMode("limit_cpu"); + int limit_slow = AppConfig.GetMode("limit_slow"); int limit_fast = AppConfig.GetMode("limit_fast"); + if (limit_slow < 0 || allAMD) limit_slow = limit_total; + if (limit_total > AsusACPI.MaxTotal) return; if (limit_total < AsusACPI.MinTotal) return; @@ -252,11 +257,14 @@ namespace GHelper.Mode if (limit_fast > AsusACPI.MaxTotal) return; if (limit_fast < AsusACPI.MinTotal) return; - // SPL + SPPT togeher in one slider + if (limit_slow > AsusACPI.MaxTotal) return; + if (limit_slow < AsusACPI.MinTotal) return; + + // SPL and SPPT if (Program.acpi.DeviceGet(AsusACPI.PPT_TotalA0) >= 0) { Program.acpi.DeviceSet(AsusACPI.PPT_TotalA0, limit_total, "PowerLimit A0"); - Program.acpi.DeviceSet(AsusACPI.PPT_APUA3, limit_total, "PowerLimit A3"); + Program.acpi.DeviceSet(AsusACPI.PPT_APUA3, limit_slow, "PowerLimit A3"); customPower = limit_total; } else if (RyzenControl.IsAMD()) diff --git a/app/Mode/Modes.cs b/app/Mode/Modes.cs index 90e6be59..9a8694e2 100644 --- a/app/Mode/Modes.cs +++ b/app/Mode/Modes.cs @@ -39,9 +39,9 @@ "mode_base", "mode_name", "limit_total", + "limit_slow", "limit_fast", "limit_cpu", - "limit_total", "fan_profile_cpu", "fan_profile_gpu", "fan_profile_mid",