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;
}
}
}