mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Debugger - Add FPS and other metrics to performance tab as well
Debugger - Add RGB.NET delta to rendering tab
This commit is contained in:
parent
1e92d19c2f
commit
5b9d3e783a
@ -208,6 +208,7 @@ namespace Artemis.Core.Services
|
|||||||
);
|
);
|
||||||
_logger.Information("Startup arguments: {args}", StartupArguments);
|
_logger.Information("Startup arguments: {args}", StartupArguments);
|
||||||
_logger.Information("Elevated permissions: {perms}", IsElevated);
|
_logger.Information("Elevated permissions: {perms}", IsElevated);
|
||||||
|
_logger.Information("Stopwatch high resolution: {perms}", Stopwatch.IsHighResolution);
|
||||||
|
|
||||||
ApplyLoggingLevel();
|
ApplyLoggingLevel();
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
d:DataContext="{d:DesignInstance local:PerformanceDebugViewModel}">
|
d:DataContext="{d:DesignInstance local:PerformanceDebugViewModel}">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
@ -19,7 +20,18 @@
|
|||||||
If you are having performance issues, below you can find out which plugin might be the culprit.
|
If you are having performance issues, below you can find out which plugin might be the culprit.
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
|
|
||||||
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
<TextBlock Grid.Row="1" HorizontalAlignment="Right" Margin="0,5,5,0">
|
||||||
|
<Run Text="FPS: " />
|
||||||
|
<Run FontWeight="Bold" Text="{Binding CurrentFps}" />
|
||||||
|
<Run Text="at" />
|
||||||
|
<Run Text="{Binding RenderWidth}" /><Run Text="x" /><Run Text="{Binding RenderHeight}" />
|
||||||
|
<Run Text="- Renderer:"></Run>
|
||||||
|
<Run Text="{Binding Renderer}"></Run>
|
||||||
|
<Run Text="- RGB.NET delta:"></Run>
|
||||||
|
<Run Text="{Binding Delta}"></Run>
|
||||||
|
</TextBlock>
|
||||||
|
|
||||||
|
<ScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||||
<ItemsControl ItemsSource="{Binding Items}" Margin="0 0 10 0">
|
<ItemsControl ItemsSource="{Binding Items}" Margin="0 0 10 0">
|
||||||
<ItemsControl.ItemTemplate>
|
<ItemsControl.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
|
|||||||
@ -1,7 +1,13 @@
|
|||||||
using System.Linq;
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
using Artemis.Core;
|
using Artemis.Core;
|
||||||
using Artemis.Core.Services;
|
using Artemis.Core.Services;
|
||||||
|
using SkiaSharp;
|
||||||
|
using SkiaSharp.Views.WPF;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Settings.Debug.Tabs.Performance
|
namespace Artemis.UI.Screens.Settings.Debug.Tabs.Performance
|
||||||
@ -10,14 +16,56 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs.Performance
|
|||||||
{
|
{
|
||||||
private readonly IPluginManagementService _pluginManagementService;
|
private readonly IPluginManagementService _pluginManagementService;
|
||||||
private readonly Timer _updateTimer;
|
private readonly Timer _updateTimer;
|
||||||
|
private readonly ICoreService _coreService;
|
||||||
|
private readonly Timer _fpsTimer;
|
||||||
|
private double _currentFps;
|
||||||
|
private int _renderWidth;
|
||||||
|
private int _renderHeight;
|
||||||
|
private string _renderer;
|
||||||
|
private int _frames;
|
||||||
|
private double _delta;
|
||||||
|
private double _lastDelta;
|
||||||
|
|
||||||
public PerformanceDebugViewModel(IPluginManagementService pluginManagementService)
|
public PerformanceDebugViewModel(ICoreService coreService, IPluginManagementService pluginManagementService)
|
||||||
{
|
{
|
||||||
|
_coreService = coreService;
|
||||||
_pluginManagementService = pluginManagementService;
|
_pluginManagementService = pluginManagementService;
|
||||||
_updateTimer = new Timer(500);
|
_updateTimer = new Timer(500);
|
||||||
|
_fpsTimer = new Timer(1000);
|
||||||
|
|
||||||
DisplayName = "PERFORMANCE";
|
DisplayName = "PERFORMANCE";
|
||||||
_updateTimer.Elapsed += UpdateTimerOnElapsed;
|
_updateTimer.Elapsed += UpdateTimerOnElapsed;
|
||||||
|
_fpsTimer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public double CurrentFps
|
||||||
|
{
|
||||||
|
get => _currentFps;
|
||||||
|
set => SetAndNotify(ref _currentFps, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int RenderWidth
|
||||||
|
{
|
||||||
|
get => _renderWidth;
|
||||||
|
set => SetAndNotify(ref _renderWidth, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int RenderHeight
|
||||||
|
{
|
||||||
|
get => _renderHeight;
|
||||||
|
set => SetAndNotify(ref _renderHeight, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Renderer
|
||||||
|
{
|
||||||
|
get => _renderer;
|
||||||
|
set => SetAndNotify(ref _renderer, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double Delta
|
||||||
|
{
|
||||||
|
get => _delta;
|
||||||
|
set => SetAndNotify(ref _delta, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateTimerOnElapsed(object sender, ElapsedEventArgs e)
|
private void UpdateTimerOnElapsed(object sender, ElapsedEventArgs e)
|
||||||
@ -57,6 +105,10 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs.Performance
|
|||||||
_pluginManagementService.PluginDisabled += PluginToggled;
|
_pluginManagementService.PluginDisabled += PluginToggled;
|
||||||
_pluginManagementService.PluginFeatureEnabled += FeatureToggled;
|
_pluginManagementService.PluginFeatureEnabled += FeatureToggled;
|
||||||
_pluginManagementService.PluginFeatureDisabled += FeatureToggled;
|
_pluginManagementService.PluginFeatureDisabled += FeatureToggled;
|
||||||
|
_coreService.FrameRendering += CoreServiceOnFrameRendering;
|
||||||
|
_coreService.FrameRendered += CoreServiceOnFrameRendered;
|
||||||
|
_fpsTimer.Elapsed += FpsTimerOnElapsed;
|
||||||
|
|
||||||
base.OnActivate();
|
base.OnActivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,10 +120,43 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs.Performance
|
|||||||
_pluginManagementService.PluginDisabled -= PluginToggled;
|
_pluginManagementService.PluginDisabled -= PluginToggled;
|
||||||
_pluginManagementService.PluginFeatureEnabled -= FeatureToggled;
|
_pluginManagementService.PluginFeatureEnabled -= FeatureToggled;
|
||||||
_pluginManagementService.PluginFeatureDisabled -= FeatureToggled;
|
_pluginManagementService.PluginFeatureDisabled -= FeatureToggled;
|
||||||
|
_coreService.FrameRendering -= CoreServiceOnFrameRendering;
|
||||||
|
_coreService.FrameRendered -= CoreServiceOnFrameRendered;
|
||||||
|
_fpsTimer.Elapsed -= FpsTimerOnElapsed;
|
||||||
|
|
||||||
Items.Clear();
|
Items.Clear();
|
||||||
base.OnDeactivate();
|
base.OnDeactivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void OnClose()
|
||||||
|
{
|
||||||
|
_fpsTimer.Dispose();
|
||||||
|
base.OnClose();
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private void FpsTimerOnElapsed(object sender, ElapsedEventArgs e)
|
||||||
|
{
|
||||||
|
Delta = _lastDelta;
|
||||||
|
CurrentFps = _frames;
|
||||||
|
Renderer = Constants.ManagedGraphicsContext != null ? Constants.ManagedGraphicsContext.GetType().Name : "Software";
|
||||||
|
_frames = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CoreServiceOnFrameRendering(object? sender, FrameRenderingEventArgs e)
|
||||||
|
{
|
||||||
|
_lastDelta = e.DeltaTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CoreServiceOnFrameRendered(object sender, FrameRenderedEventArgs e)
|
||||||
|
{
|
||||||
|
_frames++;
|
||||||
|
|
||||||
|
SKImageInfo bitmapInfo = e.Texture.ImageInfo;
|
||||||
|
RenderHeight = bitmapInfo.Height;
|
||||||
|
RenderWidth = bitmapInfo.Width;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -36,6 +36,8 @@
|
|||||||
<Run Text="{Binding RenderWidth}" /><Run Text="x" /><Run Text="{Binding RenderHeight}" />
|
<Run Text="{Binding RenderWidth}" /><Run Text="x" /><Run Text="{Binding RenderHeight}" />
|
||||||
<Run Text="- Renderer:"></Run>
|
<Run Text="- Renderer:"></Run>
|
||||||
<Run Text="{Binding Renderer}"></Run>
|
<Run Text="{Binding Renderer}"></Run>
|
||||||
|
<Run Text="- RGB.NET delta:"></Run>
|
||||||
|
<Run Text="{Binding Delta}"></Run>
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
|
|||||||
@ -25,6 +25,8 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
|||||||
private string _frameTargetPath;
|
private string _frameTargetPath;
|
||||||
private string _renderer;
|
private string _renderer;
|
||||||
private int _frames;
|
private int _frames;
|
||||||
|
private double _delta;
|
||||||
|
private double _lastDelta;
|
||||||
|
|
||||||
public RenderDebugViewModel(ICoreService coreService)
|
public RenderDebugViewModel(ICoreService coreService)
|
||||||
{
|
{
|
||||||
@ -64,6 +66,12 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
|||||||
set => SetAndNotify(ref _renderer, value);
|
set => SetAndNotify(ref _renderer, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double Delta
|
||||||
|
{
|
||||||
|
get => _delta;
|
||||||
|
set => SetAndNotify(ref _delta, value);
|
||||||
|
}
|
||||||
|
|
||||||
public void SaveFrame()
|
public void SaveFrame()
|
||||||
{
|
{
|
||||||
VistaSaveFileDialog dialog = new VistaSaveFileDialog {Filter = "Portable network graphic (*.png)|*.png", Title = "Save render frame"};
|
VistaSaveFileDialog dialog = new VistaSaveFileDialog {Filter = "Portable network graphic (*.png)|*.png", Title = "Save render frame"};
|
||||||
@ -80,6 +88,7 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
|||||||
|
|
||||||
protected override void OnActivate()
|
protected override void OnActivate()
|
||||||
{
|
{
|
||||||
|
_coreService.FrameRendering += CoreServiceOnFrameRendering;
|
||||||
_coreService.FrameRendered += CoreServiceOnFrameRendered;
|
_coreService.FrameRendered += CoreServiceOnFrameRendered;
|
||||||
_fpsTimer.Elapsed += FpsTimerOnElapsed;
|
_fpsTimer.Elapsed += FpsTimerOnElapsed;
|
||||||
base.OnActivate();
|
base.OnActivate();
|
||||||
@ -87,6 +96,7 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
|||||||
|
|
||||||
protected override void OnDeactivate()
|
protected override void OnDeactivate()
|
||||||
{
|
{
|
||||||
|
_coreService.FrameRendering -= CoreServiceOnFrameRendering;
|
||||||
_coreService.FrameRendered -= CoreServiceOnFrameRendered;
|
_coreService.FrameRendered -= CoreServiceOnFrameRendered;
|
||||||
_fpsTimer.Elapsed -= FpsTimerOnElapsed;
|
_fpsTimer.Elapsed -= FpsTimerOnElapsed;
|
||||||
base.OnDeactivate();
|
base.OnDeactivate();
|
||||||
@ -98,6 +108,10 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
|||||||
base.OnClose();
|
base.OnClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CoreServiceOnFrameRendering(object? sender, FrameRenderingEventArgs e)
|
||||||
|
{
|
||||||
|
_lastDelta = e.DeltaTime;
|
||||||
|
}
|
||||||
|
|
||||||
private void CoreServiceOnFrameRendered(object sender, FrameRenderedEventArgs e)
|
private void CoreServiceOnFrameRendered(object sender, FrameRenderedEventArgs e)
|
||||||
{
|
{
|
||||||
@ -145,9 +159,9 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
|||||||
|
|
||||||
private void FpsTimerOnElapsed(object sender, ElapsedEventArgs e)
|
private void FpsTimerOnElapsed(object sender, ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
|
Delta = _lastDelta;
|
||||||
CurrentFps = _frames;
|
CurrentFps = _frames;
|
||||||
// Renderer = Constants.ManagedGraphicsContext != null ? Constants.ManagedGraphicsContext.GetType().Name : "Software";
|
Renderer = Constants.ManagedGraphicsContext != null ? Constants.ManagedGraphicsContext.GetType().Name : "Software";
|
||||||
Renderer = $"HighAccuracyTimers: {Stopwatch.IsHighResolution}";
|
|
||||||
_frames = 0;
|
_frames = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user