diff options
author | Ac_K <Acoustik666@gmail.com> | 2023-01-16 01:14:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-16 01:14:01 +0100 |
commit | 784cf9d5947d60d146e518a7913220155362396b (patch) | |
tree | d03aa9efe879f48c64ee96a8d7432e3026c35819 /Ryujinx.Ava/UI/Renderer/EmbeddedWindowVulkan.cs | |
parent | 64263c5218271f2e217aa593b4e47a59fe097835 (diff) |
Ava UI: `Renderer` refactoring (#4297)1.1.563
* Ava UI: `Renderer` refactoring
* Fix Vulkan CreateSurface
Diffstat (limited to 'Ryujinx.Ava/UI/Renderer/EmbeddedWindowVulkan.cs')
-rw-r--r-- | Ryujinx.Ava/UI/Renderer/EmbeddedWindowVulkan.cs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Ryujinx.Ava/UI/Renderer/EmbeddedWindowVulkan.cs b/Ryujinx.Ava/UI/Renderer/EmbeddedWindowVulkan.cs new file mode 100644 index 00000000..0b3eb9e3 --- /dev/null +++ b/Ryujinx.Ava/UI/Renderer/EmbeddedWindowVulkan.cs @@ -0,0 +1,42 @@ +using Silk.NET.Vulkan; +using SPB.Graphics.Vulkan; +using SPB.Platform.Metal; +using SPB.Platform.Win32; +using SPB.Platform.X11; +using SPB.Windowing; +using System; + +namespace Ryujinx.Ava.UI.Renderer +{ + public class EmbeddedWindowVulkan : EmbeddedWindow + { + public SurfaceKHR CreateSurface(Instance instance) + { + NativeWindowBase nativeWindowBase; + + if (OperatingSystem.IsWindows()) + { + nativeWindowBase = new SimpleWin32Window(new NativeHandle(WindowHandle)); + } + else if (OperatingSystem.IsLinux()) + { + nativeWindowBase = new SimpleX11Window(new NativeHandle(X11Display), new NativeHandle(WindowHandle)); + } + else if (OperatingSystem.IsMacOS()) + { + nativeWindowBase = new SimpleMetalWindow(new NativeHandle(NsView), new NativeHandle(MetalLayer)); + } + else + { + throw new PlatformNotSupportedException(); + } + + return new SurfaceKHR((ulong?)VulkanHelper.CreateWindowSurface(instance.Handle, nativeWindowBase)); + } + + public SurfaceKHR CreateSurface(Instance instance, Vk api) + { + return CreateSurface(instance); + } + } +}
\ No newline at end of file |