Bladeren bron

Adjustments to framerate metric and addition of frametime (#2638)

* Adjust framerate data and add frametime

* Update PerformanceStatistics.cs

* Revert deletions of average framerate

* Update Ryujinx.csproj

* Remove separate GTK column

* Increase FPS precision

* general cleanup

* even generaler cleanup

* fix dumb

* Remove legacy code

* Update PerformanceStatistics.cs

* Update PerformanceStatistics.cs
MutantAura 4 jaren geleden
bovenliggende
commit
843401635a
3 gewijzigde bestanden met toevoegingen van 16 en 17 verwijderingen
  1. 14 15
      Ryujinx.HLE/PerformanceStatistics.cs
  2. 1 1
      Ryujinx.Headless.SDL2/WindowBase.cs
  3. 1 1
      Ryujinx/Ui/RendererWidgetBase.cs

+ 14 - 15
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];
+        }
     }
 }

+ 1 - 1
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}"));
 

+ 1 - 1
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}"));