aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/AppHost.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Ava/AppHost.cs')
-rw-r--r--Ryujinx.Ava/AppHost.cs34
1 files changed, 28 insertions, 6 deletions
diff --git a/Ryujinx.Ava/AppHost.cs b/Ryujinx.Ava/AppHost.cs
index 22c4ab5e..bd9c808e 100644
--- a/Ryujinx.Ava/AppHost.cs
+++ b/Ryujinx.Ava/AppHost.cs
@@ -1,5 +1,6 @@
using ARMeilleure.Translation;
using ARMeilleure.Translation.PTC;
+using Avalonia;
using Avalonia.Input;
using Avalonia.Threading;
using LibHac.Tools.FsSystem;
@@ -13,6 +14,7 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Input;
using Ryujinx.Ava.Ui.Controls;
using Ryujinx.Ava.Ui.Models;
+using Ryujinx.Ava.Ui.Vulkan;
using Ryujinx.Ava.Ui.Windows;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
@@ -22,6 +24,7 @@ using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.GAL.Multithreading;
using Ryujinx.Graphics.Gpu;
using Ryujinx.Graphics.OpenGL;
+using Ryujinx.Graphics.Vulkan;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS;
using Ryujinx.HLE.HOS.Services.Account.Acc;
@@ -366,6 +369,7 @@ namespace Ryujinx.Ava
ConfigurationState.Instance.System.IgnoreMissingServices.Event -= UpdateIgnoreMissingServicesState;
ConfigurationState.Instance.Graphics.AspectRatio.Event -= UpdateAspectRatioState;
ConfigurationState.Instance.System.EnableDockedMode.Event -= UpdateDockedModeState;
+ ConfigurationState.Instance.System.AudioVolume.Event -= UpdateAudioVolumeState;
_gpuCancellationTokenSource.Cancel();
_gpuCancellationTokenSource.Dispose();
@@ -587,7 +591,23 @@ namespace Ryujinx.Ava
{
VirtualFileSystem.ReloadKeySet();
- IRenderer renderer = new Renderer();
+ IRenderer renderer;
+
+ if (Program.UseVulkan)
+ {
+ var vulkan = AvaloniaLocator.Current.GetService<VulkanPlatformInterface>();
+ renderer = new VulkanRenderer(vulkan.Instance.InternalHandle,
+ vulkan.Device.InternalHandle,
+ vulkan.PhysicalDevice.InternalHandle,
+ vulkan.Device.Queue.InternalHandle,
+ vulkan.PhysicalDevice.QueueFamilyIndex,
+ vulkan.Device.Lock);
+ }
+ else
+ {
+ renderer = new OpenGLRenderer();
+ }
+
IHardwareDeviceDriver deviceDriver = new DummyHardwareDeviceDriver();
BackendThreading threadingMode = ConfigurationState.Instance.Graphics.BackendThreading;
@@ -795,9 +815,12 @@ namespace Ryujinx.Ava
_renderer.ScreenCaptured += Renderer_ScreenCaptured;
- (_renderer as Renderer).InitializeBackgroundContext(SPBOpenGLContext.CreateBackgroundContext(Renderer.GameContext));
+ if (!Program.UseVulkan)
+ {
+ (_renderer as OpenGLRenderer).InitializeBackgroundContext(SPBOpenGLContext.CreateBackgroundContext((Renderer as OpenGLRendererControl).GameContext));
- Renderer.MakeCurrent();
+ Renderer.MakeCurrent();
+ }
Device.Gpu.Renderer.Initialize(_glLogLevel);
@@ -856,16 +879,15 @@ namespace Ryujinx.Ava
dockedMode += $" ({scale}x)";
}
- string vendor = _renderer is Renderer renderer ? renderer.GpuVendor : "";
-
StatusUpdatedEvent?.Invoke(this, new StatusUpdatedEventArgs(
Device.EnableDeviceVsync,
Device.GetVolume(),
+ Program.UseVulkan ? "Vulkan" : "OpenGL",
dockedMode,
ConfigurationState.Instance.Graphics.AspectRatio.Value.ToText(),
LocaleManager.Instance["Game"] + $": {Device.Statistics.GetGameFrameRate():00.00} FPS ({Device.Statistics.GetGameFrameTime():00.00} ms)",
$"FIFO: {Device.Statistics.GetFifoPercent():00.00} %",
- $"GPU: {vendor}"));
+ $"GPU: {_renderer.GetHardwareInfo().GpuVendor}"));
Renderer.Present(image);
}