aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/UI/Controls
diff options
context:
space:
mode:
authorAc_K <Acoustik666@gmail.com>2023-01-16 01:14:01 +0100
committerGitHub <noreply@github.com>2023-01-16 01:14:01 +0100
commit784cf9d5947d60d146e518a7913220155362396b (patch)
treed03aa9efe879f48c64ee96a8d7432e3026c35819 /Ryujinx.Ava/UI/Controls
parent64263c5218271f2e217aa593b4e47a59fe097835 (diff)
Ava UI: `Renderer` refactoring (#4297)
* Ava UI: `Renderer` refactoring * Fix Vulkan CreateSurface
Diffstat (limited to 'Ryujinx.Ava/UI/Controls')
-rw-r--r--Ryujinx.Ava/UI/Controls/RendererHost.axaml11
-rw-r--r--Ryujinx.Ava/UI/Controls/RendererHost.axaml.cs127
2 files changed, 0 insertions, 138 deletions
diff --git a/Ryujinx.Ava/UI/Controls/RendererHost.axaml b/Ryujinx.Ava/UI/Controls/RendererHost.axaml
deleted file mode 100644
index 1cc557f0..00000000
--- a/Ryujinx.Ava/UI/Controls/RendererHost.axaml
+++ /dev/null
@@ -1,11 +0,0 @@
-<UserControl
- xmlns="https://github.com/avaloniaui"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d"
- d:DesignWidth="800"
- d:DesignHeight="450"
- x:Class="Ryujinx.Ava.UI.Controls.RendererHost"
- Focusable="True">
-</UserControl>
diff --git a/Ryujinx.Ava/UI/Controls/RendererHost.axaml.cs b/Ryujinx.Ava/UI/Controls/RendererHost.axaml.cs
deleted file mode 100644
index 97058fa4..00000000
--- a/Ryujinx.Ava/UI/Controls/RendererHost.axaml.cs
+++ /dev/null
@@ -1,127 +0,0 @@
-using Avalonia;
-using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
-using Ryujinx.Ava.UI.Helpers;
-using Ryujinx.Common.Configuration;
-using Silk.NET.Vulkan;
-using SPB.Graphics.OpenGL;
-using SPB.Windowing;
-using System;
-
-namespace Ryujinx.Ava.UI.Controls
-{
- public partial class RendererHost : UserControl, IDisposable
- {
- private readonly GraphicsDebugLevel _graphicsDebugLevel;
- private EmbeddedWindow _currentWindow;
-
- public bool IsVulkan { get; private set; }
-
- public RendererHost(GraphicsDebugLevel graphicsDebugLevel)
- {
- _graphicsDebugLevel = graphicsDebugLevel;
- InitializeComponent();
- }
-
- public RendererHost()
- {
- InitializeComponent();
- }
-
- public void CreateOpenGL()
- {
- Dispose();
-
- _currentWindow = new OpenGLEmbeddedWindow(3, 3, _graphicsDebugLevel);
- Initialize();
-
- IsVulkan = false;
- }
-
- private void Initialize()
- {
- _currentWindow.WindowCreated += CurrentWindow_WindowCreated;
- _currentWindow.SizeChanged += CurrentWindow_SizeChanged;
- Content = _currentWindow;
- }
-
- public void CreateVulkan()
- {
- Dispose();
-
- _currentWindow = new VulkanEmbeddedWindow();
- Initialize();
-
- IsVulkan = true;
- }
-
- public OpenGLContextBase GetContext()
- {
- if (_currentWindow is OpenGLEmbeddedWindow openGlEmbeddedWindow)
- {
- return openGlEmbeddedWindow.Context;
- }
-
- return null;
- }
-
- protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
- {
- base.OnDetachedFromVisualTree(e);
-
- Dispose();
- }
-
- private void CurrentWindow_SizeChanged(object sender, Size e)
- {
- SizeChanged?.Invoke(sender, e);
- }
-
- private void CurrentWindow_WindowCreated(object sender, IntPtr e)
- {
- RendererInitialized?.Invoke(this, EventArgs.Empty);
- }
-
- public void MakeCurrent()
- {
- if (_currentWindow is OpenGLEmbeddedWindow openGlEmbeddedWindow)
- {
- openGlEmbeddedWindow.MakeCurrent();
- }
- }
-
- public void MakeCurrent(SwappableNativeWindowBase window)
- {
- if (_currentWindow is OpenGLEmbeddedWindow openGlEmbeddedWindow)
- {
- openGlEmbeddedWindow.MakeCurrent(window);
- }
- }
-
- public void SwapBuffers()
- {
- if (_currentWindow is OpenGLEmbeddedWindow openGlEmbeddedWindow)
- {
- openGlEmbeddedWindow.SwapBuffers();
- }
- }
-
- public event EventHandler<EventArgs> RendererInitialized;
- public event Action<object, Size> SizeChanged;
- public void Dispose()
- {
- if (_currentWindow != null)
- {
- _currentWindow.WindowCreated -= CurrentWindow_WindowCreated;
- _currentWindow.SizeChanged -= CurrentWindow_SizeChanged;
- }
- }
-
- public SurfaceKHR CreateVulkanSurface(Instance instance, Vk api)
- {
- return (_currentWindow is VulkanEmbeddedWindow vulkanEmbeddedWindow)
- ? vulkanEmbeddedWindow.CreateSurface(instance)
- : default;
- }
- }
-} \ No newline at end of file