aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ryujinx.HLE/PerformanceStatistics.cs29
-rw-r--r--Ryujinx.Headless.SDL2/WindowBase.cs2
-rw-r--r--Ryujinx/Ui/RendererWidgetBase.cs2
3 files changed, 16 insertions, 17 deletions
diff --git a/Ryujinx.HLE/PerformanceStatistics.cs b/Ryujinx.HLE/PerformanceStatistics.cs
index b254356c..95fc2abe 100644
--- a/Ryujinx.HLE/PerformanceStatistics.cs
+++ b/Ryujinx.HLE/PerformanceStatistics.cs
@@ -5,11 +5,10 @@ namespace Ryujinx.HLE
{
public class PerformanceStatistics
{
- private const double FrameRateWeight = 0.5;
- private const int FrameTypeGame = 0;
- private const int PercentTypeFifo = 0;
+ private const int FrameTypeGame = 0;
+ private const int PercentTypeFifo = 0;
- private double[] _averageFrameRate;
+ private double[] _frameRate;
private double[] _accumulatedFrameTime;
private double[] _previousFrameTime;
@@ -30,7 +29,7 @@ namespace Ryujinx.HLE
public PerformanceStatistics()
{
- _averageFrameRate = new double[1];
+ _frameRate = new double[1];
_accumulatedFrameTime = new double[1];
_previousFrameTime = new double[1];
@@ -45,7 +44,7 @@ namespace Ryujinx.HLE
_frameLock = new object[] { new object() };
_percentLock = new object[] { new object() };
- _resetTimer = new Timer(1000);
+ _resetTimer = new Timer(750);
_resetTimer.Elapsed += ResetTimerElapsed;
_resetTimer.AutoReset = true;
@@ -57,11 +56,11 @@ namespace Ryujinx.HLE
private void ResetTimerElapsed(object sender, ElapsedEventArgs e)
{
- CalculateAverageFrameRate(FrameTypeGame);
+ CalculateFrameRate(FrameTypeGame);
CalculateAveragePercent(PercentTypeFifo);
}
- private void CalculateAverageFrameRate(int frameType)
+ private void CalculateFrameRate(int frameType)
{
double frameRate = 0;
@@ -72,7 +71,7 @@ namespace Ryujinx.HLE
frameRate = _framesRendered[frameType] / _accumulatedFrameTime[frameType];
}
- _averageFrameRate[frameType] = LinearInterpolate(_averageFrameRate[frameType], frameRate);
+ _frameRate[frameType] = frameRate;
_framesRendered[frameType] = 0;
_accumulatedFrameTime[frameType] = 0;
}
@@ -97,11 +96,6 @@ namespace Ryujinx.HLE
}
}
- private static double LinearInterpolate(double lhs, double rhs)
- {
- return lhs * (1.0 - FrameRateWeight) + rhs * FrameRateWeight;
- }
-
public void RecordGameFrameTime()
{
RecordFrameTime(FrameTypeGame);
@@ -157,12 +151,17 @@ namespace Ryujinx.HLE
public double GetGameFrameRate()
{
- return _averageFrameRate[FrameTypeGame];
+ return _frameRate[FrameTypeGame];
}
public double GetFifoPercent()
{
return _averagePercent[PercentTypeFifo];
}
+
+ public double GetGameFrameTime()
+ {
+ return 1000 / _frameRate[FrameTypeGame];
+ }
}
} \ No newline at end of file
diff --git a/Ryujinx.Headless.SDL2/WindowBase.cs b/Ryujinx.Headless.SDL2/WindowBase.cs
index 6297e64e..858b0801 100644
--- a/Ryujinx.Headless.SDL2/WindowBase.cs
+++ b/Ryujinx.Headless.SDL2/WindowBase.cs
@@ -198,7 +198,7 @@ namespace Ryujinx.Headless.SDL2
Device.EnableDeviceVsync,
dockedMode,
Device.Configuration.AspectRatio.ToText(),
- $"Game: {Device.Statistics.GetGameFrameRate():00.00} FPS",
+ $"Game: {Device.Statistics.GetGameFrameRate():00.00} FPS ({Device.Statistics.GetGameFrameTime():00.00} ms)",
$"FIFO: {Device.Statistics.GetFifoPercent():0.00} %",
$"GPU: {_gpuVendorName}"));
diff --git a/Ryujinx/Ui/RendererWidgetBase.cs b/Ryujinx/Ui/RendererWidgetBase.cs
index 2ddd44dc..c25e2163 100644
--- a/Ryujinx/Ui/RendererWidgetBase.cs
+++ b/Ryujinx/Ui/RendererWidgetBase.cs
@@ -427,7 +427,7 @@ namespace Ryujinx.Ui
Device.EnableDeviceVsync,
dockedMode,
ConfigurationState.Instance.Graphics.AspectRatio.Value.ToText(),
- $"Game: {Device.Statistics.GetGameFrameRate():00.00} FPS",
+ $"Game: {Device.Statistics.GetGameFrameRate():00.00} FPS ({Device.Statistics.GetGameFrameTime():00.00} ms)",
$"FIFO: {Device.Statistics.GetFifoPercent():0.00} %",
$"GPU: {_gpuVendorName}"));