aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2021-11-10 15:37:49 -0300
committerGitHub <noreply@github.com>2021-11-10 15:37:49 -0300
commit611bec6e44effa90554c95ed1fe4dd4812893947 (patch)
tree679e67c1253f88c3ceef9a98a6109ebede39e352 /Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs
parentbc00a251dd14f7cce4023a42bb76d23165755006 (diff)
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
Diffstat (limited to 'Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs')
-rw-r--r--Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs31
1 files changed, 31 insertions, 0 deletions
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);
+ }
+ }
+}