diff options
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 |