diff --git a/Universal x86 Tuning Utility Handheld/Scripts/SMU Backend/RyzenSmu.cs b/Universal x86 Tuning Utility Handheld/Scripts/SMU Backend/RyzenSmu.cs index ab317b5..4298cad 100644 --- a/Universal x86 Tuning Utility Handheld/Scripts/SMU Backend/RyzenSmu.cs +++ b/Universal x86 Tuning Utility Handheld/Scripts/SMU Backend/RyzenSmu.cs @@ -32,6 +32,7 @@ public static void setAddresses() if (Family.FAM == Family.RyzenFamily.Mendocino || Family.FAM == Family.RyzenFamily.Rembrandt || Family.FAM == Family.RyzenFamily.PhoenixPoint || Family.FAM == Family.RyzenFamily.StrixPoint) Socket_FT6_FP7_FP8(); if (Family.FAM == Family.RyzenFamily.Raphael || Family.FAM == Family.RyzenFamily.DragonRange || Family.FAM == Family.RyzenFamily.GraniteRidge || Family.FAM == Family.RyzenFamily.FireRange) Socket_AM5_V1(); + SMUCommands.RyzenAccess.Initialize(); } private static void Socket_FT5_FP5_AM4() @@ -324,7 +325,6 @@ class SMUCommands public static void applySettings(string commandName, uint value) { - RyzenAccess.Initialize(); uint[] Args = new uint[6]; Args[0] = value; @@ -346,8 +346,6 @@ public static void applySettings(string commandName, uint value) Task.WaitAll(tasks.ToArray()); } else throw new ArgumentException($"Command '{commandName}' not found"); - - RyzenAccess.Deinitialize(); } } @@ -373,12 +371,11 @@ public enum Status : int { Smu.Status.CMD_REJECTED_BUSY, "CMD Rejected Busy" } }; - Ols RyzenNbAccesss; + Ols RyzenNbAccesss = new Ols(); public Smu(bool EnableDebug) { ShowDebug = EnableDebug; - RyzenNbAccesss = new Ols(); // Check WinRing0 status switch (RyzenNbAccesss.GetDllStatus()) diff --git a/Universal x86 Tuning Utility Handheld/Services/AdaptivePresetManager.cs b/Universal x86 Tuning Utility Handheld/Services/AdaptivePresetManager.cs index f41acdc..0be7480 100644 --- a/Universal x86 Tuning Utility Handheld/Services/AdaptivePresetManager.cs +++ b/Universal x86 Tuning Utility Handheld/Services/AdaptivePresetManager.cs @@ -37,6 +37,8 @@ public class AdaptivePreset public bool _isAdaptiveiGPU { get; set; } public int _maxiGPU { get; set; } public int _miniGPU { get; set; } + + public bool _isAdaptivePerf { get; set; } } public class AdaptivePresetManager diff --git a/Universal x86 Tuning Utility Handheld/Universal x86 Tuning Utility Handheld.csproj b/Universal x86 Tuning Utility Handheld/Universal x86 Tuning Utility Handheld.csproj index 853a1d6..70a8518 100644 --- a/Universal x86 Tuning Utility Handheld/Universal x86 Tuning Utility Handheld.csproj +++ b/Universal x86 Tuning Utility Handheld/Universal x86 Tuning Utility Handheld.csproj @@ -37,7 +37,7 @@ - + diff --git a/Universal x86 Tuning Utility Handheld/ViewModels/AdvancedViewModel.cs b/Universal x86 Tuning Utility Handheld/ViewModels/AdvancedViewModel.cs index 2909c81..32cad43 100644 --- a/Universal x86 Tuning Utility Handheld/ViewModels/AdvancedViewModel.cs +++ b/Universal x86 Tuning Utility Handheld/ViewModels/AdvancedViewModel.cs @@ -95,6 +95,9 @@ public partial class AdvancedViewModel : ObservableObject, INavigationAware [ObservableProperty] private bool _isAdaptiveTDP = false; + [ObservableProperty] + private bool _isAdaptivePerf = false; + [ObservableProperty] private int _maxTemp = 95; diff --git a/Universal x86 Tuning Utility Handheld/Views/Pages/AdvancedPage.xaml b/Universal x86 Tuning Utility Handheld/Views/Pages/AdvancedPage.xaml index 4573716..32cdf02 100644 --- a/Universal x86 Tuning Utility Handheld/Views/Pages/AdvancedPage.xaml +++ b/Universal x86 Tuning Utility Handheld/Views/Pages/AdvancedPage.xaml @@ -7,7 +7,7 @@ xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" Title="AdvancedPage" d:DataContext="{d:DesignInstance local:AdvancedPage, IsDesignTimeCreatable=False}" - d:DesignHeight="2000" + d:DesignHeight="3000" d:DesignWidth="520" d:Background="{DynamicResource ApplicationBackgroundBrush}" Foreground="{DynamicResource TextFillColorPrimaryBrush}" @@ -25,7 +25,11 @@ - + + + + + @@ -91,7 +95,7 @@ FontWeight="Medium" Text="{Binding ViewModel.TempLimit,StringFormat={}{0}°C}" /> - + @@ -143,7 +147,7 @@ FontWeight="Medium" Text="{Binding ViewModel.PowerLimit,StringFormat={}{0}W}" /> - + @@ -196,7 +200,7 @@ FontWeight="Medium" Text="{Binding ViewModel.MaxTemp,StringFormat={}{0}°C}" /> - + @@ -220,12 +224,12 @@ FontWeight="Medium" Text="{Binding ViewModel.MaxTDP,StringFormat={}{0}W}" /> - + - @@ -241,7 +245,7 @@ Text="Adjust based on RTSS FPS limits" /> - + @@ -369,7 +373,7 @@ FontWeight="Medium" Text="{Binding ViewModel.UnderVolt}" /> - + @@ -473,7 +477,7 @@ FontWeight="Medium" Text="{Binding ViewModel.CoreCount,StringFormat={}{0} Cores}" /> - + diff --git a/Universal x86 Tuning Utility Handheld/Views/Pages/AdvancedPage.xaml.cs b/Universal x86 Tuning Utility Handheld/Views/Pages/AdvancedPage.xaml.cs index 42bdec2..6fc4179 100644 --- a/Universal x86 Tuning Utility Handheld/Views/Pages/AdvancedPage.xaml.cs +++ b/Universal x86 Tuning Utility Handheld/Views/Pages/AdvancedPage.xaml.cs @@ -370,6 +370,7 @@ private void savePreset() _maxTemp = ViewModel.MaxTemp, _maxiGPU = ViewModel.MaxiGPU, _miniGPU = ViewModel.MiniGPU, + _isAdaptivePerf = ViewModel.IsAdaptivePerf, }; adaptivePresetManager.SavePreset(Global.presetName, preset); } diff --git a/Universal x86 Tuning Utility Handheld/Views/Windows/MainWindow.xaml.cs b/Universal x86 Tuning Utility Handheld/Views/Windows/MainWindow.xaml.cs index 6b6485d..57ddb8c 100644 --- a/Universal x86 Tuning Utility Handheld/Views/Windows/MainWindow.xaml.cs +++ b/Universal x86 Tuning Utility Handheld/Views/Windows/MainWindow.xaml.cs @@ -2,6 +2,7 @@ using LibreHardwareMonitor.Hardware.Cpu; using Microsoft.Win32; using RTSSSharedMemoryNET; +using RyzenSmu; using SharpDX.XInput; using System; using System.Collections.Generic; @@ -983,7 +984,7 @@ private void UpdatePreset(string presetName) AdViewModel.MaxTemp = myPreset._maxTemp; AdViewModel.MiniGPU = myPreset._miniGPU; AdViewModel.MaxiGPU = myPreset._maxiGPU; - + AdViewModel.IsAdaptivePerf = myPreset._isAdaptivePerf; } if (AdViewModel.CoreCount > AdViewModel.MaxCoreCount) AdViewModel.CoreCount = MaxCoreCount; @@ -1015,6 +1016,7 @@ private void UiWindow_IsVisibleChanged(object sender, DependencyPropertyChangedE private void UiWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e) { + if(Family.TYPE != Family.ProcessorType.Intel) SMUCommands.RyzenAccess.Deinitialize(); if (Fan_Control.isSupported) Fan_Control.disableFanControl(); } @@ -1022,7 +1024,7 @@ private void UiWindow_Closing(object sender, System.ComponentModel.CancelEventAr int runs = 0; static Queue fpsQueue = new Queue(); - static int maxQueueSize = 12; + static int maxQueueSize = 8; static bool tdp, iGPU; static int minCPUClock = 2150; static int fps = 0; @@ -1030,6 +1032,7 @@ private void UiWindow_Closing(object sender, System.ComponentModel.CancelEventAr static int minTDP = -1; static double averageFps = 0; int numRuns = 0; + bool updateAdaptive = true; private async void Sensor_Tick(object sender, EventArgs e) { try @@ -1038,7 +1041,7 @@ private async void Sensor_Tick(object sender, EventArgs e) iGPU = AdViewModel.IsAdaptiveiGPU; coreCount = AdViewModel.MaxCoreCount; - if (tdp) + if (tdp && AdViewModel.IsAdaptivePerf) { await Task.Run(() => { @@ -1066,8 +1069,6 @@ private async void Sensor_Tick(object sender, EventArgs e) //MessageBox.Show(CPUClock.ToString()); //CPUPower = (int)GetSensor.getCPUInfo(SensorType.Power, "Package"); - - }); @@ -1148,24 +1149,36 @@ private async void Sensor_Tick(object sender, EventArgs e) else if (AdViewModel.MaxTDP >= 10) minTDP = AdViewModel.MaxTDP - 5; if (minTDP < 5) minTDP = 5; - if (exists && AdViewModel.IsAdaptiveFPS == true || exists && AdViewModel.IsFPS == true) + if (updateAdaptive || fps < fpsLimit) { - if (averageFps != fpsLimit) CPUControl.UpdatePowerLimit(CPUTemp, CPULoad, AdViewModel.MaxTDP, minTDP, AdViewModel.MaxTemp, fps, fpsLimit); + if (exists && AdViewModel.IsAdaptiveFPS == true || exists && AdViewModel.IsFPS == true) + { + if (averageFps != fpsLimit) CPUControl.UpdatePowerLimit(CPUTemp, CPULoad, AdViewModel.MaxTDP, minTDP, AdViewModel.MaxTemp, fps, fpsLimit); - if (iGPU) iGPUControl.UpdateiGPUClock(AdViewModel.MaxiGPU, AdViewModel.MiniGPU, AdViewModel.MaxTemp, CPUPower, CPUTemp, GPUClock, GPULoad, GPUMemClock, CPUClock, newMinCPUClock, fps, fpsLimit); - } - else - { - CPUControl.UpdatePowerLimit(CPUTemp, CPULoad, AdViewModel.MaxTDP, minTDP, AdViewModel.MaxTemp); + if (iGPU) iGPUControl.UpdateiGPUClock(AdViewModel.MaxiGPU, AdViewModel.MiniGPU, AdViewModel.MaxTemp, CPUPower, CPUTemp, GPUClock, GPULoad, GPUMemClock, CPUClock, newMinCPUClock, fps, fpsLimit); + } + else + { + CPUControl.UpdatePowerLimit(CPUTemp, CPULoad, AdViewModel.MaxTDP, minTDP, AdViewModel.MaxTemp); - if (iGPU) iGPUControl.UpdateiGPUClock(AdViewModel.MaxiGPU, AdViewModel.MiniGPU, AdViewModel.MaxTemp, CPUPower, CPUTemp, GPUClock, GPULoad, GPUMemClock, CPUClock, newMinCPUClock); + if (iGPU) iGPUControl.UpdateiGPUClock(AdViewModel.MaxiGPU, AdViewModel.MiniGPU, AdViewModel.MaxTemp, CPUPower, CPUTemp, GPUClock, GPULoad, GPUMemClock, CPUClock, newMinCPUClock); + } + + updateAdaptive = false; } + else updateAdaptive = true; } else { - CPUControl.UpdatePowerLimit(CPUTemp, CPULoad, AdViewModel.MaxTDP, minTDP, AdViewModel.MaxTemp); + if (updateAdaptive) + { + CPUControl.UpdatePowerLimit(CPUTemp, CPULoad, AdViewModel.MaxTDP, minTDP, AdViewModel.MaxTemp); - if (iGPU) iGPUControl.UpdateiGPUClock(AdViewModel.MaxiGPU, AdViewModel.MiniGPU, AdViewModel.MaxTemp, CPUPower, CPUTemp, GPUClock, GPULoad, GPUMemClock, CPUClock, newMinCPUClock); + if (iGPU) iGPUControl.UpdateiGPUClock(AdViewModel.MaxiGPU, AdViewModel.MiniGPU, AdViewModel.MaxTemp, CPUPower, CPUTemp, GPUClock, GPULoad, GPUMemClock, CPUClock, newMinCPUClock); + + updateAdaptive = false; + } + else updateAdaptive = true; } } }