AutoTDP tweaks

This commit is contained in:
Serge
2024-04-15 21:23:52 +02:00
parent d952d8859c
commit a3474d38a5

View File

@@ -5,7 +5,6 @@ using GHelper.Mode;
using GHelper.USB;
using HidSharp;
using System.Text;
using System.Windows.Forms.DataVisualization.Charting;
namespace GHelper.Ally
{
@@ -43,10 +42,14 @@ namespace GHelper.Ally
static ControllerMode _applyMode = ControllerMode.Mouse;
static int _autoCount = 0;
static int _upCount = 0;
static int _downCount = 0;
static int _capCount = 0;
static int tdpMin = 6;
const int tdpLimit = 6;
static int tdpMin = tdpLimit;
static int tdpMax = 25;
static int tdpCurrent = -1;
@@ -296,7 +299,7 @@ namespace GHelper.Ally
if (timer is null)
{
timer = new System.Timers.Timer(500);
timer = new System.Timers.Timer(200);
timer.Elapsed += Timer_Elapsed;
Logger.WriteLine("Ally timer");
}
@@ -333,7 +336,7 @@ namespace GHelper.Ally
Program.acpi.DeviceSet(AsusACPI.PPT_APUA0, tdp, log);
Program.acpi.DeviceSet(AsusACPI.PPT_APUA3, tdp, null);
Program.acpi.DeviceSet(AsusACPI.PPT_APUC1, (int)(tdp * 1.2), null);
Program.acpi.DeviceSet(AsusACPI.PPT_APUC1, tdp, null);
tdpCurrent = tdp;
}
@@ -342,28 +345,49 @@ namespace GHelper.Ally
{
float fps = amdControl.GetFPS();
if (autoTDP)
if (autoTDP && fpsLimit > 0 && fpsLimit < 120)
{
if (fpsLimit < 0 || fpsLimit > 120) fpsLimit = 120;
//Debug.Write(fps + " ");
if (fps < fpsLimit - 5) _upCount++;
if (fps > fpsLimit - 1) _downCount++;
if (fps <= 0) tdpMin = 6;
if (fps < fpsLimit * 0.8) _upCount++;
else _upCount = 0;
if (_upCount >= 2)
if (fps >= fpsLimit * 0.9) _downCount++;
else _downCount = 0;
if (fps >= fpsLimit * 0.95) _capCount++;
else _capCount = 0;
if (fps <= 0 && tdpMin > tdpLimit)
{
if (fps > 0 && fps < fpsLimit - 10) tdpMin = GetTDP() + 1;
_downCount = 0;
_upCount = 0;
SetTDP(GetTDP() + 1, $"AutoTDP+ {fps}");
tdpMin = tdpLimit;
}
if (_downCount >= 4)
var tdp = GetTDP();
if (_upCount >= 1)
{
SetTDP(GetTDP() - 1, $"AutoTDP- {fps}");
_upCount = 0;
if (fps > 0 && fps < fpsLimit * 0.7)
{
tdpMin = tdp + 1;
}
_downCount = 0;
_upCount--;
SetTDP(tdp + 1, $"AutoTDP+ {fps}");
}
if (_downCount >= 10)
{
SetTDP(tdp - 1, $"AutoTDP- {fps}");
_upCount = 0;
_downCount--;
}
if (_capCount >= 10 && tdp <= tdpMin + 1 && tdpMin > tdpLimit)
{
tdpMin--;
}
}
ControllerMode newMode = (fps > 0) ? ControllerMode.Gamepad : ControllerMode.Mouse;
@@ -373,7 +397,7 @@ namespace GHelper.Ally
if (_mode != ControllerMode.Auto) return;
if (_autoCount >= 4)
if (_autoCount >= 10)
{
_autoCount = 0;
ApplyMode(newMode);