Migrate RenderDoc to Kenji-NX

This commit is contained in:
KeatonTheBot
2026-09-13 14:27:26 -05:00
parent 20868546b0
commit ab7176e6fc
3 changed files with 55 additions and 56 deletions
@@ -2157,53 +2157,7 @@ namespace Ryujinx.Ava.UI.ViewModels
OnPropertyChanged(nameof(ShowEndCaptureButton));
}
}
public static RelayCommand<MainWindowViewModel> StartRenderDocCapture { get; } =
Commands.CreateConditional<MainWindowViewModel>(vm => RenderDoc.IsAvailable && !vm.ShowLoadProgress,
viewModel =>
{
if (!RenderDoc.IsFrameCapturing)
{
if (viewModel.AppHost.RendererHost
.EmbeddedWindow.StartRenderDocCapture(viewModel.AppHost.Device))
{
Logger.Info?.Print(LogClass.Application, "Starting RenderDoc capture.");
}
}
viewModel.RenderDocIsCapturing = RenderDoc.IsFrameCapturing;
});
public static RelayCommand<MainWindowViewModel> EndRenderDocCapture { get; } =
Commands.CreateConditional<MainWindowViewModel>(vm => RenderDoc.IsAvailable && !vm.ShowLoadProgress,
viewModel =>
{
if (RenderDoc.IsFrameCapturing)
{
if (viewModel.AppHost.RendererHost.EmbeddedWindow.EndRenderDocCapture())
{
Logger.Info?.Print(LogClass.Application, "Ended RenderDoc capture.");
}
}
viewModel.RenderDocIsCapturing = RenderDoc.IsFrameCapturing;
});
public static RelayCommand<MainWindowViewModel> DiscardRenderDocCapture { get; } =
Commands.CreateConditional<MainWindowViewModel>(vm => RenderDoc.IsAvailable && !vm.ShowLoadProgress,
viewModel =>
{
if (RenderDoc.IsFrameCapturing)
{
if (viewModel.AppHost.RendererHost.EmbeddedWindow.DiscardRenderDocCapture())
{
Logger.Info?.Print(LogClass.Application, "Discarded RenderDoc capture.");
}
}
viewModel.RenderDocIsCapturing = RenderDoc.IsFrameCapturing;
});
#endregion
}
}
@@ -6,9 +6,6 @@
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
mc:Ignorable="d"
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls"
xmlns:common="clr-namespace:Ryujinx.Common;assembly=Ryujinx.Common"
xmlns:renderDocApi="clr-namespace:Ryujinx.Graphics.RenderDocApi;assembly=Ryujinx.Graphics.RenderDocApi"
x:DataType="viewModels:MainWindowViewModel"
x:Class="Ryujinx.Ava.UI.Views.Main.MainMenuBarView">
<Design.DataContext>
@@ -232,23 +229,23 @@
IsEnabled="{Binding IsGameRunning}" />
<Separator IsVisible="{Binding RenderDocIsAvailable}" />
<MenuItem
Click="StartRenderDocCapture_Click"
IsVisible="{Binding ShowStartCaptureButton}"
Command="{Binding StartRenderDocCapture}"
CommandParameter="{Binding}"
Header="{locale:Locale RenderDoc_MenuBarActions_StartCapture}"
Header="{locale:Locale MenuBarActions_StartCapture}"
IsEnabled="{Binding IsGameRunning}" />
<MenuItem
Click="EndRenderDocCapture_Click"
IsVisible="{Binding ShowEndCaptureButton}"
Command="{Binding EndRenderDocCapture}"
CommandParameter="{Binding}"
Header="{locale:Locale RenderDoc_MenuBarActions_EndCapture}"
Header="{locale:Locale MenuBarActions_EndCapture}"
IsEnabled="{Binding IsGameRunning}" />
<MenuItem
Click="DiscardRenderDocCapture_Click"
IsVisible="{Binding ShowEndCaptureButton}"
Command="{Binding DiscardRenderDocCapture}"
CommandParameter="{Binding}"
Header="{locale:Locale RenderDoc_MenuBarActions_DiscardCapture}"
ToolTip.Tip="{locale:Locale RenderDoc_MenuBarActions_DiscardCapture_ToolTip}"
Header="{locale:Locale MenuBarActions_DiscardCapture}"
ToolTip.Tip="{locale:Locale MenuBarActions_DiscardCapture_ToolTip}"
IsEnabled="{Binding IsGameRunning}" />
</MenuItem>
<MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarTools}">
@@ -9,7 +9,9 @@ using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Common;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
using Ryujinx.Graphics.RenderDocApi;
using Ryujinx.HLE.HOS.Services.Nfc.AmiiboDecryption;
using Ryujinx.Modules;
using Ryujinx.UI.App.Common;
@@ -266,6 +268,52 @@ namespace Ryujinx.Ava.UI.Views.Main
}
}
public void StartRenderDocCapture_Click(object sender, RoutedEventArgs args)
{
MainWindowViewModel viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;
if (!RenderDoc.IsFrameCapturing && RenderDoc.IsAvailable && viewModel is not { ShowLoadProgress: true })
{
if (viewModel != null && viewModel.AppHost.RendererHost
.EmbeddedWindow.StartRenderDocCapture(viewModel.AppHost.Device))
{
Logger.Info?.Print(LogClass.Application, "Starting RenderDoc capture.");
}
}
viewModel?.RenderDocIsCapturing = RenderDoc.IsFrameCapturing;
}
public void EndRenderDocCapture_Click(object sender, RoutedEventArgs args)
{
MainWindowViewModel viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;
if (RenderDoc.IsFrameCapturing && RenderDoc.IsAvailable && viewModel is not { ShowLoadProgress: true })
{
if (viewModel != null && viewModel.AppHost.RendererHost.EmbeddedWindow.EndRenderDocCapture())
{
Logger.Info?.Print(LogClass.Application, "Ended RenderDoc capture.");
}
}
viewModel?.RenderDocIsCapturing = RenderDoc.IsFrameCapturing;
}
public void DiscardRenderDocCapture_Click(object sender, RoutedEventArgs args)
{
MainWindowViewModel viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;
if (RenderDoc.IsFrameCapturing && RenderDoc.IsAvailable && viewModel is not { ShowLoadProgress: true })
{
if (viewModel != null && viewModel.AppHost.RendererHost.EmbeddedWindow.DiscardRenderDocCapture())
{
Logger.Info?.Print(LogClass.Application, "Discarded RenderDoc capture.");
}
}
viewModel?.RenderDocIsCapturing = RenderDoc.IsFrameCapturing;
}
public async void CheckForUpdates(object sender, RoutedEventArgs e)
{
if (Updater.CanUpdate(true))