aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs')
-rw-r--r--src/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs b/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs
new file mode 100644
index 00000000..a647d37e
--- /dev/null
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/ThreadedWindow.cs
@@ -0,0 +1,42 @@
+using Ryujinx.Graphics.GAL.Multithreading.Commands.Window;
+using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Resources;
+using System;
+
+namespace Ryujinx.Graphics.GAL.Multithreading
+{
+ public class ThreadedWindow : IWindow
+ {
+ private ThreadedRenderer _renderer;
+ private IRenderer _impl;
+
+ public ThreadedWindow(ThreadedRenderer renderer, IRenderer impl)
+ {
+ _renderer = renderer;
+ _impl = impl;
+ }
+
+ public void Present(ITexture texture, ImageCrop crop, Action swapBuffersCallback)
+ {
+ // If there's already a frame in the pipeline, wait for it to be presented first.
+ // This is a multithread rate limit - we can't be more than one frame behind the command queue.
+
+ _renderer.WaitForFrame();
+ _renderer.New<WindowPresentCommand>().Set(new TableRef<ThreadedTexture>(_renderer, texture as ThreadedTexture), crop, new TableRef<Action>(_renderer, swapBuffersCallback));
+ _renderer.QueueCommand();
+ }
+
+ public void SetSize(int width, int height)
+ {
+ _impl.Window.SetSize(width, height);
+ }
+
+ public void ChangeVSyncMode(bool vsyncEnabled) { }
+
+ public void SetAntiAliasing(AntiAliasing effect) { }
+
+ public void SetScalingFilter(ScalingFilter type) { }
+
+ public void SetScalingFilterLevel(float level) { }
+ }
+}