From c8f9292babd5aa6021ce1bd6a977130baebb7de3 Mon Sep 17 00:00:00 2001 From: Emmanuel Hansen Date: Tue, 16 Aug 2022 16:32:37 +0000 Subject: Avalonia - Couple fixes and improvements to vulkan (#3483) * drop split devices, rebase * add fallback to opengl if vulkan is not available * addressed review * ensure present image references are incremented and decremented when necessary * allow changing vsync for vulkan * fix screenshot on avalonia vulkan * save favorite when toggled * improve sync between popups * use separate devices for each new window * fix crash when closing window * addressed review * don't create the main window with immediate mode * change skia vk delegate to method * update vulkan throwonerror * addressed review --- Ryujinx.Ava/Program.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'Ryujinx.Ava/Program.cs') diff --git a/Ryujinx.Ava/Program.cs b/Ryujinx.Ava/Program.cs index be27e9cd..4a546747 100644 --- a/Ryujinx.Ava/Program.cs +++ b/Ryujinx.Ava/Program.cs @@ -94,7 +94,6 @@ namespace Ryujinx.Ava .With(new Ui.Vulkan.VulkanOptions() { ApplicationName = "Ryujinx.Graphics.Vulkan", - VulkanVersion = new Version(1, 2), MaxQueueCount = 2, PreferDiscreteGpu = true, PreferredDevice = !PreviewerDetached ? "" : ConfigurationState.Instance.Graphics.PreferredGpu.Value, @@ -181,6 +180,18 @@ namespace Ryujinx.Ava UseVulkan = PreviewerDetached ? ConfigurationState.Instance.Graphics.GraphicsBackend.Value == GraphicsBackend.Vulkan : false; + if (UseVulkan) + { + if (VulkanRenderer.GetPhysicalDevices().Length == 0) + { + UseVulkan = false; + + ConfigurationState.Instance.Graphics.GraphicsBackend.Value = GraphicsBackend.OpenGl; + + Logger.Warning?.PrintMsg(LogClass.Application, "A suitable Vulkan physical device is not available. Falling back to OpenGL"); + } + } + if (UseVulkan) { // With a custom gpu backend, avalonia doesn't enable dpi awareness, so the backend must handle it. This isn't so for the opengl backed, -- cgit v1.2.3