From 611bec6e44effa90554c95ed1fe4dd4812893947 Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
Date: Wed, 10 Nov 2021 15:37:49 -0300
Subject: Implement DrawTexture functionality (#2747)

* Implement DrawTexture functionality

* Non-NVIDIA support

* Disable some features that should not affect draw texture (slow path)

* Remove space from shader source

* Match 2D engine names

* Fix resolution scale and add missing XML docs

* Disable transform feedback for draw texture fallback
---
 .../Multithreading/Commands/DrawTextureCommand.cs  | 31 ++++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs

(limited to 'Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs')

diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs
new file mode 100644
index 00000000..41a852bb
--- /dev/null
+++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs
@@ -0,0 +1,31 @@
+using Ryujinx.Graphics.GAL.Multithreading.Model;
+using Ryujinx.Graphics.GAL.Multithreading.Resources;
+
+namespace Ryujinx.Graphics.GAL.Multithreading.Commands
+{
+    struct DrawTextureCommand : IGALCommand
+    {
+        public CommandType CommandType => CommandType.DrawTexture;
+        private TableRef<ITexture> _texture;
+        private TableRef<ISampler> _sampler;
+        private Extents2DF _srcRegion;
+        private Extents2DF _dstRegion;
+
+        public void Set(TableRef<ITexture> texture, TableRef<ISampler> sampler, Extents2DF srcRegion, Extents2DF dstRegion)
+        {
+            _texture = texture;
+            _sampler = sampler;
+            _srcRegion = srcRegion;
+            _dstRegion = dstRegion;
+        }
+
+        public static void Run(ref DrawTextureCommand command, ThreadedRenderer threaded, IRenderer renderer)
+        {
+            renderer.Pipeline.DrawTexture(
+                command._texture.GetAs<ThreadedTexture>(threaded)?.Base,
+                command._sampler.GetAs<ThreadedSampler>(threaded)?.Base,
+                command._srcRegion,
+                command._dstRegion);
+        }
+    }
+}
-- 
cgit v1.2.3-70-g09d2